[소프트웨어 공학] 4. Software Production Process
What is Software Process Model?
소프트웨어를 개발하는 과정은 이미 많이 사용되어지고 검증된 방법들로 개발하는 것이 좋다.
프로세스 모델의 목표는 당연히, 고객의 요구를 만족시키는 것이다.
여기서 고객의 요구는 구체적으로 품질 좋은 제품을 제 시간안에, 정해진 예산안에, 신뢰성있고, 효율적인 것을 말한다.
소프트웨어의 life-cycle은 다음과 같다.
Requirements -> Analysis -> Design -> Coding -> Testing -> Delivery -> Operations and Maintenance -> Retirement
Why Process Model Important?
장기적으로 보면 시간을 단축할 수 있고, 그만큼 비용도 줄어든다.
제품의 품질과 관련이 있다.
프로젝트를 투명하게 관리할 수 있다.
Software Process Models
Build and fix Model (Code and Fix) |
문서화없이 바로 코딩-수정을 반복하여 만드는 것. -장:혼자 프로그래밍 할 경우 적합. -단:여러명이서 개발하거나, 요구사항이 많거나 신뢰성을 바탕으로한 개발에는 좋지 않다. |
Waterfall Model |
프로세스 단계를 한단계를 밟아가되, 되돌아 오지 않음. 하지만 피드백을 넣는 방 법을 섞어 사용하기도 한다. -장: Document-oriented로 단계별로 반드시 문서화하고 넘어가야 한다. 돌아 올 수 없기 때문에 철저한 계획과 프로젝트 관리가 필요하다. 또한 완벽한 이해가 될때까지 다음단계로 넘어가지 않는다. -단: 변경의 예측이 불가하다. 철저한 계획이 완벽하다고 보장할 수 없다. |
Evolutionary Model |
|
-Rapid prototyping |
프로토타입을 제작하는 것으로, 처음 기초 프로토 타입의 제품을 빠르게(품질을 생각하지 않고) 만들어서 유저에게 배포한다. -장: 시간과 비용을 줄일 수 있다. 개발자와 사용자 사이에 의사소통이 쉽다. 프로토타입을 빠르게 만들어보기 때문에 에러를 쉽게 예상할 수 있다. 요구사항이 명확하지 않을 때 좋다. -단: |
-Incremental |
단계적 접근법으로 Stepwise development 이다. 즉 일부 기능만 구현하여 바로 릴리즈 하거나 모든 기능을 구현하되 불완전해도 일단 릴리즈하여 사용자의 피드백을 받으면서 개발한다. -장: 사용자에게 바로 제품을 제공하여 수정할 수 있다. 변화 대처가 쉽다. -단: build-and fix model과 비슷하게 될 수 있다. integration and testing에 대한 오버헤드가 있다. |
Transformation Model |
|
Spiral Model |
각 단계(Determine objectives, alternatives... -> Evaluate alternative, resolve risks -> Develop and verify -> Review and commitment, Paln next level)를 계속해서 반복하는 방법이다. -장: 리스크에 초점을 맞춰 개발한다. 규모가 큰 소프트웨어 개발에 적합. -단: 비용이 너무 많이 든다. (각 단계를 계속 반복하므로) |
CBSE Process |
만들어진 컴포넌트를 사용한다. (Component-Based Software Engineering Process) 개발단계는 Requirements Specification -> Component Analysis -> Requiremetns Modification -> Software Design with Reuse -> Development & Integration -> Software Validation 으로 이루어진다. |
XP Process |
Extreme Programming approach 로 Agile의 기반이 된 프로세스이다. 변화에 적합한 모델로, 각자의 역할이 딱딱하게 정해진 것이 아니다. Communication, Simplicity, Feedback, Courage 를 추구하며 개발한다. -장: 요구사항의 변화가 많고, 소규모 인원이 개발할 때 적합하다. |
CMMI (Capability Maturity Model, Integration by CMU/SEI)
미국에서 개발한 방법으로 소프트웨어의 품질을 평가하고 보증하는 기준안이다.
소프트웨어의 능력이 얼마나 성숙되었는가를 측정하는 것으로 5단계로 나뉘어진다.
Performed => Managed => Defined => Quantitatively Managed => Optimizing
소프트웨어 프로세스 모델이 필요한 이유.
소프트웨어 개발 과정 자체를 투명하게 보여 줄 수 있어, 관리가 수월하다.
또한 프로젝트의 규모가 커질 수록 품질과 아주 밀접한 관계가 있기 때문에 필요하다.
마지막으로 소프트웨어 프로세스 모델(Process Model)은 무엇을 해야할 지를 정의하고, 방법론(Methodology)는 어떻게 해야 할지를 정의하는 것이다.