Software Process Model
1. Specification
2. Design and Implementation
3. Validation
4. Evolution
각각의 단계에 다음이 포함된다.
-
결과물
-
역할
-
사전/사후 상황
Plan-driven process
Agile process
현실적으로는 두 방식을 섞어서 사용한다
The Waterfall model - Plan driven
- Requirement definition : 요구사항 분석
- 이 프로젝트의 착수 여부, 무엇을 제공할 것인가.
- System and Software design : 디자인
- Implementation and Unit test : 구현과 테스트
- Integration and System testing : 통합
- Operation and Maintenance
- Operation : 이 프로그램을 어떻게 쓰느냐
- 프로젝트가 Inflexible해서 사용자 요구의 변화에 대응하기 어렵다.
- 큰 시스템의 개발에 주로 사용된다.
Incremental development - Agile
잘게 쪼개서 하나하나 해 나가자
- 단계별로 결과물이 나온다.
- 최초 : Initial version
- 중간 : Intermediate version
- 최종 : Final version
- 고객 요구에 맟춰 변경하기위한 cost가 적다.
- 고객의 요구를 다음버전에 적용하기 쉽다.
- 빠르게 개발하고 배포해야 하는 상황에 유리하다.
- Process가 없는것 처럼 보인다 : 설계가 거의 없는것 처럼 보인다.
- 빨리 개발하는것이 주 목적, 비용이 적게 든다.
- 언젠가는 Refactoring을 해야 한다.
Integration and Configuration
- 기존 Component나 Application system을 재활용하는데 기인한다.
- 재사용된것 들은 유저 요구에 따라 기능이 변경될수 있다.
- 빠르고 싸게 개발 가능
- 고객의 요구에 미달하거나 재사용된 시스템의 제어를 잃어버릴수 있음
재사용 가능한 소프트웨어
- Stand-alone software for particular environment
- Framework
- Webservice
Requirement Refinement : 요구 재정의
장점
- 처음 개발하는것 보다는 비용과 위험성이 줄어든다.
- 개발 속도가 빠르다.
- 실제 필요엔 맞지 않을수 있다.
Requirements Engineering Process
1. Software Specification
- 서비스에 요구되는것과 작동및 개발의 제한에 대한 작성
Requirements Elicitation and Analyze
Requirements Specification
Requirements Validation
2. Software design and Implementation
- Architectural Design
- Database Design
- Interface Design
- 시스템 Component간 Interface 디자인
- Component selection / Design
- 구현
- 구조를 실행 가능한 프로그램으로 번역
- 프로그램 개발 or 프로그램 설정
- 프로그래밍은 따로 정형적 프로세스가 없다.
- 디버깅을 통해 프로그램의 문제를 찾고 수정한다.
3. Software Validation
- 시스템이 사양서에 잘 맞는지, 고객 요구에 부합하는지
테스트 케이스를 통해 확인한다.
Testing Stages
- Component testing
- System testing
- Customer testing
Test in plan-driven software
Software Evolution
- 소프트웨어는 가변적이고 변경 가능하다.
- 사업 상황에 따라 요구사항이 바뀌면 소프트웨어도 바뀌어야 함
변화에 적응하기
- 변화는 필연적
- 변화를 예측할것
- 변화 가능하게 할것
System Prototyping
- 시스템이나 그 일부를 빠르게 개발해 소비자의 요구를 확인하고 디자인의 실현가능성 확인
- 컨셉 확인과 체험을 위한 초기 버전 시스템
- 사용성 증대
- 요구 부합
- 디자인 좋아짐
- 유지보수 좋아짐
- 프로토타입 전용 언어/툴 사용 가능
- 기능성은 없을수 있다.
Throw away prototyping
- 개발 이후 프로토타입은 버려진다.
- 기능과 관련되지 않은 부분 최적화가 안되어 있거나
- 문서가 없고
- 구현이 조악하며
- 품질 표준에 미치치 못함
Incremental development
- 시스템을 분할해 개발해 다음 증분 개발 전에 확인한다.
Incremental delivery
장점
- 각각의 증분이 빠르게 사용자에게 전달됨
- 증분이 프로토타입의 역할을 해 요구사항이 명확해짐
- 프로젝트 실패 리스크 줄어듦
- 가장 중요도가 높은 서비스가 테스트를 더 받음
단점
- 쉽게 증분을 할수 없는 경우도 있다. < 기반 시설을 요구하는 등 >
- 증분을 쉽사리 합칠수 없는 경우도 있다.
측정 >> 분석 >> 변화
Process Improvement
- 소프트웨어의 품질 향상 및 성능 향상
- 현재 프로세스를 이해하고 퀄리티를 높이면서 비용과 시간은 줄임
Approach
- 프로세스 향상과 프로젝트 관리에 초점을 둠
- Agile approach에 반복적-개발은 프로세스 개발의 오버헤드를 줄임
- Process Measurement
- 정량적인 데이터를 모아야 한다.
- 개선 과정의 기준점이 됨
- Process Analysis
- 현재 프로세스가 평가되어 약점과 병목을 확인
- 프로세스 모델이 설명되고 개발됨
- Process Change
Process measurement
- 정량적인 데이터가 수집되어야 한다.
- 프로세스 측정은 개선을 위해 사용되어야 한다.
Process metrics
- 프로세스 활동이 성사되는데 걸리는 시간
- 프로세스 혹은 활동이 요구하는 자원
- 특정 이벤트가 발생하는 숫자
- 위로 갈수록 좋다.
- 초창기
- 매니징 됨
- 확연히 구분됨
- 정량화
- 최적화 시스템