0. 개발 방법론의 종류

- 구조적 방법론
- 정보공학 방법론
- 객체지향 방법론
- 컴포넌트 기반 방법론 (CBD, Component Based Design)
- 제품 계열 방법론
- 애자일 방법론
1. 구조적 방법론
정형화 된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화 하는 처리 중심의 방법론
- 쉬운 이해 및 검증이 가능한 프로그램을 생성하는 것이 목적
- 복잡한 문제를 다루기 위해 분할과 정복(Divide and Conquer) 원리를 적용
- 구조적 방법론의 절차
타당성 검토 단계 -> 계획 단계 -> 요구사항 분석 단계 -> 설계 단계 -> 구현 단계 -> 시험 단계 -> 운용/유지 보수 단계
2. 정보공학 방법론
정보 시스템의 개발을 위해 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합 및 적용하는 자료 중심의 방법론
- 정보 시스템 개발 주기를 이용하여 대규모 정보 시스템을 구축하는데 적합
- 정보공학 방법론의 절차
정보 전략 계획 수립 단계 -> 업무 영역 분석 단계 -> 업무 시스템 설계 단계 -> 업무 시스템 구축 단계
3. 객체지향 방법론
객체들을 조립해서 필요한 소프트웨어를 구현하는 방법론
- 객체지향 방법론은 구조적 기법의 문제점으로 인한 소프트웨어 위기의 해결책으로 채택
- 구성 요소에는 객체, 클래스, 메시지 등이 있음
- 기본 원칙에는 캡슐화, 정보 은닉, 추상화, 상속성, 다형성 등이 있음
- 객체지향 방법론의 절차
요구 분석 단계 -> 설계 단계 -> 구현 단계 -> 테스트 및 검증 단계 -> 인도 단계
4. 컴포넌트 기반 방법론(CBD)
기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조합하여 하나의 새로운 애플리케이션을 만드는 방법론
- 컴포넌트의 재사용이 가능하여 시간과 노력 절감 가능
- 유지 보수 비용을 최소화하고 생산성 및 품질 향상
- 컴포넌트 기반 방법론의 절차
개발 준비 단계 -> 분석 단계 -> 설계 단계 -> 구현 단계 -> 테스트 단계 -> 전개 단계 -> 인도 단계
5. 제품 계열 방법론
특정 제품에 적용하고 싶은 공통된 기능을 정의하여 개발하는 방법
- 임베디드 소프트웨어를 만드는데 적합
- 제품 계열 방법론은 영역공학과 응용공학으로 구분
-영역공학 : 영역 분석, 영역 설계, 핵심 자산을 구현하는 영역
-응용공학 : 제품 요구 분석, 제품 설계, 제품을 구현하는 영역
- 영역공학과 응용공학의 연계를 위해 제품의 요구사항, 아키텍처, 조립 생산이 필요
6. 애자일 방법론
고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발 과정을 진행하는 방법론
- 소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항에 적합
- 애자일 방법론의 대표적인 종류로는 익스트림 프로그래밍(XP), 스크럼(Scrum), 린(Lean)등이 있음
- 애자일 방법론의 절차
사용자 스토리 -> [계획 -> 개발 ->승인 테스트]반복
애자일 방법론의 특징
- 프로젝트의 요구사항은 기능 중심으로 정의
- 절차와 도구보다 개인과 소통을 중요하게 생각
- 작업 계획을 짧게 세워 요구 변화에 유연하고 신속하게 대응할 수 있음
- 소프트웨어가 잘 실행되는데 가치를 둠
- 고객과의 피드백을 중요하게 생각함
애자일 선언문
- 공정과 도구보다 개인과 상호작용
- 계획을 따르기보다 변화에 대응하기
- 포괄적인 문서보다 동작하는 소프트웨어
- 계약 협상보다 고객과의 협력
1. 익스트림 프로그래밍(XP)
- 의사소통 개선과 즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론
- 1~3주의 반복 개발 주기
- 5가지 가치와 12개의 실천항목 존재
- XP의 12가지 기본 원리
- 짝 프로그래밍(Pair Programming)
- 공통 코드 소유(Collective Ownership)
- 지속적인 통합(CI, Continuous Integration)
- 계획 세우기(Planning Process)
- 작은 릴리즈(Small Release)
- 메타포어(Metaphor)
- 간단한 디자인(Simple Design)
- 테스트 기반 개발(TDD, Test Driven Develop)
- 리팩토링(Refactoring)
- 40시간 작업(40-Hour Work)
- 고객 상주(On Site Customer)
- 코드 표준(Coding Standard)
2. 스크럼(SCRUM)
- 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론
- 백로그(Backlog) : 제품과 프로젝트에 대한 요구사항
- 스프린트(Sprint): 2~4주의 짧은 개발 기간으로 반복적 수행으로 개발품질 향상
3. 린(Lean)
- 도요타의 린 시스템 품질 기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상시킨 방법론
- 린의 7가지 원칙
낭비 제거/ 품질 내재화/ 지식 창출/ 늦은 확정/ 빠른 인도/ 사람 존중/ 전체 최적화