일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- C API
- 등록임대주택
- file open
- C++ API
- lua setup
- lua interpreter
- lua for windows
- 국토교통부
- file read
- lua install
- TCP/IP
- 프리미어 영상변환
- 월세
- 수도권주택공급
- file write
- 찾다죽는줄
- QT TCP
- 엑스퍼트생일축하해
- 티몬삼겹살데이
- meta table
- 중소규모택지
- 프리미어 영상저장
- Lua
- #신혼부부 #결혼준비 #신혼부부희망타운신혼부부특별공급
- FILE TRANSFER
- object
- 엑스퍼트2주년
- 청량리역한양수자인192
- #부동산전자거래 #부동산전자계약 #부동산계약 #부동산전자계약방법 #부동산전자계약하는법 #부동산계약방법 #부동산중개수수료 #부동산중개수수료아끼기 #부동산복비아끼기
- QTcpServer
- Today
- Total
Value Creator의 IT(프로그래밍 / 전자제품)
#5 UML 가장 많이 쓰이는 항목 - Use Case, Class Diagram, Sequence Diagram - 개념과 예제 본문
#5 UML 가장 많이 쓰이는 항목 - Use Case, Class Diagram, Sequence Diagram - 개념과 예제
valuecreatort 2019. 3. 25. 19:001. Use Case Diagram?
사용자 요구사항을 더 쉽고 효과적으로 도출하기 위해 사용한다.
주로 '기능 요구사항'을 작성한다.
아래는 각 단어의 의미이다.
의뢰인 : 시스템 개발을 의뢰한 사람.
개발자 : 시스템 개발을 하는 사람.
User : 시스템을 사용하는 사람.
Actor : 개발 대상이 아님. 개발할 시스템 외부의 존재.
Use Case : 개발 해야 하는 시스템의 단위 기능.
* Actor와 Use case 사이의 관계(Association)
1) 연관 관계 : Actor와 Use case를 연결하는 실선. Actor와 Use case 간의 교류가 이루어지고 있음.
* Use case와 Use case 사이의 관계
1) 포함 관계(Include)
→ 다른 Use case에서 기존의 Use case를 재사용할 수 있음
하나의 Use case를 수행할 때, 같은 기능을 가진 다른 Use case가 반드시 수행된다.
'포함 관계'인 경우 '기준 Use case'에 상관없이 항상 실행되는 이벤트이다.
2) 확장 관계(Extend)
→ 기존의 Use case에 진행단계를 추가하여 새로운 Use case를 만들어내는 관계
'확장 관계' 인 경우 '기준 Use case'의 조건이 만족해야만 실행되는 이벤트이다.
|
포함관계 |
확장관계 |
목적 |
여러 유스케이스에 공통적인 기능 표현 |
기준 유스케이스에 부가적으로 추가된 기능 표현 |
이벤트 흐름 |
1. 반드시 실행되는 유스케이스 2. 포함관계의 유스케이스 수행 결과가 향후 이벤트 흐름에 영향을 미친다. |
1. 조건에 따라 실행될 수도, 실행되지 않을 수도 있다. 2. 확장관계의 유스케이스 수행결과가 향후 이벤트 흐름에 영향을 미치지 않는다. |
* Actor 사이의 일반화 관계(Generalization)
일반화 관계 : 한 액터도 다른 액터에 해당된다. 한 액터가 다른 액터의 일종이다.
'일반화'를 사용하지 않은 경우와 '일반화'를 사용한 경우를 비교해보면 쉽게 알 수 있다.
1) 일반화를 사용하지 않은 경우
'회원'과 '비회원'이 같은 유스케이스를 사용하기 때문에 연관관계 실선이 많아진다.
복잡해보인다.
2) 일반화를 사용한 경우
'회원'과 '비회원'을 '고객'으로 일반화 하였다(묶었다). 연관관계 실선이 줄어들어서 보기 편하다.
* 유사한 기능을 가지는 여러 유스케이스의 경우
공통적인 이벤트 문장을 추출해서 별도의 유스케이스로 한꺼번에 표현한다.
아래 표의 1번, 2번을 묶는다. 3번, 4번, 5번을 묶어서 표현할 수 있다.
[기존]
대여 유스케이스 이벤트 흐름 |
반납 유스케이스 이벤트 흐름 |
1. 사서는 고객의 아이디와 패스워드를 도서관 시스템에 입력한다. | |
2. 도서관 시스템은 아이디와 패스워드로 고객의 정보를 확인하고 업무 종류를 선택할 수 있는 화면을 보여준다. | |
3. 도서관 시스템은 사서에게 도서 번호를 입력하기 위한 화면을 보여준다. | |
4. 사서는 도서 번호를 입력한다. | |
5. 도서관 시스템은 도서 목록에서 도서 번호가 유효한지 확인한다. |
[변경]
'고객확인' 유스케이스 |
1. 사서는 고객의 아이디와 패스워드를 도서관 시스템에 입력한다. 2. 도서관 시스템은 아이디와 패스워드로 고객의 정보를 확인하고 업무 종류를 선택할 수 있는 화면을 보여준다. |
'도서번호입력' 유스케이스 |
3. 도서관 시스템은 사서에게 도서 번호를 입력하기 위한 화면을 보여준다. 4. 사서는 도서 번호를 입력한다. 5. 도서관 시스템은 도서 목록에서 도서 번호가 유효한지 확인한다. |
* 유스케이스 다이어그램 만드는 단계
1단계 : 시스템 상황 분석(문제 기술서 작성)
2단계 : 액터 식별(행위자와 책임 확인)
※ 액터의 명칭은 특정 사람의 이름 사용하지 않는다.
고객, 관리자, 시스템과 같은 추상적 명칭을 사용한다.
3단계 : 유스케이스 식별(쓰임새, 시스템 특성 확인)
4단계 : 유스케이스 다이어그램 작성(정제할 부분, include, extend, generalization 확인)
※ 액터↔유스케이스, 유스케이스↔유스케이스(include, extend)
5단계 : 유스케이스 명세서 작성(유스케이스명, 액터명, 사전조건, 사후조건, 제약사항, 작업흐름, 시나리오)
6단계 : 유스케이스 실체화(클래스 식별, 통신관계 파악)
<2단계 : 액터 식별>
<3단계 : 유스케이스 식별>
<4단계 : 유스케이스 다이어그램 작성>
<액터와 유스케이스 관계>
<include 관계>
'대여'와 '반납' 유스케이스가 수행될 때는 반드시 '회원확인' 유스케이스가 선행(include) 되어야 한다.
<extend 관계>
'결제' 유스케이스로부터 '신용카드 지불' 유스케이스가 확장되는 형태로 이루어진다.
<완성된 유스케이스 다이어그램>
5단계 : 유스케이스 명세서 작성
* 유스케이스 명 : 회원가입
* 액터명 : 고객
* 유스케이스 개요 및 설명 : ...
* 이벤트 흐름
- 정상 흐름 : 사건의 주된 흐름
- 선택 흐름 : 사건의 주된 흐름 외의 수행 절차
6단계 : 유스케이스 실체화
요구사항 정의 활동의 산출물
필수 : 유스케이스 다이어그램, 유스케이스 명세서
선택 : 시퀀스 다이어그램, 액티비티 다이어그램
2. 클래스 다이어그램
클래스의 구성 요소: 클래스 이름, 속성, 메서드 (Class, Attributes, method)
클래스 이름 : 공통의 속성, 메서드 등을 공유하는 객체 집합
속성 : 클래스의 인스턴스가 보유할 수 있는 값의 범위
메서드 : 호출 제약사항 명세
인스턴스?
메서드의 종류
public ( + ) : 자신의 속성이나 동작을 외부에 공개
protected ( # ) : 상속된 파생 클래스만 엑세스 가능
private ( - ) : 구조체의 멤버 함수만 접근 가능. 외부에서 접근 불가.
(클래스) -> (객체 또는 인스턴스)
학용품 -> 연필, 볼펜, 지우개
명사 : 클래스, 속성
동사 : 메서드
연관관계의 다중성
다중성 표현 |
의미 |
1 |
한 객체와 연관된다. 표시 안함. |
0..1 |
0개 또는 1개 객체와 연관. |
0..* |
0개 또는 많은 수의 객체와 연관. |
* |
0..*와 동일. |
1..* |
1개 이상의 객체와 연관. |
1..12 |
1개에서 12개까지의 객체와 연관. |
1..2, 4, 11 |
1개에서 2개까지 또는 4개 또는 11개의 객체가 연관. |
* 연관관계 / 집합 관계 / 복합 관계 / 일반화 관계
연관 관계(Association) : 객체들이 서로 개념으로 연결됨
집합 관계(Aggregation) : 독립적인 구성 요소로 연관됨
복합 관계(Composition) : 영구적이며 강한 연관관계(서로 분리될 수 없음)
일반화 관계(Generalization) : 다른 의미로는 상속관계. 예를 들어 자동차의 한 종류로 버스, 트럭, 택시가 있다. 상위 항목(자동차)에 속하는 하위 항목(버스, 트럭, 택시)을 나열한 것이다.
자동차(엔진, 휠, 샤시) -> 집합 관계
엔진(카뷰레터, 피스톤, 플러그) -> 복합관계
자동차 -> 버스, 트럭, 택시 (일반화 관계)
* 의존 관계 (하나의 클래스가 또 다른 클래스를 사용하는 관계)
하나의 클래스에 있는 멤버 함수의 인자가 변할 때, 다른 클래스에 영향을 미치는 관계.
리모컨에 의해서 채널이 선택된다. 텔레비젼은 리모컨에 의존한다. 의존관계이다.
ex) 수업 -> 교수 (수업은 교수에 의존한다.)
전화기 -> 버튼 (전화기는 버튼에 의존한다.)
세탁기 -> 손잡이 (세탁기는 손잡이에 의존한다.)
자동차 -> 기어 (자동차는 기어에 의존한다.)
* 추상클래스와 인터페이스
<abstarct> : 추상클래스
<interface> : 인터페이스
* 실체화 관계
추상클래스나 인터페이스를 상속받아 자식클래스가 추상메서드 구현할 때 사용한다.
3. 시퀀스 다이어그램
메세지의 시간적인 흐름을 나타낸다.
객체가 메세지를 주고 받는다.
클래스 다이어그램을 동적 프로그래밍으로 설계할 수 있다.
시퀀스 다이어그램은 수직방향이 시간의 흐름을 나타낸다.
객체의 오퍼레이션과 속성을 상세히 정의한다.
시퀀스 다이어그램은 각 유스케이스별로 작성된다.
유스케이스에 필요한 객체가 주인공으로 등장한다.
객체간의 메세지를 통해서 유스케이스의 기능이 실현된다.
시간은 가장 윗부분에서 아래를 향해 흐르기 시작한다.
시퀀스 다이어그램 구성요소는 5가지이다.
구성 |
요소설명 |
액터 |
메세지를 시작하는 엘리먼트 |
객체 |
메세지를 송수신하는 객체 |
메세지 |
객체간 연결 |
Self 메세지 |
같은 객체에 대한 메서드(함수) 호출 |
제어 블록 |
제어문을 위한 루프 |
* 시퀀스 다이어그램 표기법
1) 객체
왼쪽에서 오른쪽으로 배열
2) 생명선
각 객체에서 아래로 뻗어나가는 점선
3) 활성화
생명선을 따라 나타나는 작은 사각형(객체가 수행하는 오퍼레이션 실행)
활성화 사각형의 길이는 오퍼레이션의 소요 시간
소요시간은 어림잡아 그린다.
4) 메시지
동기 메시지 : 송신 객체가 수신 객체의 오퍼레이션 완료를 기다려준다. (화살표 모양, 화살표 머리가 채워짐)
비동기 메시지 : 오퍼레이션 완료를 기다리지 않는다.(화살표 모양, 화살표 머리가 비어있음)
답신 메시지 : 수신 객체로부터 답신 메세지 요청하는 경우. 점선 끝에 화살표를 붙인 모양(화살표 머리가 채워짐)
'1. 프로그래밍 > 1) UML' 카테고리의 다른 글
#4 starUML 예제 프로그램 작성으로 익히기(생산관리 시스템) (0) | 2019.03.21 |
---|---|
#3 starUML 팁(1) Tips for UML (1) | 2019.03.21 |
#2 starUML 예제 프로그램 작성으로 익히기(수강신청 시스템) (0) | 2019.03.21 |
#1 starUML 시작하기(소개, 설치, 주요기능, Diagram, Use case, Class, Object) (0) | 2019.03.19 |