초보 개발자
폭포수 모델과 점진적 개발방법론 본문
** 본 글은 차성덕 교수님의 소프트웨어공학이야기 책을 정리한 글입니다. **
기존의 방법론에서 어떤 단점? 그리고 어떻게 극복? 주어진 환경과 제약사항을 고려했을 때 어떤 후보? 등을 생각해보자
Waterfall : 폭포수 모델
- 요구공학 → 디자인 → 코드 구현 → 모듈 단위 시험 테스트 → 통합테스팅
- 이전 단계로의 Loop back이 가능하다. 누락된 것이 있으면 멈추고 다시 돌아가서 하라는 뜻
- NASA (폭포수 모델 + 각 단계가 동시다발적으로 실행되기도 함) - 복잡한 소프트웨어 환경이라는 것을 인지
- 요구사항 분석 단계에서 디자인 + 구현 → 프로토타입 구현, 선행적인 디자인 작업 등
- 재작업, 변경은 추가 비용을 발생시키므로 최소화 하는 것이 좋음.
- Document: entry criteria, exit criteria, products 산출물, measures 측정 지표, key activities 담당 역할
ex) measures - staff hours 소요 시간, TBD 미확정 요구사항 개수, 요구사항 변경 주기... 등 → 자동화 도구 이용
Incremental / Iterative : 점진적 모델
- 매년 신제품/버전을 출시할 때, 기본적인 기능은 자주 변하지 않음 → 소프트웨어의 재사용 + 테스팅 자동화 환경
- 정해진 요구사항을 여러 단계로 나누고, 단계별로 설계, 구현, 테스팅을 반복하여 기능을 점진적으로 추가하며 완성
- 마이크로소프트 1990년대 sync-and-stablize 개발 단계: Planning → Development → Stabilization → 공식 출시
- Planning: 기능 명세 + 전체 계획 + feature별 team 분배
- Development: 프로젝트를 (2~4개월 걸리는) 3개로 나누어 점진적으로 구현
- buffer time: 예비 개발기간 20~50% 할애 → 돌발상황이 발생할 수 있기 때문 (요구사항 변경, 버그 수정 등)
- Code Stabilization: 주관적인 판단. ① No severe bug ③ Zero bug release (오류가 없을 수는 없음)
→ Issue Tracking (Bug) System 사용: 오류의 등급별로 수정 여부를 결정 - Stabilization: internal testing + beta testing → 버그 수정 및 개선
- 번외) Daily build: 특정 모듈이 완성될 때 마다 repository에 check-in! 다른 모듈 동작의 영향 끼치는지 확인
수정 위해선 check-out 해야 함 → 오류를 빨리 발견하기 위한 방법, continuous integration 실시간 통합(?)
추가 자료 리스트
- Michael Cusumano and Richard Selby, How Microsoft Builds Software, ACM (1997)
'컴퓨터공학 전공 > 소프트웨어공학' 카테고리의 다른 글
UML을 잘 알아야 하는 이유 (0) | 2022.12.08 |
---|---|
애자일 소프트웨어 개발방법론 (0) | 2022.12.08 |
소프트웨어 개발방법론: 무엇을 선택할까? 어떤 기준으로 결정할까? (2) | 2022.12.08 |
소프트웨어개발 프로세스 성숙 모델 CMMI (1) | 2022.10.13 |
페이건 인스펙션과 최신 코드리뷰 기법 (2) | 2022.10.13 |