소프트웨어설계 UML

Download Report

Transcript 소프트웨어설계 UML

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