소프트웨어공학

2. 프로세스와 방법론 - 프로세스모델

HAHAKO 2023. 3. 13. 11:33

앞서 소프트웨어 개발 단계에 대해 익혔다.

그 개발 단계를 우리는 프로세스라고 한다.

또한 프로세스를 모델화 한 것이 프로세스 모델이라고 한다.

 

프로세스 : 소프트웨어 시스템을 구축하기 위하여 수행되는 작업의 단계

                  소프트웨어 개발에 대한 기술적, 관리적 이슈를 다루는 작업

 

프로세스 모델 : 프로세스들을 일반화한 모델

 

1. 폭포수(waterfall) 모델

폭포수 모델은 폭포수가 떨어지는 모습과 닮아서 이름이 폭포수 모델이다.

전통적으로 오랫동안 사용된 프로세스로, 각 단계가 다음 단계 시작 전에 끝나야 한다.

각 단계 사이에 중복이나 상호작용이 없고, 각 단계의 결과는 다음단계가 시작되기 전에 점검한다.

   → 개발지연의 가능성이 농후하다.

결과물의 정의가 중요하고, 크고 복잡한 오래 지속되는 프로젝트에 적합하다.

 

2. 프로토타이핑 모델

 

우선 프로토타입이란 요구 사항을 명확히 도출하기 위해서 만들어진 SW로 시스템을 실험적으로 만들어 사용자에게 보여주고 평가하게 하는 SW이다.

프로토타입으로 미리보기느낌으로 보여주면 요구분석과, 프로토타입개발/개선에 피드백이 가능하다.

즉 사용자와 개발자의 의사소통을 도와주는 좋은 매개체가 된다.

 

프로토타이핑 모델은 2가지 방법이 있다.

Evolutionary 프로토타이핑 : 프로토타입을 진화적으로 발전시켜서 시스템을 완성한다. 결국 프로토타입이 시스템이된다.

Throw-away 프로토타이핑 : 프로토타입은 프로토타입이고, 시스템은 시스템.

 

3. 진화적 모델

 

시스템을 나누어 릴리스 하는 방식이다.

릴리스 구성 방법에는 2가지가 있다.

점증적 방법(incremental) – 기능별로 릴리스

반복적 방법(iterative) – 릴리스 할 때마다 기능의 완성도를 높임.

 

4. V모델

 

 

V 모델은 검증을 강화하는 관점에서 폭포수 모델을 확장한 모델이다.

즉 V모델 = waterfall 모델 + Testing에 중점 인 모델이라고 볼 수 있다.

높은 신뢰도를 요구하는 SW시스템 개발에 적용한다.

단 요구 변경에 취약해 요구사항이 명확하고 요구사항 변동이 거의 없는 도메인에 이용한다.

 

5. 나선형 모델

 

나선형 모델은 점진적진화모델 + 위험분석 + alpha 인 모델이라고 볼 수 있다.

계획 → 요구분석 이후에 위험요소 및 차선책을 검토한다.

위험분석이 각 릴리즈마다 들어간다.

위험관리를 한다는 점이 특징이다. 그래서, 기술적으로 위험요소가 크거나 난이도가 높은 SW개발에 적합하다.

외부나선으로 갈 수록 위험요소가 감소된다.

실패할 수 있는 시스템의 개발에 적합하다.

 

6. Unified 프로세스

unified 프로세스는 프로세스모델을 반복하는 프로세스이다.

다만 단계별로 중요시하는 내용이 다르다.

 

① 도입(inception) : 1, 2회 정도 반복으로 도입 단계를 진행

                               간단한 유스케이스 모델과 소프트웨어 구조, 프로젝트 계획을 작성

② 정련(elaboration) : 여러 번의 반복 과정으로 이루어짐

                                   대부분의 유스케이스를 작성, 아키텍처 설계

③ 구축(construction) : 남아 있는 유스케이스에 대하여 구현하고 통합

                                     시스템을 목표 환경에 점증적으로 설치

④ 전환(transition) : 시스템을 배치, 사용자를 교육

                                베타 테스팅, 결함 수정, 기능 개선

 

* 형상 및 변경관리 : SW + 버전정보를 관리

*usecase : 사용시나리오 - 유저와 SW시스템사이의 입출력 시나리오를 usecase라고 함. 요구사항 분석에서 진행

 

unified 프로세스는 usecase를 중심으로 반복적/점진적 개발한다. 진화적모델과 유사하지만 릴리스를 출시하지는 않는다.

 

7. 애자일(Agile) 프로세스

 

애자일 프로세스는 빠른 개발을 위한 프로세스임

폭포수 프로세스의 단점을 해결, 문서보다는 소스코드에 더 큰 가치를 둠

- usecase 또는 userstory 중심적으로 개발

usecase와 usestory의 차이

- 테스트 중심 개발(Test Driven Development - TDD)

 

8. 익스트림 프로그래밍

익스트림 프로그래밍은 사용자 스토리 중심으로 개발한다.

매일 빌드와 통합을 하고, TDD를 한다.

또한 페어프로그래밍(coding하는 사람과 testing하는 사람을 분리)으로 버그를 더 쉽게 잡는다.