소프트웨어공학 (Software Engineering)

Software Process model

깡또아빠 2022. 3. 16. 01:01

소프트웨어 프로세스란, 소프트웨어 제품이 만들어지는 단계를 의미합니다. 

 

6 phase of the software development life cycle

Source: https://erbis.com/blog/6-phases-of-the-software-development-life-cycle/

 

1. 요구사항을 분석하고 = 무엇을 해야 하는지, 어떤 기능을 대상으로 해야 하는지 정의하고

2. 설계하고 = 요구사항을 어떻게 (How) 구현할지, 그리고 전략적인 부분들도 고려하고

3. 개발한다 = 요구사항과 설계를 고려해서 소프트웨어를 구현하고 (예: 소스코드)

4. 테스팅 = 앞서 정의된 사양대로 개발되었는지 (Verification), 버그는 없는지 확인하고

5. 배포한다 = Release, Delivery 

6. 모니터링하고 유지보수한다.

 

대게 일반적인 소프트웨어 프로세스라고 하면 위와 같은 흐름에서 흘러갈 것이다.

 

그런데 프로세스 모델은, 위 단계에서 무엇을 중요하게 생각하느냐, 제품의 특성과 상황과 산업에서 요구하는 규제, 법률 등 변화하는 상황에서 어떻게 대응해야 할지에 따라 위 단계를 반복적으로 또는 강조해서 수행하게 된다.

 

결국 프로세스 모델을 통해서 마일스톤/시점별로 Task를 정의하고, 각 task 별로 입력물, 출력물 식별한다. 각 Task의 선행, 후행 관계에서의 dependency를 포함해서 flow / sequence를 정의하게 된다.

 

이러한 여러 과정에서 몇 가지 대표적으로 적용/활용되는 모델들이 있는데 이는 다음과 같다.

 

1. Waterfall model

 

Waterfall Model

 

Requirements부터 Operation까지의 단계가 At once로 한번에 가는 형태로 이루어진 모델이다.

처음부터 요구사항이 명확하게 식별되어야 하고 시연 가능한 제품을 마지막에 볼 수 있는 점에서 수정/변경되는 사항을 반영하기 어렵다. inflexible 하고 can't adapt to change. rigid structure

 

2. Incremental model

 

Incremental model

 

위 그림에서 initial version을 참고해서 설명하면, 빠르게 요구사항을 고려해서 시제품과 같은 형태로 개발하고 검증해가면서 각 단계들을 반복(iteration)적으로 프로세스를 수행하면서 개발하게 된다. partial repetition

 

앞선 Waterfall model과 같이 요구사항을 처음부터 완벽하게 분석해야 하고, 시연 가능한 버전을 만들어내야 하므로 비용이 추가로 발생할 수 있다. 주로 결집력이 약한 부품(loosely-coupled part) 또는 Clear and complete definition/requirements인 경우 적합한 모델이다.

 

3. Evolutionary model

 

In the Evolutionary model, the complete cycle of activities is repeated for each version.  In the Incremental model,  increments are individually designed, tested, and delivered at successive points in time.  In the high-risk model, the project is divided into phases and each phase helps constrain risk.

 

Evolutionary model 이랑 Incremental model은 이름에서 비슷하지만, 위에서 정의된 것과 같이

Evolutionary model은 요구사항 > 아키텍처 > 설계 > 구현 > 테스트 단계를 각 버전별로 수행하는데 반해Incremental model은 각 단계를 부분적으로 수행할 수 있다는 점에서 차이가 있다. 주로 설계부터 테스트 단계에서 이러한 활동이 이뤄지게 된다. (요구사항까지 반복하게 된다면 Evolutionary model로 봐야 한다)

 

위 Model 외에도 V-model, Iterative Model, RAD(Rapid Application Development) model, Sprial model, Agile model 등 다양하게 존재한다는 점, 각 모델 별로 운영방식에 따라 장/단점이 있다는 것을 이해하기 바란다.

 

참고했던 링크를 첨부하니, 보다 자세히 보시려면 링크를 참고하시기 바랍니다.https://www.educative.io/blog/software-process-model-types#what

 

감사합니다.