소프트웨어설계 UML 2014. 1학기
UML 다이어그램 다이어그램 이름 개략적인 모양 설 명 Use Case Diagram Class Diagram 3장 요구 분석 UML 다이어그램 다이어그램 이름 개략적인 모양 설 명 Use Case Diagram 특정 시스템 혹은 개체 내에서 기능을 표현하는 usecase들과 그 외부의 actor들 간의 관계(상호작용)를 표현한 다이어그램 Class Diagram Class 관련 요소들의 여러 가지 정적인 관계를 시각적으로 표현한 다이어그램 Package Diagram 관련된 클래스를 패키지로 grouping 하여 의존도를 낮추기 위하여 사용 객체지향 소프트웨어 공학, SciTech
UML 다이어그램 다이어그램 이름 개략적인 모양 설 명 Sequence Diagram Collaboration Diagram 3장 요구 분석 UML 다이어그램 다이어그램 이름 개략적인 모양 설 명 Sequence Diagram Instance 들이 어떻게 상호작용을 하는지를 묘사하는 다이어그램 Collaboration Diagram 순차 다이어그램과 같은 내용을 나타내지만 모양이 네트워크 형태임 State(Chart) Diagram 특정 개체의 동적인 행위를 상태와 그것들간의 transition을 통해 묘사하는 다이어그램 (일반적으로 클래스의 인스턴스에 대한 행위 묘사 객체지향 소프트웨어 공학, SciTech
UML 다이어그램 다이어그램 이름 개략적인 모양 설 명 Activity Diagram Component Diagram 3장 요구 분석 UML 다이어그램 다이어그램 이름 개략적인 모양 설 명 Activity Diagram State Diagram의 특별한 형태이며, 활동들의 수행 흐름을 묘사하는 다이어그램 (Flow Chart와 유사) 시스템의 동적 특징을 나타냄 Component Diagram Software component 사이의 의존관계를 묘사하는 다이어그램 Deployment Diagram 물리적인 컴퓨터 및 장비 등의 하드웨어 요소들과 그것에 배치되는 소프트웨어 컴포넌트, 프로세스 및 객체들의 형상을 묘사하는 다이어그램 객체지향 소프트웨어 공학, SciTech
StarUML 연습: Class Diagram 실습
StarUML 연습: Use Case Diagram 실습 [ATM System]
StarUML 연습: Sequence Diagram 객체(Object) 메시지(Message) 생명선(Lifeline) 시간의 흐름 실행 (Activation) 메시지(message) - 한 객체에서 다른 객체로 전송을 의미 - 한 객체의 생명선에서 다른 객체의 생명선으로 이동하는 것으로 표현. - 객체는 자기 자신에게 메시지를 보낼 수 있다. 실행(activation): 객체가 수행되고 있는 시간을 나타낸다. 사각형의 길이는 오퍼레이션의 실행 소요 시간을 나타낸다.
StarUML 연습: Sequence Diagram [실습] GUI는 키 입력을 운영체제에게 알린다. 운영체제는 CPU에게 그 사실을 알린다. 운영체제는 GUI를 갱신한다. CUP는 비디오 카드에게 GUI 갱신에 필요한 명령을 내린다. 비디오 카드는 모니터로 메시지를 전송한다. 모니터는 화면에 Alpha Numeric 문자를 표시하고, 사용자에게 피드백을 제공 한다.
Code Generation Generate Code from Class Diagram Java Profile 추가 [Model]->[Profiles] Java Profile을 Include함 Generate Code [Tools]->[Java]->[Generate Code] Package 선택-> 생성할 Class 선택->파일을 생성할 위치 선 택-> Option Setup 선택한 디렉토리에 .java 파일들이 생성됨
Reverse Engineering ` Generation한 Code로 Reverse Engineering [Tools]->[Java]->[Reverse Engineer] 소스 코드 선택 디렉토리 선택->자바 소스 파일 선택->모델을 생성할 Package 선택->옵션 선택 ` Generate Code Reverse Engineering
Use Case 일반적으로 Use Case는 작업의 시작부터 끝까지 전반적인 단계를 포괄해야 함 3장 요구 분석 Use Case 일반적으로 Use Case는 작업의 시작부터 끝까지 전반적인 단계를 포괄해야 함 사용자가 시스템과의 상호작용을 나타냄 시스템이 실행하는 계산이 아님 Use Case 는 특정 사용자 Interface 설계와 독립 적으로 작성되어야 함 Actor가 컴퓨터와 상호작용 하는 action만을 포함 하여야 함 Object지향 소프트웨어 공학, SciTech
시나리오 시나리오는 Use Case의 instance Use Case가 다음의 구체적인 조건에 일어난 것 특정 Actor 3장 요구 분석 시나리오 시나리오는 Use Case의 instance Use Case가 다음의 구체적인 조건에 일어난 것 특정 Actor 특정 시간 특정 데이터 Object지향 소프트웨어 공학, SciTech
Use Case를 표시하는 방법 이름 Actor 목적 시작조건 설명 관련 Use Case 단계적 사건의 흐름 종료 조건 3장 요구 분석 Use Case를 표시하는 방법 이름 Use Case에 대한 간단한 이름 Actor Use Case를 이용하는 사용자나 외부 시스템 목적 Actor가 무엇을 성취하려는가를 설명 시작조건 Use Case를 구동시키기 위하여 만족되어야 할 조건 설명 간단한 비정형적 설명 관련 Use Case 단계적 사건의 흐름 Actor의 action과 시스템의 반응은 2 컬럼으로 표현 종료 조건 종료된 후 시스템의 상태 Object지향 소프트웨어 공학, SciTech
3장 요구 분석 Use Case diagram Object지향 소프트웨어 공학, SciTech
확장(extension) 선택적인 interaction을 명시적으로 나타낼 때 또는 예외 적인 사례를 다룰 때 사용 3장 요구 분석 확장(extension) 선택적인 interaction을 명시적으로 나타낼 때 또는 예외 적인 사례를 다룰 때 사용 Use Case 확장을 분리함으로써 기본적인 Use Case의 표 현이 간단해 진다. Use Case 확장도 Use Case의 처음부터 끝까지 모든 단계 를 나열하여야 함 특수한 경우의 처리도 포함 Object지향 소프트웨어 공학, SciTech
일반화(generalization) Class diagram에서 super Class와 유사 3장 요구 분석 일반화(generalization) Class diagram에서 super Class와 유사 일반화된 Use Case는 여러 유사 Use Case를 표현 상세화 된 여러 Use Case가 유사 Use Case의 상 세한 내용을 제공 Object지향 소프트웨어 공학, SciTech
포함(inclusion) 여러 Use Case들 사이에 공통적인 부분을 표현 다른 Use Case들 안에 3장 요구 분석 포함(inclusion) 여러 Use Case들 사이에 공통적인 부분을 표현 다른 Use Case들 안에 일련의 action을 공유 다수의 Use Case 사이에 중복을 피함 하위 수준의 작업의 수행을 하위 수준의 목표로 표 현 Object지향 소프트웨어 공학, SciTech
3장 요구 분석 Use Case diagram 예 Object지향 소프트웨어 공학, SciTech
Use Case 작성 예… Use Case: 파일 불러오기 관련 Use Case: 다음 두 Use Case를 일반화 한 것임 3장 요구 분석 Use Case 작성 예… Use Case: 파일 불러오기 관련 Use Case: 다음 두 Use Case를 일반화 한 것임 파일 이름을 주고 불러오기 브라우징으로 불러오기 작업순서: Actor측 action 시스템측 반응 1. ‘불러오기....’ 명령을 선택 2. ‘파일 불러오기’ 다이얼로그를 창을 디스플레이 3. 파일 이름을 명시 4. 선택을 확인 5. 디스플레이에서 다이얼로그 창을 삭제 Object지향 소프트웨어 공학, SciTech
Use Case 작성 예… Use Case : 파일 이름을 주고 불러오기 관련 Use Case: 파일 불러오기의 상세화 3장 요구 분석 Use Case 작성 예… Use Case : 파일 이름을 주고 불러오기 관련 Use Case: 파일 불러오기의 상세화 사건의 흐름: Actor측 action 시스템측 반응 1. ‘불러오기....’ 명령을 선택 2. ‘파일 불러오기’ 다이얼로그 창을 3a. 텍스트 필드를 선택 디스플레이 3b. 파일 이름을 입력 4. ‘불러오기’를 클릭 5. 디스플레이에서 다이얼로그를 삭제 Object지향 소프트웨어 공학, SciTech
Use Case 작성 예 Use Case : 브라우징으로 파일 불러오기(include) 관련 Use Case: 사건의 흐름: 3장 요구 분석 Use Case 작성 예 Use Case : 브라우징으로 파일 불러오기(include) 관련 Use Case: 파일 불러오기 Use Case의 상세화 파일 브라우징 Use Case를 포함 사건의 흐름: Actor측 action 시스템측 반응 1. ‘불러오기....’ 명령을 선택 2. ‘파일 불러오기’ 다이얼 로그를 창을 디스플레이 3. 파일을 브라우징 4. 선택을 확인 5. 디스플레이에서 다이얼로그 창을 삭제 Object지향 소프트웨어 공학, SciTech
연습문제 Web-based ATM 시스템의 개발 은행 고객들이 Web 상에서 ATM의 기본적인 금융 트랜잭션을 수행 은행 직원을 위한 기능 고객의 추가/삭제 계좌의 생성/삭제 고객을 위한 기능 계좌 조회 트랜잭션 조회 현금 인출 예금 계좌이체
Use Case Diagram
Sequence Diagram (1/6) logIn customer
Sequence Diagram (2/6) addCustomer
Sequence Diagram (3/6) deleteCustomer
Sequence Diagram (4/6) addAccount
Sequence Diagram (5/6) showAccount
Sequence Diagram (6/6) transfer
System Sequence Diagram
Sequence Diagram Frame operator Loop: Opt (Alt) Par: Region: guard가 true일 동안 looping 반복 횟수 n값을 지정할 수도 있음 Opt (Alt) Guard가 true이면 수행 Par: Parallel running 구역 Region: 단 하나의 thread만 run할 수 있는 critical region
Sequence Diagram
Sequence Diagram
Sequence Diagram
Sequence Diagram
Sequence Diagram
Class Diagram Class public class Myclass { private sting Attribute1; private string attribute2; public string operation1(void); public string operation2(void); }
Class Diagram: Association Class MyClassB { private MyClassA obja; void CreateAobj() { Aobj = new MyClassA; } void CallAobj () { aobj.Aoperation1();
Class Diagram: aggregation Class MyClassAgg private MyClassA aobj; private MyClassB bobj; private MyClassC cobj; void aggjob(MyClassA obj1, MyClassB obj2, MyClassC obj3) { this.aobj = obj1; this.bobj = obj2; this.cobj = obj3; }
Class Diagram: composition Class MyClassComp private MyClassA aobj; private MyClassB bobj; private MyClassC cobj; void compjob(MyClassA obj1, MyClassB obj2, MyClassC obj3) { }
Class Diagram: dependency Class MyclassA { Public void operation1(void); Public void operation2(void); } Class MyclassB Public void createAobj() MyClassA Aobj = new MyClassA(); Aobj.operation1(); //이 method내부에서만 유지