SW개발 프로세스


SW개발에서의 프로세스 : 작업(task) 순서의 집합 + 제약 조건(일정, 예산, 자원)을 포함하는 일련의 활동

    작업(task) : SW를 개발할 때 일을 수행하는 작은 단위

 

SW개발 프로세스의 목적은 전체적인 개발에 대한 가이드다.

    이전에 얻은 노하우를 전달 -> 시행착오 감소 -> 빠르게 적응

 

 

 

SW개발 프로세스 모델


SW개발 프로세스 모델은 SW개발 생명주기(SDLC, Software Development Life Cycle)를 기반으로 설명된다.

    SW개발 생명주기 : 요구사항 정의 및 분석 -> 설계 -> 코딩 -> 테스트 -> 유지보수

 

프로세스 모델은 핵심은 위의 5가지 과정 중에서 어디에 포커스를 맞추느냐이다.

SW개발을 시작하기 전 어떤 프로세스 모델을 적용할지 미리 정함으로써 얻는 이득

  1. 프로젝트가 어떤 식으로 진행될거다라는 윤곽을 그릴 수 있게해준다.
  2. 개발 진행 상황을 명확히 파악할 수 있게 된다.
  3. 각 단계별로 생성되는 문서를 포함한 산출물을 활용하여 프로젝트에 대한 검토가 쉽다.

 

프로세스 모델없이 개발하는걸 Code-and-Fix(즉흥적 SW개발)이라고 한다.

여러 명이 진행하는 프로젝트가 아닌 개인이 진행하는 간단한 프로젝트라면 프로세스 모델을 적용하는건 너무 거창하다. 개인이 가볍게 SW 만드는걸 Code-and-Fix라 보면됨.

 

SW개발 프로세스 모델의 종류

  1. 폭포수 모델
  2. V 모델
  3. 프로토타이핑 모델
  4. 나선형 모델
  5. 단계적 개발모델
  6. 일정 중심 설계 모델
  7. 진화적 출시 모델
  8. 애자일(Agile) 모델 (이 모델이 많이 쓰이는거 같던데)

 

1) 폭포수 모델

가장 오래된 프로세스 모델이다.

 

폭포수 모델은 어떤 프로젝트에 적용하면 좋을까?

    요구사항이 어느 정도 고정되어 있고 작업이 선형으로 진행되는 프로젝트(요즘은 잘 안쓰이겠지?)

 

2) V 모델

이 모델 처음봤을 때 폭포수랑 헷갈렸었다.

"결국 폭포수 모델에서 테스트 부분만 자세히 나열해 놓은거 아니야?" 라고 생각했었는데 이게 다였다.

무슨 말이냐면, 폭포수 모델에 테스트 작업을 추가 확장한게 V 모델인거다.

    폭포수 모델은 산출물에 초점을 두는 것이고,

    V 모델은 각 개발 단계를 검증하는데 초점을 두는 것이다.

 

 

3) 프로토타입 모델

프로토타입이란 말은 워낙 많이 사용되서 한 번쯤 들어봤을 거라 생각된다. 고객의 처음 요구사항에 따라 SW를 만들었는데 고객이 불만족스러워한다면 어떻게 해야할까? 요구사항이라는건 변하기 쉬운 요소이고, 고객이 자신의 요구사항에 대한 SW가 어떤 모습으로 만들어지는지 중간중간에 확인하지 못한다면 고객은 고객대로 불안하고, 개발자는 개발자대로 고객이 맘에 안들어하면 어쩌나하고 불안해할거다. 그래서 프로토타입(시제품)을 이용해 고객과 계속 조율하는 것.

 

 

다 좋은데, 문제는 프로토타입을 계속 만들어대는거도 개발자의 노력, 즉 비용인데 고객이 만족할 때까지 프로토타입을 갈아제껴야하니 고객 입장에선 비용이 점점 늘어나고, 개발자 입장에선 비용을 어떻게 산정해야하나 까다로워진다.