바람직한 프로세스
-
예측 가능성predictability
프로젝트를 완성하기 전에 프로세스의 결과를 예측할 수 있어야 한다.
-
테스팅 및 유지보수 지원
테스팅과 유지보수에 발생하는 비용은 다른 단계(요구분석, 설계, 코딩 등)과 비교했을 때 많은 비중을 차지한다.
따라서 테스팅 및 유지보수를 지원해 이 과정에서 드는 노력을 낮출 수 있어야 한다.
-
변경 지원
개발 과정에서 변경이 발생하면, 이에 대한 피드백을 수용해야 한다.
-
결함 제거
오류는 개발 과정의 모든 단계에서 유입될 수 있으므로, 이를 테스팅 단계에서만 제거하려 한다면 많은 비용이 발생할 수 있다.
따라서 오류 탐색과 수정이 모든 단계에서 지속적으로 이루어져야 한다.
프로세스 모델
특정 관점에서 나타낸 일반적인 프로세스의 유형을 프로세스 모델이라고 한다.
최근의 프로세스 모델은 점증적이고 반복적이다.
폭포수 모델Waterfall Model
폭포수 모델은 각 단계에서 엄격한 결과를 요구한다. 분석 단계에서의 요구명세서를 예시로 들 수 있다.
폭포수 모델의 장점은 다음과 같다.
- 프로세스가 단순하다.
- 각 단계가 명확하다.
폭포수 모델의 단점은 다음과 같다.
- 각 단계의 전환이 어렵다.
- 엄격한 결과를 요구하는 과정에서 시간 지연이 발생할 수 있다.
- 결함을 발견하지 못하면 추가적인 비용이 발생할 수 있다.
폭포수 모델은 익숙하지 않은 프로젝트에는 적합하지 않으며, 변화가 적고 잘 알고 있는 분야에 적용해야 한다.
프로토타이핑 모델Prototyping Model
프로토타이핑 모델은 시제품(프로토타입)을 만들어 사용자의 요구를 반영한다.
고객의 의견을 적극적으로 수용할 수 있지만, 기대심리를 유발해 오해를 낳을 수 있다는 단점이 있다.
진화적 모델
진화적 모델은 시스템에서 핵심적인 부분을 우선적으로 개발하고, 이후 릴리스마다 점증적이고 반복적으로 기능의 완성도를 높인다.
사용자의 요구를 유연하게 반영할 수 있으며, 예상하지 못한 문제를 신속하게 해결할 수 있다.
진화적 모델은 빠른 시간 안에 시장을 형성해야 하는 등의 개발 사이클이 짧은 환경에 적합하다.
나선형 모델
나선형 모델은 소프트웨어의 기능을 나누어 점증적이고 반복적으로 개발한다.
매 단계마다 위험 관리를 수행하므로 안정적이지만, 초기 위험 분석을 잘못하면 위험 요소를 발견하지 못하고 계속 진행될 수 있으므로 주의해야 한다.
V 모델
V 모델은 폭포수 모델의 변형으로, 테스팅 단계를 통한 검증으로 폭포수 모델의 단점을 해결한다.
- Validation (Right Product: 올바른 제품을 만들었는는가?)
- Verification (Product Right: 제품을 올바르게 만들고 있는가?)
애자일 프로세스
-
폭포수 모델의 단점을 해결
-
절차와 도구 < 고객과의 소통
잘 쓴 문서(각 단계의 결과) < 잘 실행되는 소프트웨어
-
문서에 가치를 덜 두는 것은 굉장히 위험하며, 애자일의 목표와 멀어지는 모순이 발생할 수도 있다.
방법론
소프트웨어 프로세스의 각 작업을 어떻게 수행할지에 대해 정의한다.
구조적 방법론
분할 정복 기법(divide and conquer)을 적용한다.