프로세스와 방법론
전공-소프트웨어공학

바람직한 프로세스

  • 예측 가능성predictability

    프로젝트를 완성하기 전에 프로세스의 결과를 예측할 수 있어야 한다.

  • 테스팅 및 유지보수 지원

    테스팅과 유지보수에 발생하는 비용은 다른 단계(요구분석, 설계, 코딩 등)과 비교했을 때 많은 비중을 차지한다.

    따라서 테스팅 및 유지보수를 지원해 이 과정에서 드는 노력을 낮출 수 있어야 한다.

  • 변경 지원

    개발 과정에서 변경이 발생하면, 이에 대한 피드백을 수용해야 한다.

  • 결함 제거

    오류는 개발 과정의 모든 단계에서 유입될 수 있으므로, 이를 테스팅 단계에서만 제거하려 한다면 많은 비용이 발생할 수 있다.

    따라서 오류 탐색과 수정이 모든 단계에서 지속적으로 이루어져야 한다.


프로세스 모델

특정 관점에서 나타낸 일반적인 프로세스의 유형을 프로세스 모델이라고 한다.

최근의 프로세스 모델은 점증적이고 반복적이다.

폭포수 모델Waterfall Model

폭포수 모델은 각 단계에서 엄격한 결과를 요구한다. 분석 단계에서의 요구명세서를 예시로 들 수 있다.

폭포수 모델의 장점은 다음과 같다.

  • 프로세스가 단순하다.
  • 각 단계가 명확하다.

폭포수 모델의 단점은 다음과 같다.

  • 각 단계의 전환이 어렵다.
  • 엄격한 결과를 요구하는 과정에서 시간 지연이 발생할 수 있다.
  • 결함을 발견하지 못하면 추가적인 비용이 발생할 수 있다.

폭포수 모델은 익숙하지 않은 프로젝트에는 적합하지 않으며, 변화가 적고 잘 알고 있는 분야에 적용해야 한다.

프로토타이핑 모델Prototyping Model

프로토타이핑 모델은 시제품(프로토타입)을 만들어 사용자의 요구를 반영한다.

고객의 의견을 적극적으로 수용할 수 있지만, 기대심리를 유발해 오해를 낳을 수 있다는 단점이 있다.

진화적 모델

진화적 모델은 시스템에서 핵심적인 부분을 우선적으로 개발하고, 이후 릴리스마다 점증적이고 반복적으로 기능의 완성도를 높인다.

사용자의 요구를 유연하게 반영할 수 있으며, 예상하지 못한 문제를 신속하게 해결할 수 있다.

진화적 모델은 빠른 시간 안에 시장을 형성해야 하는 등의 개발 사이클이 짧은 환경에 적합하다.

나선형 모델

나선형 모델은 소프트웨어의 기능을 나누어 점증적이고 반복적으로 개발한다.

매 단계마다 위험 관리를 수행하므로 안정적이지만, 초기 위험 분석을 잘못하면 위험 요소를 발견하지 못하고 계속 진행될 수 있으므로 주의해야 한다.

V 모델

V 모델은 폭포수 모델의 변형으로, 테스팅 단계를 통한 검증으로 폭포수 모델의 단점을 해결한다.

  • Validation (Right Product: 올바른 제품을 만들었는는가?)
  • Verification (Product Right: 제품을 올바르게 만들고 있는가?)

애자일 프로세스

  • 폭포수 모델의 단점을 해결

  • 절차와 도구 < 고객과의 소통

    잘 쓴 문서(각 단계의 결과) < 잘 실행되는 소프트웨어

  • 문서에 가치를 덜 두는 것은 굉장히 위험하며, 애자일의 목표와 멀어지는 모순이 발생할 수도 있다.


방법론

소프트웨어 프로세스의 각 작업을 어떻게 수행할지에 대해 정의한다.

구조적 방법론

분할 정복 기법(divide and conquer)을 적용한다.