
⇒ 모든 단계별로 검증과 문서화를 거침 (plan-driven)
⇒ 단계별로 검증과 문서화를 최소화하며 리소스를 최소화한다. ⇒ 변화에 상대적으로 유연하게 대처 가능 (agile)⇒(overhead 줄일 수 있다.)위 두개와 상관없이 Integration은 무조건 필요하다.



기초적인 processSpecification
Software specification
시스템 운영 및 개발에 대한 제약 조건 및 필요한 서비스를 확립하는 과정
Requirement engineering process
- Requirements elicitation(이끌어냄) and analysis
- 시스템으로부터 어떤 요구사항이 있나?
- Requirements specification
- 위에서 한 일을 정리하여 document로 만든 것
- 기존에 있던 system 을 분석
- Requirements validation
- Requirements가 valid한지 확인
- Valid하다는 것은 실현가능한지 확인하는 것이며 consistency(일관성) 이 맞아야함

Design and implementation
자연어를 binary code로 바꾸는 것
Software Design

Implementation

Design과 Implementation은 inter-leaved와 관련 있다.

Validation (Testing)
Verification 과 Validation ( V&V)는 …
Checking , review, system testing포함
Testing은 가장 많이 쓰이는 V&V의 일종
Testing stages
Component testing (unit testing)
System testing
Acceptance testing
Customer의 data를 가지고 실제 유저가 사용하듯이 testing한다.
=Alpha testing( 출시 전 마지막 testing)
→회사에서 하는 마지막 검증

Testing phases in a plan-driven software process ( Beta Testing)
→ 출시 후 회사 외부 소비자에게 testing받는 것

Evolution (Maintenance)
Software는 본질적으로 flexible하며 바뀔 수 있다.
Business 상황들이 바뀌며 requirements가 바뀜에 따라, business를 support하는 business 또한 evolve하며 바뀐다.

Development processes에 따라 달라진다.
계속해서 바뀌는 requirements에 어떻게 반응할 것인지 알아보는 part
큰 software system을 만들 때 process iteration은 어쩔 수 없다.
Process를 반복하는 이유는 ==requirement가 계속해서 change된다==. 다시 돌아가지 못하면 iteration안되는 model이다.
Requirement change는 process iteration을 야기한다
Related approach
Incremental 하게 delivery한다는 뜻은 한번에 delivery (software를 고객,user, 시장에 전달)하는 것이 아니라 단계별로 조금씩 delivery하겠다는 말
Sigle delivery로 시스템을 delivery 하는 것보다 increment 단위로 쪼개어 기능에 도움이 되게끔 release한다.
User requirements에 대해 우선순위 부여
쪼개서 increment로 나누고 제일 먼저 delivery할 것을 정한다.
그 기준은 중요한 것부터 delivery
가장 높은 우선순위의 requirements는 그 전 increments를 포함한다.
Increment가 개발되기 시작하고 requirements가 중지 된다면 ( 밀린다면 ) 그 다음 increment에 반영된다.

장점
문제점
단점보다 장점이 훨씬 많기에 대부분 incremental delivery를 사용한다.
Iterative software development process framework는 UML 그리고 관련된 process의 작업에서부터 나왔다.
일반적으로 3개의 관점에서 설명된다.
동적 관점이며 시간에 따라서 변화해 나가는 것을 보여주는 단계

특징
Inception
Elaboration = 계획
Construction
Transition
- Operating environment에서 시스템을 배포
Process activities를 보여준다.

Prototype의 version 또한 관리하며 tool 도 쓴다.
특정 phase에서 workflow를 사용하는 것이 아니라 필요하면 모두 다 사용한다.
특정 phase에서 필요한 workflow를 선택하여 진행하면 된다.
Flexible하게 진행
이렇게 하면 software가 좋아진다라는 방향을 보여준다.