Software Engineering
(교재: UML과 패턴의 적용, Craig Larman 저, Pearson Education)
Professor Seung-Hoon Choi
Ch02. 반복적이고, 진화적이며, 기민한 접근
단원목표
반복적이고(iterative) 기민한(agile) 프로세스를 정의한다.
– adaptive: 요구사항이나 개발 환경 변화에 잘 적응해야 함
UP(Unified Process)의 기본적 개념을 정의한다.
2.1 UP란 무엇인가? 다른 방법론과 상호보완하는가?
SW 개발 프로세스
– SW를 구축(building), 배치(deploying), 유지보수(maintaining) 하기 위한 접근 방식
Unified Process
– 객체지향 시스템을 구축하기 위한
반복적인소프트웨어 개발 프로세스
– UML의 일부분이 아님
– 본 교재에서 적용함
iterative / incremental / evolutionary development
– 개발이, iteration이라는 짧고 고정된 미니 프로젝트로 이루어 짐
– 각 iteration의 산출물
테스트되고 통합된 실행가능한 시스템 일부분
– 각 iteration은 다음을 포함한다.
자체의 요구 사항 분석, 설계, 구현, 테스팅 활동
2.2 반복적이고 진화적인 개발이란 무엇인가?
Requirements Design
Implementation &
Test & Integration
& More Design Final Integration
& System Test
Requirements Design
3 weeks (for example)
The system grows incrementally.
Feedback from iteration N leads to refinement and adaptation of the requirements and design in iteration N+1.
Iterations are fixed in length, or timeboxed.
Time
Implementation &
Test & Integration
& More Design Final Integration
& System Test
Fig. 2.1 Iterative and evolutionary development
2.2 반복적이고 진화적인 개발이란 무엇인가?
(출처: UML과 패턴의 적용, Craig Larman 저, Pearson Education)
2.2 반복적이고 진화적인 개발이란 무엇인가?
반복적(iterative) 점증적(incremental) 개발 예
– 10가지 기능을 가지는 소프트웨어 개발 시
Iteration 1: 3가지 기능을 가지는 소프트웨어를 분석, 설계, 구현,
시험, 통합해서 실행 가능한(그러나, 불완전한) 프로그램을 생산한 다.
Iteration 2: Iteration 1의 산출물에 4가지 기능을 추가한 소프트
웨어를 분석, 설계, 구현, 시험, 통합해서 실행 가능한 (그러나, 아 직도 불완전한) 프로그램을 생산한다.
Iteration 3: Iteration 2의 산출물에 3가지 기능을 추가한 소프트
웨어를 분석, 설계, 구현, 시험, 통합해서 실행 가능한 완전한 프로 그램을 생산한다.2.2 반복적이고 진화적인 개발이란 무엇인가?
반복적 개발 장점
– 프로젝트 실패율이 적고 생산성이 높다.
– 초반에 진행 상황을 눈으로 볼 수 있다.
– 빠른 피드백과 사용자의 참여로, 좀더 사용자의 입맛에 맞는 시스템 으로 발전
– 이번 반복에서 얻은 지식은 다음 반복 때 적용하여 개발 프로세스를 향상시킬 수 있다.
2.2 반복적이고 진화적인 개발이란 무엇인가?
반복의 기간 및 타임 박스
– 작은 단계, 빠른 피드백, 적합화 : 2-6주가 적당 – 반복은 반드시 타임박스화(고정 기간)해야 한다.
기간 내에 작업 완수가 힘들면 업무를 줄여라.
폭포수 모델(Waterfall) 생명주기
–
프로그래밍 전에모든 요구 사항을 정의하고자 함 –
프로그래밍 전에완벽한 설계를 생성하려고 함
– 프로젝트 시작 즈음에 완벽한 계획이나 일정을 세움
– 그러나, 폭포수 모델은
실패하기 쉽다. 왜냐 하면… 요구 사항은 항상 변하기 마련이다.
소프트웨어 프로젝트에서 “변화(change)”는 항상 존재한다.
2.3 What about Waterfall Lifecycle?
2.3 What about Waterfall Lifecycle?
Requirements definition
System and software design
Implementation and unit testing
Integration and system testing
Operation and
maintenance
다음 페이지의 Fig 2.4를 참조하시오.
2.4 반복적이고 진화적인 분석/설계를 어떻게 수행하는가?
Iteration 1 Iteration 2 Iteration 3 Iteration 4 Iteration 5 20%
2%
requirements software
30%
5%
requirements software
50%
8%
90% 90%
10% 20%
requirem ents workshops Im agine this will
ultim ately be a 20- iteration project.
In evolutionary iterative developm ent, the requirem ents evolve over a set of the early iterations, through a series of requirem ents workshops (for
exam ple). Perhaps after four iterations and workshops, 90% of the requirem ents are defined and refined.
Nevertheless, only 10% of the software is built.
1 2 3 4 5 ... 20
week 1
M T W Th F
week 2
M T W Th F
week 3
M T W Th F
kickoff m eeting clarifying iteration goals with the team . 1 hour
team agile m odeling &
design, UM L
start coding &
testing
a 3-week iteration
de-scope iteration goals if too m uch work
final check-in and code- freeze for the iteration baseline
dem o and 2-day
requirem ents workshop
next iteration planning m eeting;
2 hours
Agile 개발 방법
– 고정된 기간 안에 반복적이고 진화적인 개발을 적용함 – 유연하고 적응력있는 계획을 세움
– 점진적인 제품의 인도를 장려함
– 신속하고 유연하게 대응하는 기민성(agility)을 권장하는 실행 기술들을 포함한다.
– 예: XP(Extreme Programming)
테스트 강조
Pair-Programming
문서 작성 보다는 구현 강조
개발 과정에서 고객의 참여 강조
2.6 Agile 방법의 특성은 무엇인가?
개발 전체에서의 주요 4 단계
– Inception(개시)
대강의 비젼, 비즈니스 케이스, 범위, 대강의 비용 추정 등을 정의
– Elaboration(정련)
정제된 비전, 핵심 아키텍쳐(구조) 정의 , 높은 위험성 해결, 대부 분의 요구사항과 범위 식별, 보다 현실적인 추정
– Construction(구축)
남아있는 낮은 위험성과 좀더 쉬운 부분의 반복적인 구현, 배치 준비
– Transition(전이)
베타 테스트, 배치
2.10 UP 단계에는 어떤 것이 있는가?
2.10 UP 단계에는 어떤 것이 있는가?
inc. elaboration construction transition
iteration phase
Development cycle
milestone release
increment
final production release
어떤 중요한 결정이 나 평가가 일어나는 iteration 마지막 포인 트(end-point)
최종 산물에 포함될 실 행가능한 일부분. 각 iteration의 마지막에 release가 생산된다.
두 개의 연속된 iteration의 release들 사이의 차이
최종 프로덕트가 생산됨
(출처: UML과 패턴의 적용, Craig Larman 저, Pearson Education)
2.11 UP 활동 분야란 무엇인가?
활동 분야(Discipline)
– 관련있는 일련의 활동들
본 교재에서는 3 가지 활동 분야에 초점을 맞춘다
– Business Modeling
문제 영역에서의 객체 모델링
– Requirements
Use Case를 이용한 요구 사항 분석
– Design
전체 구조, 객체, 데이터베이스, 네트워크 등에 관한 여러 가지 설 계 문제 포함
2.11 UP 활동 분야란 무엇인가?
Fig 2.7 UP disciplines 17/20
2.11 UP 활동 분야란 무엇인가?
Fig 2.8 Disciplines and phases
Sample UP Disciplines
Business Modeling Requirements Design Implementation ...
The relative effort in disciplines shifts across the phases.
This example is suggestive, not literal.
incep-
tion elaboration construction transi-
tion
...
2.11 UP 활동 분야란 무엇인가?
Fig 2.9 Book organization related to UP phase and iterations
Overview Inception Elaboration
Iteration 1
Elaboration Iteration 2
Elaboration Iteration 3
Object-Oriented Analysis
Object-Oriented
Design Translating
Designs to Code
Topics such as OO analysis and OO design are incrementally introduced in iteration 1, 2, and 3.
Special Topics
(출처: UML과 패턴의 적용, Craig Larman 저, Pearson Education)
2.11 UP 활동 분야란 무엇인가?
Book Structure and UP Phases and Disciplines
– 본 교재의 case study에서의 초점
Phase: Inception, elaboration 단계
Disciplines: 비즈니스 모델링, 요구사항 분석, 설계 작업
– 전체 책 내용 구조
1. Inception 단계 : 요구사항 분석의 기초
2. 반복 1 : 기초적 OOA/D, 객체에 어떻게 책임을 할당하는지 다룸 3. 반복 2 : 객체 설계(설계 패턴 소개)
4. 반복 3 : 다양한 주제들(예. 아키텍쳐 분석, 프레임워크 설계,…)