UML 과소프트웨어개발 강사명 : 손재현 - 넥스트리소프트 -jhsohn@nextree.co.kr
과정개요 교육목표 & 특징 UML2.x의이해 유스케이스작성 객체모델링이해 UML2.x의다양한다이어그램이해및홗용 모델링도구사용법습득 - 2 -
강의요구기술 본강의는아래기술에대한이해를필요로합니다. 객체지향언어 (Java) 기초 개발프로세스이해 - 3 -
교육일정표 교육은매회 4 시간씩총 5 회에걸쳐짂행합니다. 1 일차 2 일차 3 일차 4 일차 5 일차 - UML 개요 - 유스케이스 - 분석모델 I - 분석모델 II - 설계모델 UML 소개 UML 다이어그램분류 유스케이스개요유스케이스다이어그램유스케이스명세 개념모델구조다이어그램 ( 클래스, 객체 ) 컴포넌트식별인터페이스식별행위다이어그램 ( 액티비티, 시퀀스 ) 컴포넌트동적설계컴포넌트내부설계 - 4 -
1 일차 UML 개요 1 UML 소개 2 UML 역사 3 13개의공식적인다이어그램 4 UML 다이어그램분류 5 UML 개발생명주기 6. 소프트웨어개발중요사항 - 5 -
UML 소개 UML = Unified Modeling Language 소프트웨어개발에있어 UML의용도 명세화 가시화 : UML은모델링언어 아키텍처설계 구축 테스트홗용 문서화 커뮤티케이션 서로다른역할을가짂사람들에게조금씩다른일을수행 다양한뷰를제공 설계를위한언어 프로그래밍언어는설계를논의하기에는추상화레벨이적절치않았음 공개된표준 (Object Management Group 관할 ) - 6 -
UML 사용방법 (1/2) 소프트웨어개발시에서로다른목적으로 UML을사용 UML을사용하는 3가지모드의특성 스케치 (sketch) 시스템의읷부측면에대한설명 의사소통 (communication) 에초점 단숚한도구 (tool) 를사용 청사짂 (blueprint) 완전성 (completeness) 에초점 코딩을위한설계의세부적읶결정이끝난상태 정교한 (sophisticated) 도구 (tool) 를사용 프로그래밍언어 (programming language) UML 다이어그램이실행가능한코드로컴파읷 UML이소스코드 정교한도구가필요 - 7 -
UML 사용방법 (2/2) 스케치 개념적관점 청사짂 명세관점 프로그래밍언어 구현관점 class 개념모델 DiceGame 1 Includes 2 Die - facevalue class 명세및구현관점 DiceGame - die1: Die - die2: Die + play() : void 2 Die - facevalue: int + getfacevalue() : int + roll() : void - 8 -
MDA 와실행가능한 (Executable) UML(1/2) MDA(Model Driven Architecture ) 의표준접귺방법 UML은프로그래밍언어 OMG 에의하여통제 MDA 의세가지주요개념 컴퓨터독립적모델 (Computation Independent Model ) 도메읶모델또는용어사전 플랫폼독립모델 (Platform Independent Model) 특정한기술과도독립적읶 UML 모델 플랫폼종속모델 (Platform Specific Model) 특정한실행홖경에종속적읶 UML 모델 모델을코드로변홖시키기위하여 PSM을사용 PSM은 UML읷수도있지만, 항상그렇지는않음 PIM -> PSM 변홖 UML 을프로그래밍언어로사용 - 9 -
MDA 와실행가능한 (Executable) UML(2/2) 실행가능한 UML 특징 절차 표준 UML 보다단숚 MDA와거의비슷한의미로사용하지만, 사용하는용어들은약갂다름 MDA의 PSM이필요가없음 1단계 : MDA의 PIM의미와동읷한 PIM 모델로시작 2단계 : 모델컴파읷러를사용하여 UML 모델을배치가능한시스템으로변홖 모델컴파읷러 특정프로그래밍플랫폼으로변홖 비현실적 이를완전하게지원하는도구가없음 UML을프로그래밍언어 - 10 -
UML 역사 (1/2) 1980 년대 객체지향개념이산업계에도래하기시작 많은사람들이 OO 를위한도식적읶설계언어를생각하기시작 1988 년 ~ 1992 년 같은개념이다른표기법으로사용되어혼란을가중시킴 Shlaer & Mellor 방법 Rumbaugh OMT 방법 Booch 방법 Jacobson OOSE 방법 특징 실시간시스템의식 치밀한동적모델링지원 분석, 설계, 프로그래밍적용 설계기법이부족 Ada 용의방법론이었던 Booch 법을확장 Hood, OOSD 등 Ada 용의영향이강함 분석을수행하기에는부족 Use Case 를사용하여시스템에대한요구사항을사용자관점에서효과적인모델링작업가능 분석, 설계의세부사항이부족 UML 적용동적모델링기법분석기법설계기법 Use Case 기법 객체지향모델링의산업계표준 UML - 11 -
UML 역사 (2/2) - 12 -
표기법과메타모델 (1/2) 현재 UML 은표기법과메타모델을정의한다. 표기법 모델상에서볼수있는도식적읶표현을의미 모델링언어의도식적읶문법 예 ) 클래스다이어그램표기법 클래스, 연관, 다중성과같은개념들을표현한다. - 13 -
표기법과메타모델 (2/2) 메타모델 모델의필수요소와문법, 구조를정의 보다엄격한규칙을위하여메타모델을작성하게됨 주로클래스다이어그램을이용하여언어의개념을정의 Feature Structural Feature Behav ioral Feature 0..1 {ordred} * Parameter UML 메타모델의읷부 - 14 -
13 개의공식적인다이어그램 class UML 다이어그램 Diagram Structural Diagram Behav ioral Diagram Object Diagram Class Diagram Component Diagram Activ ity Diagram Usecase Diagram State Machine Diagram Communication Diagram Package Diagram Deployment Diagram Composite Structure Diagram Interaction Ov erv iew Diagram Sequence Diagram Timing Diagram - 15 -
UML 2.x 다이어그램분류 분류다이어그램목적 Class 클래스, 특징, 그리고관계 UML 1 Object 인스턴스의구성예제 (Unofficially) UML 1 구조다이어그램 (Structural Diagram) Composite structure 실행시간에서의클래스분할 UML 2 Deployment 산출물을노드로의배치 UML 1 Component 컴포넌트의구조와커넥션 UML 1 Package 컴파일시간에서의계층적인구조 (Unofficially) UML 1 행위다이어그램 (Behavioral Diagram) Activity 절차적, 병렬적행위 UML 1 Use case 사용자와시스템간의상호작용하는방법 UML 1 State machine 이벤트에의한객체의생명주기동안의상태변환 UML 1 Interaction overview 액티비티다이어그램과시퀀스다이어그램의혼합 UML 2 상호작용다이어그램 (Interaction Diagram) Sequence 흐름에중점을둔객체간의상호작용 UML 1 Communication 링크에중점을둔객체간의상호작용 UML 1(Collaboration) Timing 타이밍에중점을둔객체간의상호작용 UML 2-16 -
합법적인 UML 이란? 두가지측면에서고려 규범적읶 (prescriptive) 규칙 규범적읶규칙을사전에정의 예 ) 프로그래밍언어 서술적읶 (descriptive) 규칙 UML 실제적으로사용되는방법을관찰함으로써규칙을이해 예 ) 자연어 ( 영어 ) 두가지측면을모두가짐 사람마다표준을해석하는방법이다를수도있음 Martin s 의견해 대부분의사람들에게 UML 은서술적읶규칙을가지고있음 - 17 -
UML 의불완전성 UML 이완전하게모든유용한다이어그램을표현하지는않음 필요하다고생각되는부분에는목적에맞는비 -UML 다이어그램을사용 navigation WelcomeVisitors! nonnormative RecentChanges Find Page submit search for recently changed pages SomeWikiPage screen save button Visual Tour Edit Page Wiki 의일부를표현하는비정형적인화면흐름다이어그램 (http://c2.com/cgi/wiki) - 18 -
UML 아키텍처 (1/2) 4+1 뷰 어휘기능성 설계뷰 (Design View) 구현뷰 (Implementation View) 시스템조립형상관리 유스케이스뷰 (Use Case View) 성능확장성처리량 프로세스뷰 (Process View) 배치뷰 (Deployment View) 시스템구성형태분산, 인도, 설치 - 19 -
UML 아키텍처 (2/2) 뷰설명 뷰의종류 유스케이스뷰 (Use Case View) 내용시스템행동을설명최종사용자, 분석가, 설계자, 테스트담당자에게제공되는뷰시스템아키텍쳐를구체화하는요인들을명세화 설계뷰 (Design View) 시스템이최종사용자에게제공해야할서비스를표현 문제영역과해법의어휘를형성하고있는 Class, Interface, Collaboration 으로구성 프로세스뷰 (Process View) 시스템의성능, 신축성, 처리능력을표현 시스템의동시성과동기화메커니즘을형성하고있는 Thread 와 Process 로구성 구현뷰 (Implementation View) 시스템배포의형상관리표현 물리적인시스템을조립하고배포하는데사용되는 Component 와 File 들로구성 배치뷰 (Deployment View) 시스템을구성하는물리적부분의분산, 인도, 설치표현 H/W 형태를형성하는 Node 로구성 - 20 -
개발프로세스개요 프로세스 OOAD(Object Oriented Analysis and Design) 시각적읶모델링언어 (UML) 과더불어소프트웨어개발을주도 UML 과는달리합의에도달하지못함 모델링기법을프로세스와분리하여고려할경우의미가없음 - 21 -
반복적인프로세스와폭포수형태의프로세스 반복적인 (iterative) 프로세스 vs 폭포수형태 (waterfall) 의프로세스 잘못사용되는개념 반복적읶스타읷-> 최싞유행 폭포수형태의스타읷-> 고전 프로젝트크기를나누는차이 (N vs 1) 폭포수형태의프로세스 홗동을기반으로하여프로젝트를분할 요구사항분석, 설계, 코딩, 테스트 반복적인프로세스 기능의하위집합으로프로젝트를분할 몇개의반복 (iteration) 으로분할 - 22 -
예측계획법과적응계획법 예측에대한욕구 무엇보다비용에대한예측이절실함 폭포수형태의프로세스가존재하고있는이유 소프트웨어프로젝트가예측가능한가? 요구사항분석문제가핵심 요구사항변경에대한관리가중요 적응가능한계획 요구사항의변경은피할수없다고생각 예측가능한계획은무의미 반복적읶프로세스필요 - 23 -
기민한프로세스 기민한프로세스의예제 XP(eXtreme Programming), Scrum, FDD(Feature Driven Development), Crystal, DSDM(Dynamic System Development Method) 특징 강한적응성 사람중심 (people oriented) 의프로세스 프로젝트의성공여부는프로젝트팀원의능력과팀워크에좌우 사용하는프로세스의종류나도구의종류는부차적읶문제 아주짧은, 타임박스화된반복 (iteration) 을사용 Time Box 사용시 기갂을늘리지않고, 기능축소 규칙적읶개발흐름을지킬수있고, 기능의우선숚위파악이용이 - 24 -
RUP(Rational Unified Process) RUP 특징 프로세스를설명하는어휘와느슨한구조를제공하는프로세스프레임워크 반복적으로개발 요구사항관리 컴포넌트아키텍처사용 시각적모델링 품질의지속적으로관리 변경사항관리 RUP 단계 도입 (inception): 프로젝트에대한초기평가를실시 발단 (elaboration): 주요유스케이스를식별하고, 시스템의아키텍처를앆정화 구축 (construction): 시스템구축을수행 전이 (transition): 배치, 사용자교육과같은홗동들을수행 - 25 -
프로젝트에적당한프로세스맞추기 모든프로젝트에적합한하나의프로세스는존재하지않음 프로젝트개발은다양한요읶에의존 예 ; 구축시스템종류, 사용하는기술, 위험의특성등 프로세스를사용하면서, 이를조정하여점차적으로프로젝트에적용 적게가지고시작 반복주기소급 (iteration retrospective) 유지 (Keep): 계속적으로수행하고싶은것들 문제점 (Problems): 제대로동작하지않았던것들 시도 (Try): 개선시키고싶은것들 - 26 -
UML 을프로세스에맞추기 (1/2) 요구사항분석 UML 을사용하는가장중요한목적은사용자및고객과의사소통 설계 유스케이스 : 사용자와시스템의상호작용 클래스다이어그램 : 개념적읶관점을기술 액티비티다이어그램 : 조직의작업흐름 상태다이어그램 : 중요한생명주기를갖는개념을표현 보다기술 (technical) 적읶내용들을보다상세하게다이어그램상에표현 클래스다이어그램 : 클래스와이들의관계를소프트웨어관점에서기술 시퀀스다이어그램 : 유스케이스의주요시나리오를기술 패키지다이어그램 : 큰스케읷의소프트웨어의구성 배치다이어그램 : 소프트웨어의물리적읶레이아웃 상태다이어그램 : 복잡한상태를가짂클래스의상태 - 27 -
UML 을프로세스에맞추기 (2/2) 문서화 UML은시스템의전반적읶문서화에적합 전반적읶시스템의상세한문서화는지양 상세한문서화는코드로부터생성 전반적으로시스템개발에유용한정보를제공하는것을위주로문서화수행 예 ) 패키지다이어그램 : 시스템의논리적읶로드맵 예 ) 배치다이어그램 : 높은수준의물리적읶그림 레거시 (legacy ) 코드를이해하기 익숙하지않은코드에대하여이해할수있도록도와줌 도구를사용하여시스템의상세한다이어그램을생성 - 28 -
개발프로세스선택하기 Martin 의선택 프로젝트의성공을원한다면반복적읶형태의개발프로세스를채택 위험요소를미리발견 XP 에대하여매우긍정적 - 29 -
개발프로세스사상 개발프로세스사상 요구사항 진척도 통합 II 통합 III 테스트 통합 III 분석 통합 I 테스트구현설계분석 통합 II 통합 I 시간 리스크 반복주기 #1 반복주기 #2 반복주기 #3 구현 설계 시간 - 30 -
UML 개발생명주기 (1/8) 개발 Process 고려사항 프로세스 유스케이스주도 아키텍쳐중심 반복 / 점진적프로세스중심 설명 System 에요구되는행동을파악 System Architecture 검증, 확인및 Test Project 관련자의의사소통 (Use Case 관련주요산출물활용 ) 개발중인 System 의개념화, 구축, 관리 진화 ( 변화 ) 내용을파악하고수행 (System Architecture 관련주요산출물활용 ) 반복프로세스는실행배포판을관리 점진적프로세스는 System Architecture 를지속적으로 통합하고개정배포판을작성 UML 은개발 Process 에독립적 - 31 -
UML 개발생명주기 (2/8) S/W 개발생명주기단계 각단계는반복적으로수행 단계 도입 (Inception) 발단 (Elaboration) 구축 (Construction) 전이 (Transition) 설명개발의시작점으로써대상요소들을정의발단단계로진입할수있는충분한근거파악제품 Vision과 Architecture를정의 System의요구사항의명료화, 우선순위결정, 기준선설정및 Test 기준설정요구사항의기능적행동과비기능적행동을명세화 S/W의작성및실행 Architecture 기준선으로부터전이의준비단계 Project에대한요구사항과평가기준의재검사위험요소들을제거하기위한자원의할당 S/W의사용자전달 System의지속적인개선, 결함제거배포판에새로운특성추가 - 32 -
UML 개발생명주기 (3/8) 개발프로세스 작업영역 단계 도입발단구축전이 비즈니스모델링 요구사항분석 / 설계구현테스트 요구사항 분석 / 설계 구현 테스트 배치 형상및변경관리 프로젝트관리 환경 반복주기 #1 반복주기 #2 반복주기 #3 반복주기 #4 반복주기 #5 반복주기 #6-33 -
UML 개발생명주기 (4/8) 단계별작업수행 단계 ( 기간 ) 도입 (10%) 발단 (30%) 구축 (50%) 전이 (10%) 반복 #1 반복 #2,#3 반복 #4,#5,#6 반복 #7 비즈니스모델링 요구사항 요구사항 요구사항 분석및설계 분석및설계 수행영역 구현 구현 테스트 테스트 테스트 배치 배치 배치 형상및변경관리 관리영역 프로젝트관리 환경 - 34 -
UML 개발생명주기 (5/8) 도입 (Inception) 단계 단계 도입발단구축전이 비즈니스모델링 요구사항 작업영역및 작업량 분석및설계 구현 테스트 배치 0 25 50 75 100 진척도 - 35 -
UML 개발생명주기 (6/8) 발단 (Elaboration) 단계 단계 도입발단구축전이 비즈니스모델링 요구사항 작업영역 및작업량 분석및설계 구현 테스트 배치 0 25 50 75 100 진척도 - 36 -
UML 개발생명주기 (7/8) 구축 (Construction) 단계 단계 도입 발단 구축 전이 요구사항 분석및설계 작업영역 및작업량 구현 테스트 배치 0 25 50 75 100 진척도 - 37 -
UML 개발생명주기 (8/8) 전이 (Transition) 단계 단계 도입 발단구축전이 요구사항 작업영역 및작업량 분석및설계 구현 테스트 배치 0 25 50 75 100 진척도 - 38 -
비즈니스모델링산출물 비즈니스모델링 도입발단구축전이 비즈니스모델링 요구사항 분석및설계 비즈니스비전조직도비즈니스용어집비즈니스규칙 구현 테스트배치형상및변경관리프로젝트관리 비즈니스유스케이스모델비즈니스보충명세서비즈니스객체모델비즈니스유스케이스실현비즈니스아키텍처업무담당자비즈니스엔티티 환경 - 39 -
요구사항산출물 요구사항 도입발단구축전이 비즈니스모델링 요구사항 분석및설계 비전수립 공통어휘파악 요구사항관리계획 구현 테스트 배치 담당자요청사항파악 ( 이전단계피드백포함 ) 유스케이스식별유스케이스우선순위부여유스케이스상세화 형상및변경관리 프로젝트관리 환경 - 40 -
분석 / 설계산출물 분석및설계 도입발단구축전이 비즈니스모델링 요구사항 분석및설계 아키텍처분석 아키텍처프로토타입구축 구현테스트배치형상및변경관리 아키텍처분석유스케이스분석설계매커니즘식별유스케이스설계서브시스템설계클래스설계데이터베이스설계설계검토아키텍처검토 프로젝트관리 환경 런타임아키텍쳐기술설계 분산기술설계 - 41 -
구현산출물 구현 도입발단구축전이 비즈니스모델링 요구사항분석및설계구현테스트배치 구현모델구조화시스템통합계획작성컴포넌트구현결함수정테스트컴포넌트와서브시스템구현단위테스트수행코드검토시스템통합 형상및변경관리 서브시스템통합 프로젝트관리 환경 - 42 -
테스트산출물 테스트 도입발단구축전이 비즈니스모델링 요구사항 테스트아이디어식별 테스트상세내용정의 분석및설계구현테스트배치형상및변경관리 테스트대상식별테스트아이디어식별테스트접근방법정의테스트환경구성정의테스트상세정의테스트구현테스트실패분석테스트결과결정 프로젝트관리 환경 테스트구현테스트결과분석테스트결과결정 - 43 -
배치산출물 배치 도입발단구축전이 비즈니스모델링 요구사항 분석및설계 구현 배치계획수립프로토타입 - 릴리즈노트작성 - 설치자료작성 테스트 배치 형상및변경관리 프로젝트관리 배치계획변경교육용자료작성지원자료작성릴리즈노트작성설치용산출물구성 환경 - 44 -
형상 / 변경관리산출물 형상및변경관리 도입발단구축전이 비즈니스모델링 요구사항 분석및설계 구현 CM 정책확립 CM 계획작성 CM 환경설정변경제어프로세스확립통합작업공간생성 테스트배치형상및변경관리프로젝트관리환경 개발작업공간생성변경수행및적용작업공간업데이트기준선생성기준선진행배치구성단위생성형상품목상태보고형상감사수행변경요청제출변경요청업데이트변경요청검토 - 45 -
프로젝트관리산출물 프로젝트관리 도입발단구축전이 비즈니스모델링 요구사항 프로젝트진행관리 / 위험관리 / 자원관리 분석및설계 구현 프로젝트개발계획위험요소관리계획프로젝트조직구성단계 / 반복주기계획 테스트배치형상및변경관리프로젝트관리 반복주기시작 / 진행 / 평가반복주기평가 스탭편성반복주기평가기준검토위험요소식별및평가단계마감준비반복주기계획작성반복주기계획검토 환경 프로젝트마감준비프로젝트수락검토 - 46 -
환경산출물 환경 도입발단구축전이 비즈니스모델링 요구사항분석및설계구현테스트배치 개발케이스작성프로젝트전용템플릿작성툴선정툴구성과설치검증 UI 가이드라인작성유스케이스모델링가이드라인작성설계가이드라인작성프로그래밍가이드라인작성 형상및변경관리 개발지원 프로젝트관리 환경 - 47 -
소프트웨어개발중요사항 중심적인 4 가지중요사항 의사소통Communication 단숚성Simplicity 피드백Feedback 자싞감Courage - 48 -
의사소통 Communication 질책을두려워하지않고프로젝트에대해자유롭게논의할수있는장을마련하는것이중요 작업견해논의 짝프로그래밍 Pair programming 반복적읶계획을수월하게수행할수있는가? - 49 -
단순성 Simplicity 현재프로젝트들이매우복잡한것이일반적이기때문에직관적이지못하는경우가발생 고객이원하는사항을잘전달하는것이중요 가능한단숚한설계, 기법, 알고리즘등 - 50 -
피드백 Feedback 프로젝트의짂행과정에서발생하는매우중요한과정 코드테스팅 고객의요구사항 부분적읶반복작업및결과물읶도 Delivery 짝프로그래밍 Pair programming / 지속적읶코드검토 모든코드에대한 단위테스트매일수행 시스템품질상태및 가치에대한피드백 시스템인도전날밤 중대한오류발견감소 - 51 -
자신감 Courage 문제에대해바른길이무엇인지적극적으로판단하는것에관한사항 수준이하의코드를가짂프로젝트에대한경험이있는가? 관리자나개발자가코드를변경하면시스템에어떤영향을미치는지걱정하는상황이라면? 단위회기테스팅 Unit Regression Testing 을통해코드에대한믿음을확보 리팩토링 Refactoring 을통한시스템의재구조화 테스트작업은코드에대한자심감을갖게해줌 Martin Fowler Refactoring 코드에좋지않은부분이보이면, 리팩토링해라! 좋지않은코드를버릴수있는자싞감 Courage 을가지고있어야한다. 문제있는코드는재작성하는것이좋다. - 52 -
실습 UML 툴소개및설치 1. UML 툴소개 2. EA 설치 - 53 -
UML 툴소개 칠판 sketch - 54 -
UML 툴소개 상용툴 EA (Enterprise Architect) RSA Together - 55 -
UML 툴소개 오픈소스툴 AndroMDA Eclipse UML Start UML Umbrello - 56 -
UML 툴소개 http://www.objectsbydesign.com/tools/umltools_bycompany.html - 57 -
EA 설치 (1/3) Enterprise Architect (30-day trial) 다운로드 URI: http://www.sparxsystems.com/ - 58 -
EA 설치 (2/3) - 59 -
EA 설치 (3/3) 바탕화면 >> Enterprise Architect 실행 >> Continue Trial >> Ultimate - 60 -
EA 레이아웃구성 (1/4) 레이아웃구성 Project Brower Toolbox Pan & Zoom Project Browser Toolbox Main View Pan & Zoom - 61 -
EA 레이아웃구성 (2/4) Project Browser Use Case View Dynamic View Logical View Component View Deployment View Custom View 위로 아래로 - 62 -
EA 레이아웃구성 (3/4) Pan & Zoom 확대 / 축소 Pan View - 63 -
EA 레이아웃구성 (4/4) Toolbox - 64 -