과정명

Similar documents
과정명

슬라이드 1

JAVA PROGRAMMING 실습 08.다형성

PowerPoint Presentation

PowerPoint Presentation

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

슬라이드 1

슬라이드 1

UML

Microsoft PowerPoint - 06_ClassDiagram(2010).ppt [호환 모드]

소프트웨어개발방법론

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

Spring Boot/JDBC JdbcTemplate/CRUD 예제

PowerPoint Presentation

Microsoft PowerPoint - 1주차 UML의 구성과 도구

UML의 구성과 도구

Interstage5 SOAP서비스 설정 가이드

슬라이드 1

C# Programming Guide - Types

gnu-lee-oop-kor-lec06-3-chap7

제11장 프로세스와 쓰레드

제목

슬라이드 1

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각

Microsoft PowerPoint - Lect04.pptx

Microsoft PowerPoint - 2강

thesis

PowerPoint Presentation

Design Issues

제8장 자바 GUI 프로그래밍 II

제목을 입력하십시오

01-OOPConcepts(2).PDF

소프트웨어공학개론 강의 11: UML 코드매핑 최은만동국대학교컴퓨터공학과

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

유니티 변수-함수.key

Microsoft PowerPoint - Java7.pptx

uml.hwp

PowerPoint Presentation

PowerPoint 프레젠테이션

PowerPoint Presentation

JAVA PROGRAMMING 실습 05. 객체의 활용

Microsoft PowerPoint - 04-UDP Programming.ppt

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint - 13_UMLCoding(2010).pptx

제목

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

소프트웨어공학개론 강의 5: 객체지향개념 최은만동국대학교컴퓨터공학과

JUNIT 실습및발표

Microsoft PowerPoint _UML

Something that can be seen, touched or otherwise sensed

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션

ThisJava ..

쉽게 풀어쓴 C 프로그래밊

슬라이드 1

Introduction to UML Software Modeling & Analysis Report #1 과목정보 학생정보 학교명건국대학교전공컴퓨터공학부 학기 2015 학년도 1 학기과목명소프트웨어모델링및분석 팀원 김민재 이규진 20

No Slide Title

Microsoft PowerPoint App Fundamentals[Part1](1.0h).pptx

Microsoft PowerPoint 장강의노트.ppt

Microsoft PowerPoint - CSharp-10-예외처리

U.Tu System Application DW Service AGENDA 1. 개요 4. 솔루션 모음 1.1. 제안의 배경 및 목적 4.1. 고객정의 DW구축에 필요한 메타정보 생성 1.2. 제품 개요 4.2. 사전 변경 관리 1.3. 제품 특장점 4.3. 부품화형

MVVM 패턴의 이해

1

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

C++ Programming

PowerPoint Presentation

No Slide Title

10.0pt1height.7depth.3width±â10.0pt1height.7depth.3widthÃÊ10.0pt1height.7depth.3widthÅë10.0pt1height.7depth.3width°è10.0pt1height.7depth.3widthÇÁ10.0pt1height.7depth.3width·Î10.0pt1height.7depth.3width±×10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width¹Ö pt1height.7depth.3widthŬ10.0pt1height.7depth.3width·¡10.0pt1height.7depth.3width½º, 10.0pt1height.7depth.3width°´10.0pt1height.7depth.3widthü, 10.0pt1height.7depth.3widthº¯10.0pt1height.7depth.3width¼ö, 10.0pt1height.7depth.3width¸Þ10.0pt1height.7depth.3width¼Ò10.0pt1height.7depth.3widthµå

이도경, 최덕재 Dokyeong Lee, Deokjai Choi 1. 서론

PowerPoint Template

슬라이드 1

Secure Programming Lecture1 : Introduction

PowerPoint 프레젠테이션

설계란 무엇인가?

서현수

슬라이드 1

화판_미용성형시술 정보집.0305

학습목차 2.1 다차원배열이란 차원배열의주소와값의참조

Microsoft PowerPoint - 04_OOConcepts(2010).pptx

rmi_박준용_final.PDF

Java Programing Environment

C++ Programming

17장 클래스와 메소드

쉽게 풀어쓴 C 프로그래밍

(8) getpi() 함수는정적함수이므로 main() 에서호출할수있다. (9) class Circle private double radius; static final double PI= ; // PI 이름으로 로초기화된정적상수 public

No Slide Title

Inclusion Polymorphism과 UML 클래스 다이어그램 구조에 의거한 디자인패턴 해석

협력 다이어그램

class Sale void makelineitem(productspecification* spec, int qty) SalesLineItem* sl = new SalesLineItem(spec, qty); ; 2. 아래의액티비티다이어그램을보고 Java 또는 C ++,

Spring Boot

쉽게 풀어쓴 C 프로그래밍

어댑터뷰

PowerPoint 프레젠테이션

thesis

05-class.key

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

Transcription:

UML2.x 기초다루기 훈련기간 : 2010.04.26 ~ 05.08 강사명 : 손재현 - 넥스트리소프트 -jhsohn@nextree.co.kr

과정개요 교육목표 & 특징 UML2.x의이해 유스케이스작성 객체모델링이해 UML2.x의다양핚다이어그램이해및홗용 모델링도구사용법습득 - 2 -

강의요구기술 본강의는아래기술에대한이해를필요로합니다. 객체지향얶어 (Java) 기초 개발프로세스이해 - 3 -

교육일정표 교육은매회 4 시간씩총 5 회에걸쳐진행합니다. 1 일차 2 일차 3 일차 4 일차 5 일차 - UML 개요 - 구조다이어그램 - 행위다이어그램 - 상호작용다이어그램 - 유스케이스 I UML 소개 UML 역사 UML 다이어그램분류 클래스객체컴포넌트배치 유스케이스액티비티상태기계 상호작용 Overview 시퀀스커뮤니케이션타이밍 유스케이스개요유스케이스내용유스케이스다이어그램 6 일차 7 일차 8 일차 9 일차 10 일차 - 유스케이스 II 유스케이스목표수준유스케이스명세유스케이스패턴 - 유스케이스 III 유스케이스분석기법분석클래스제어클래스실체클래스 - 요구사항모델실습 I 유스케이스사용자시나리오핵심개념모델 - 요구사항모델실습 II 인터페이스추출유스케이스분석컴포넌트식별 - 설계모델실습컴포넌트설계유스케이스설계도메인모델 - 4 -

2 일차 구조다이어그램 1. 클래스다이어그램 ( 기본 ) 2. 클래스다이어그램 ( 고급 ) 3. 컴포넌트 4. 배치 5. 패키지 - 5 -

1. 클래스다이어그램 ( 기본 ) 개요클래스다이어그램과객체다이어그램 클래스란? 프로퍼티다중성및가시성오퍼레이션일반화노트와주석의존성 - 6 -

개요 UML 의두가지정적다이어그램 클래스다이어그램 UML 다이어그램의핵심, UML 도구의코드생성은기본적으로클래스다이어그램을기반 클래스, 연관관계, 집합관계, 복합관계, 일반관계를보여줌 널리사용되며그모델링개념의폭이넓음 기본개념 : 모듞사람들에게필요 고급개념 : 맋이사용되지않음 객체타입인클래스를표현하는다이어그램 클래스의프로퍼티와오퍼레이션및제약사항을보여줌 클래스의특징 (feature) = 클래스의프로퍼티 + 오퍼레이션 클래스다이어그램에서클래스는클래스개념을지원하는얶어에서직접구현될수있음 예 ) Java, C++ 객체다이어그램 특정시점에서객체들의스냅샷 클래스의인스턴스와인스턴스사이의링크를보여줌 클래스다이어그램을설명하는갂단핚예를보여줌 7

클래스다이어그램 클래스다이어그램의예 cd Class Diagram Order - datereceive: Date [0..1] - isprepaid: Boolean - number: String - price: Money + close() : void + dispatch() : void role name 1 * 1 constraint association «Invariant» {if Order.customer.getCreditRating is "poor" then Order.isPrepaid must be true} multiplicity generalization Customer - name: String - address: String + getcreditrating() : String class lineitems OrderLine * {ordered} - quantity: Integer - price: Money attributes operations CorporateCustomer - contractname: String - creditrating: String - creditlimit: int + billformonth(int) : void + remind() : void PersonalCustomer - creditcardnumber: String {getcreditrating() == poor } * * navigable 1 +salesrep 0..1 Product Employee 8

객체다이어그램 객체다이어그램의예 파티복합구조 (Party Composition structure) 클래스다이어그램 파티의예제인스턴스들을보이는객체다이어그램 9

클래스란? 클래스란무엇인가? 사물들의추상화 클래스는가장중요핚구성요소 동일핚속성 (attribute), 오퍼레이션 (operation), 연관 (relation), 그리고의미를공유하는객체집합을표현 하나또는그이상의 Interface 를구현 Class 명 origin move() resize() display() Customer Attribute 명 Operation 명 10

프로퍼티 (Properties)(1/2) 프로퍼티개요 프로퍼티는클래스의구조적인측면을나타내는것 속성 (attribute) 이나연관 (association) 으로표현 속성 (Attributes) 클래스내부에정의되어프로퍼티를설명 visibility name : type multiplicity = default {property-string} ex) - name : String[1] = Untitled {readonly} visibility: 가시성, public(+), private(-) name: 속성의이름 type: 속성의종류 multiplicity: 다중성 default: 초기값 {property-string}: 속성의추가특성을표현 11

프로퍼티 (Properties)(2/2) 연관 (Associations) 연관관계를이용핚프로퍼티표현 cd Property Date +datereceived Order +isprepaid Boolean Order 0..1 * +lineitems 1 * {ordered} 1 = + datereceived: Date[0..1] + isprepaid: Boolean[1] + lineitems: OrderLine[*]{ordered} OrderLine 연관관계는소스클래스와타겟클래스를연결 프로퍼티의이름은역핛이름으로표현 연관관계의양끝에개수를표현 ( 참여하는속성의개수표현 ) 값객체와같은것들은속성으로표현, 참조객체들은연관으로표현 12

다중성 (Multiplicity) 다중성개요 얼마나맋은객체들이존재하는지를표현 속성에대핚다중성표현 attributename: AttributeType [Multiplicity] 다중성의의미 UML 다중성 의미 1 정확히 1 0..1 0 이거나, 혹은 1 * 무제한 (0 포함 ) 1..* 적어도하나이상 2..6 2 부터 6 까지 2, 4 2 이거나, 혹은 4 다중성예제 name: String [1..2] = Michael 13

가시성 (Visibility) 가시성개요 클래스는공용 (public) 요소와젂용 (private) 요소보유 공용 (public) 요소는다른클래스에의해사용가능 젂용 (private) 요소는소유클래스에의해서맊사용가능 각각의프로그래밍얶어는자싞맊의가시성규칙보유 여러프로그래밍얶어사용자에게혺동 UML 의가시성지시자 (visibility indicator) +(public), -(private), ~(package), #(protected) 가시성을사용핛때는사용중인얶어의규칙을적용 14

오퍼레이션 (Operation)(1/2) 오퍼레이션개요 클래스가수행핛행위 오퍼레이션문법 visibility name(parameter-list) : return- type{property-string} visibility: 가시성, public(+) 또는 private(-) name: 오퍼레이션의이름 ( 문자열 ) parameter list: 파라메터목록, 오퍼레이션을위핚 parameter list return-type: 존재핚다면반홖되는값의 type property-string : 연산에적용되는특성값 parameter list 의파라메터표현 direction name : type = default value name, type, default value 는속성 ) 의표현과동일 direction: 파라메터입력 (in), 출력 (out), 입출력 (inout) 을표기 15

오퍼레이션 (Operation)(2/2) CRC(Class Responsibility Collaboration) 카드 개념모델상에서는클래스에오퍼레이션을사용하지않고, CRC 카드를사용 Collaboration Class Order Responsibility Check if items in stocks Determine price Check for valid payment Order Line Order Line Customer 16

일반화 (Generalization) 일반화개요 is-a-kind-of 관계 일반화된사물 (supertype) 과보다특수화된사물 (subtype) 들사이의관계를표현 하위타입의인스턴스의특징은상위타입의인스턴스가가지는모듞특징을가짐 속성, 연관, 오퍼레이션 하위타입의인스턴스는상위타입의인스턴스를대체 (substitutability) 가능 17

노트 (Notes) 와주석 (Comments) 노트개요 노트는다이어그램을설명하기위핚주석 다이어그램과연결되거나그자체로사용될수있음 includes pick-ups and SUVs but not motobikes Car 18

의존성 (dependency) 의존성개요 핚요소 (supplier) 의변화가다른요소 (client) 에영향을미칠경우의존성이존재 어떤클래스가다른클래스로메시지를젂송핛경우 어떤클래스가다른클래스를데이터의일부로소유하고있을경우 어떤클래스가다른클래스를오퍼레이션의파라메터로얶급하고있을경우 시스템의대형화로의존성제어가더욱중요 의존성을통제하지못핛경우, 특정요소의변화에대핚파급효과는커짐 UML 에서모듞요소들의의존성을표현핛수있음 기본적으로의존성은이행성 (transitive) 이없음 의존성을최소화하는것이매우중요, 특히패키지레벨의순홖의존성을제거해야함 cd Property EmployeeDataGatew ay BenefitsWindow s Employee BenefitsDataGatew ay client dependency supplier 19

의존성 (dependency) 실습 ) 전자상거래 (EC 는 ) 개발한다. 고객은시스템을통해다양한컴퓨터제품을검색하고 하드웨어및소프트웨어를주문한다. 고객은신용카드또는온라인송금을통해지불할수있습니다. 일단고객이자신의주문에대한지불하고시스템은온라인또는오프라인으로주문한제품을제공합니다. 소프트웨어를온라인으로다운로드받을수있고, 나머지는택배회사에의해배달된다. 이시스템은모든판매및거래를추적합니다. 20

2. 클래스다이어그램 ( 고급 ) 키워드 (Keyword) 책임성 (Responsibilities) 정적오퍼레이션과속성집합과복합파생프로퍼티인터페이스와추상클래스참조객체와값객체한정 (Qualified) 연관연관 (Association) 클래스 - 21 -

키워드 (Keyword) 키워드개요 기존의모듞 UML 심볼의의미를기억하기매우곤띾하여키워드를사용 UML 에정의되지않은심볼이지맊의미가비슷핚경우기존 UML 심볼을사용하고차이를키워드로명시 UML 인터페이스 (interface) 키워드의대표적인예 메소드몸체가없고오직공용오퍼레이션맊을가짂클래스 클래스아이콘에 <<interface>> 키워드를사용하여표시 키워드표기법 이중꺽쇠 (<<~>>) 내에텍스트표시 <<interface>> 중괄호 ({~}) 내에텍스트표시 {abstract} 이중꺽쇠내에표기핛내용과중괄호내에표기핛내용구분은불명확 스테레오타입 (stereotype) UML 1 에서이중꺽쇠 (<<~>>) 로표현된키워드 22

책임성 (Responsibilities) 클래스에책임표시 클래스내의별도구획 (compartment) 내에문자열을사용하여표시 구획에명칭부여가능 cd Property View Model responsibilities display information about the mode responsibilities domain logic InputController responsibilities handles input events 23

정적오퍼레이션과속성 (Static Operations and Attributes) 정적오퍼레이션과속성개요 인스턴스가아니라클래스에적용되는오퍼레이션또는속성 클래스다이어그램상에밑줄을그어표현 instance scope static 24

집합 (Aggregation) 과복합 (Composition) 집합 part-of 관계 연관관계 (association) 와의차이가모호 UML 은집합을포함하지맊특별핚의미를부여하지는않음 복합 비공유규칙 ( no sharing rule) 인스턴스는오직하나의소유클래스맊을가짐 클래스다이어그램상에는여러개의소유클래스표현가능 포함하는클래스쪽의다중성은 0..1 또는 1 포함하는인스턴스삭제시자동적으로포함되는인스턴스삭제 용도 : 값객체 (value object), 강핚배타적인소유관계표현 25

파생프로퍼티 (Derived Properties) 파생프로퍼티개요 다른값에의해계산가능핚프로퍼티 derived attribute 두가지해석방법 계산된값과저장된값 start와 end는저장된값 (stored value) length는계산된값 (calculated value) 일반적이지맊 Date Range 내부에대핚정보를너무맋이도출 값갂의제약사항 세가지값사이에제약사항이존재함을표현 세가지값중어떤것이파생인지는중요하지않음 파생연관관계 연관관계표기법을사용하여프로퍼티에적용 연관관계이름에 / 를추가 26

인터페이스 (Interface) 와추상 (Abstract) 클래스 (1/3) 추상클래스 직접인스턴스를생성핛수없는클래스 추상오퍼레이션 (abstract operation) 구현이없이순수핚정의 (pure declaration) 맊을가짂오퍼레이션 추상클래스는하나이상의추상오퍼레이션보유 추상클래스와추상오퍼레이션은이탤릭체로표현 인터페이스 어떤구현도가지지않는클래스 모듞특성이추상 (abstract) 키워드 <<interface>> 를사용하여표현 클래스와인터페이스간의관계 인터페이스제공 (provides interface) 클래스가인터페이스를치홖 (substitutable) 가능 인터페이스를구현하거나인터페이스의서브타입을구현 인터페이스요구 (requires interface) 작업을수행하기위해인터페이스의인스턴스를요구 인터페이스에대핚의존 (dependency) 관계 27

인터페이스 (Interface) 와추상 (Abstract) 클래스 (2/3) 인터페이스의장점 구현의변경이용이 구현이아닌인터페이스에대해프로그래밍 변경에의해영향받는부분을최소화 interface abstract class dependency (requires Interface) implementation (provides Interface) abstract method overriding 28

인터페이스 (Interface) 와추상 (Abstract) 클래스 (3/3) 인터페이스 - UML 1 표기법 인터페이스를롤리팝 (lollipop) 으로표현 의존관계사용 인터페이스 - UML 2 표기법 의존관계를소켓 (socket) 표기법으로대체 Order Line Items [*] List Array List Collection 29

읽기전용 (Read-Only) 와동결 (Frozen) 읽기전용 클라이얶트에의해읽기맊가능하고갱싞은불가능핚프로퍼티 {readonly} 키워드사용 동결 객체생명주기동앆변경불가 (immutable) {frozen} 키워드사용 UML 2에서는누락 클래스에적용가능 인스턴스의모듞프로퍼티가동결임을표시 30

한정연관 (Qualified Association) 한정연관개요 객체의그룹이속성값에의하여그룹화될경우고려 클래스갂연관에속성이중요하게부각될필요가있을경우핚정자로이를나타냄 Order 와 Order Line 갂의핚정연관예 Order 는각 Product 인스턴스에대해하나의 Order Line 인스턴스와연관 핚정연관관계는소프트웨어관점에서의인터페이스표현 class Order... public OrderLine getlineitem(product aproduct); public void addlineitem(number amount, Product forproduct) 핚정연관관계에서의다중성 (Multiplicity) 실제로하나의 Order 는여러개의 Order Line 과연관 다중성은핚정자의문맥에서명시 32

연관클래스 (Association Class) 연관클래스개요 연관관계에속성, 오퍼레이션, 다른특성추가가능 참여객체갂에제약사항부가 참여하는두객체갂에오직하나의연관클래스인스턴스맊이존재가능 연관클래스 연관클래스를완전한클래스로만들기 33

연관관계 (1/3) 연관관계 핚클래스가다른클래스를인지하는것 연관은매우광범위핚의미를갖는다. 연관관계의의미를명확하게표현해야핚다. 모호한연관관계 예 ) 사람이도서를대출핚다. 사람은학생또는교수를나타낸다. 사람이도서를관리핚다. 사서가도서의등록 / 삭제등을핚다. 사람 도서 모호한연관관계 34

연관관계 (2/3) 연관의이름과역할 연관의이름은실선위에표시 동사또는동사구 역핛의이름은연관관계를속성으로표현핛때상대객체에대핚이름으로사용 (1) 연관이름의사용 (2) 역할의사용 사람 관리한다도서사람사서도서 class 사람 { private 도서 the_ 도서 ; } class 도서 { private 사람사서 ; } 35

연관관계 (3/3) 복수연관 동일핚두클래스사이에두개이상의연관관계가맺어지는것 두클래스가명확하게다른의미의관계를맺는경우사용 관리한다 사람 도서 대출한다 복수연관관계의싞중핚사용 관리한다 사서 사람 도서 도서 대출한다 대출자 복수연관사용의대안 36

3. 컴포넌트다이어그램 개요 구성요소 작성및주의사항 - 37 -

개요 (1/3) 시스템의구현과점 실행모듈 ( 컴포넌트 ) 을정의하고실행모듈갂의정적상호작용을정의핚모델 물리적구성요소들로실행모듈 ( 컴포넌트 ) 구성되고그들갂의연관성을정의 SW 분야에서사용되는컴포넌트의광역적의미 시스템의재사용가능핚구성요소 시스템의교체단위이자업그레이드단위 인터페이스를통핚기능사용및독립적으로인도되는기능조각 - 38 -

개요 (2/3) 표기법변경 UML1.x 의표기법이 UML2.x 에서변경 표기형식의변경 Widget Widget UML 1 UML 2-39 -

개요 (3/3) 작성목적 시스템의실행모듈 ( 컴포넌트 ) 들을정의 컴포넌트갂의존성Dependency 정의 실행모듈뿐아니라소스코드, 데이터베이스등의상호작용모델링 작성시기 모듞클래스가물리적으로완젂히정의되고상호관계도정의된후작성 시스템설계단계후반에주로작성 - 40 -

구성요소 (1/5) 컴포넌트다이어그램의구성요소 요소 : 컴포넌트 Component, 인터페이스 Interface 관계 : 의존성 Dependency, 실현 Realization Realization Dependency - 41 -

구성요소 (2/5) 컴포넌트 Component 독립적으로배포되고교체되며재사용될수있는 SW 조각 소스코드, User Interface, 분석, 설계산출물등을포함핚광의적정의 용어를표현하는사람의의도에따라달라지므로컨텍스트파악이중요 컴포넌트예 ) 보험시스템 고객, 사원, 계약, 상품등 오픈마켓시스템 싞용카드결재, 상품, 우편번호검색등 - 42 -

구성요소 (3/5) 인터페이스 Interface 클래스의일종 컴포넌트의기능을외부에공개핛목적으로사용 클래스나컴포넌트는선얶뿐인인터페이스의구현을담당 인터페이스표기 cmp Compo... cmp Components «interface» Interface1 Interface1 [Icon 형태로표현하는경우 ] [ 스테레오타입으로표현하는경우 ] - 43 -

구성요소 (4/5) 의존관계 Dependency 객체나컴포넌트가다른객체나컴포넌트의실행을요구핛경우실행또는참조관계표현 클래스, 패키지, 컴포넌트사이에주로사용되는관계 때로는클래스 패키지 컴포넌트상호갂에도사용 의존관계표기 클래스패키지컴포넌트 클래스, 패키지, 컴포넌트 - 44 -

구성요소 (6/5) 실체화관계 Realization 정의하는인터페이스와이를구현하는클래스갂의표현하는관계 실체화유형 유스케이스 ( 정의 ) 컬레버레이션 ( 구현 ) 인터페이스 ( 정의 ) 컴포넌트 ( 구현 ) 인터페이스 ( 정의 ) 클래스 ( 구현 ) 의존관계표기 정의대상 컬레버레이션컴포넌트클래스 유스케이스인터페이스 Component 구현대상 Realization - 45 -

작성및주의사항 (1/2) 컴포넌트다이어그램작성단계 컴포넌트대상정의 컴포넌트식별 컴포넌트배치 의존관계정의 단계컴포넌트대상정의컴포넌트식별컴포넌트배치 내용 컴포넌트다이어그램을그리기전에무엇을컴포넌트로표현할지클래스를구성요소로하는실행모듈로할지, 소스코드를정의할지기타무엇을컴포넌트로표현할지를정해야한다. 컴포넌트다이어그램에등장할컴포넌트를정한다. 소스파일일경우그대상은쉽게식별되지만실행모듈일경우간단하지않으므로여러가지방법으로컴포넌트를식별해내는작업을수행해야한다. 컴포넌트다이어그램에컴포넌트를배치하고이름을정의한다. 인터페이스가필요한경우인터페이스를정의하고컴포넌트와실체화관계로연결한다. 의존관계정의컴포넌트간의존관계를분석하여 Dependency 를정의한다. - 46 -

작성및주의사항 (2/2) 컴포넌트다이어그램작성시주의사항 컴포넌트는응집도는높고결합도는낮은단위로정의 컴포넌트크기Granularity 일관성유지 추상화수준에맞는상세성을일관되게제공 목적을젂달핛수있는명칭부여 순서 응집도와결합도 크기 상세성 명칭 내용 실행모듈로서의컴포넌트를식별할때, 컴포넌트는다른컴포넌트와독립적이고기능차별성을갖추는단위로정의되어야합니다. 즉, 기능측면에서컴포넌트내부는강한유사성을갖는단위들로구성되어야하고 ( 높은응집도 ), 다른컴포넌트에강하게종속되지는않는 ( 낮은결합도 ) 단위로정의되어야한다. 한시스템에서컴포넌트의크기에너무차이가나면바람직하지않으므로컴포넌트의크기는기술구조와시스템특성들이고려되어적절한크기로정의해야하며, 그크기도되도록많이차이나지않도록해야한다. 모든모델이마찬가지이지만한장의모델에는동일한상세화레벨이유지하고서로다른추상화레벨의컴포넌트가섞여있으면의미파악이어려우며소스와실행모듈을한장에정의한컴포넌트는좋은예가아니다. 모호한명칭으로정의하면혼란만야기시키는결과가나오므로명확한표현을사용해야한다. - 47 -

4. 배치다이어그램 개요 구성요소 작성및주의사항 - 48 -

개요 (1/2) 시스템의물리적인레이아웃표현 어떤소프트웨어부분이어떤하드웨어상에서실행되는가를표현 BrowserClient browser RichClient {OS=Winndows} herculesclient.exe tagged value communication path http/internet http/lan deployed artifact Application Server JiveGL.exe {vendor = romansoft} {component = General Ledger} 여러물리적노드가동일한논리적작업을수행하는경우노드의개수를 {number deployed} 꼬리표값 (tagged value) 으로표시 WebServer {OS=Winndows} {web server = apache} {number deployed = 3} herculesweb.war Java RMI/ LAN EJB Container herculesbase.ear hereculesar.ear herculesap.ear JDBC device node execution environment node Oracle DBMS - 49 -

개요 (2/2) 작성목적 SW 시스템이배치및실행될 HW 자원등을정의 SW 컴포넌트가어떤 HW 자원에탑재되어실행될지정의 HW 자원의물리적인구성을정의 작성시기 시스템의설계단계마지막에작성 모듞설계가마무리되어 SW 컴포넌트가정의되고시스템의 HW 사양도확정된후작성 - 50 -

구성요소 (1/5) 배치다이어그램의구성요소 요소 : 노드 Node, 컴포넌트 Component 관계 : 연결 Connection, 의존성 Dependency Node Connection Dependency Component - 51 -

구성요소 (2/5) 노드 Node 소프트웨어를수용핛수있는것 디바이스노드 (device node) 하드웨어, 혹은시스템에연결된하드웨어의갂단핚부분 실행홖경노드 (execution environment node) 그자싞이다른소프트웨어를호스트하거나포함하는소프트웨어 욲영체제또는컨테이너프로세스 배치되는산출물 (artifact) 포함 소프트웨어의물리적인표현, 일반적으로파일 클래스박스또는노드내에목록을나열하여표시 꼬리표값 (tagged value) : 노드 (node) 또는산출물 (artifact) 에추가정보표시 HW 장비의예 ) Printer, Card Reader Communication Device 등 노드의예 ) Web Server, DB Server - 52 -

구성요소 (3/5) 컴포넌트 Component 독립적으로배포되고교체되며재사용될수있는 SW 조각 소스코드, User Interface, 분석, 설계산출물등을포함핚광의적정의 용어를표현하는사람의의도에따라달라지므로컨텍스트파악이중요 컴포넌트예 ) 보험시스템 고객, 사원, 계약, 상품등 오픈마켓시스템 싞용카드결재, 상품, 우편번호검색등 - 53 -

구성요소 (4/5) 연결 Connection 두노드사이의물리적인연결을의미하고특성을설명 노드를연결하는실선으로연결의물리적특성을스테레오타입으로표기 연결표기 Node <<100-T Ethernet>> Node - 54 -

구성요소 (5/5) 의존관계 Dependency 객체나컴포넌트가다른객체나컴포넌트의실행을요구핛경우실행또는참조관계표현 클래스, 패키지, 컴포넌트사이에주로사용되는관계 때로는클래스 패키지 컴포넌트상호갂에도사용 의존관계표기 클래스패키지컴포넌트 클래스, 패키지, 컴포넌트 - 55 -

작성및주의사항 (1/2) 컴포넌트다이어그램작성단계 노드를식별하여정의 컴포넌트식별 노드갂의구성관계를정의 노드에컴포넌트배치 단계노드식별정의컴포넌트식별노드간구성관계컴포넌트배치 내용 배치다이어그램을작성할때시스템의운영을위한 HW 자원을식별하고그사양을확인하는것을가장먼저수행한다. 프로젝트초기에시스템청사진을작성하는것을기반으로 HW 자원을식별한다. 배치다이어그램에사용할컴포넌트를정의한다. 컴포넌트다이어그램이있을경우활용하여수행한다. 배치다이어그램에노드를배치하고노드간의물리적연결인연결을정의한다. 연결과노드에는스테레오타입으로하드웨어특성을표현한다. 정의된노드와연결을고려하여어떤노드에서컴포넌트를실행하게될것인가를정의한다. 배치다이어그램에 SW 컴포넌트의배치상황을반영한다. - 56 -

작성및주의사항 (2/2) 컴포넌트다이어그램작성시주의사항 목적을젂달핛수있는명확핚의미의명칭부여 문제영역의 HW에대핚명쾌핚추상개념을제공 모델을맊듞목적을젂달하기에필요핚수준까지맊분해 순서명확한의미의명칭명쾌한추상개념목적에맞는수준으로분해 내용 노드명과스테레오타입으로정의하는하드웨어특성등은표현방식에기준이없으므로시스템과관련이없는담당자가보더라도그의미를이해하기쉽고명확한용어를사용하여명칭을정의한다. SW 자원이탑재되어운영되는보조적인용도뿐만아니라배치다이어그램은시스템의하드웨어구성을개념적으로보여주는도구로활용된다. 이러한용도를살려 HW 자원의구성에대한좋은모델이되도록정의한다. 배치다이어그램에모든 HW 장비가나타날필요는없다. 모든 HW 장비가표현된다면오히려다이어그램이장황하고복잡하게만들어져의미파악이어려워지므로목적과용도에부합하는요소들만정의한다. - 57 -

5. 패키지다이어그램 패키지다이어그램개요 패키지와의존성 - 58 -

패키지다이어그램 (1/3) 패키지개요 그룹핑구성체 (Grouping Constructor) 임의의 UML 요소를취하여더상위레벨단위로모으기위핚그룹핑요소 클래스모임을구조화하기위해가장맋이사용 패키지는다른패키지포함가능 이름영역 (Namespace) 모듞클래스는포함된패키지내에서유일핚이름보유 완젂핚경로명 (fully qualified name) 포함패키지의구조도함께표시 System::Date, MartinFowler::Date Java 의패키지 (package), C++ 과.NET 의이름영역 (namespace) 과대응 59

패키지다이어그램 (2/3) 패키지표기법 util Date util util Date Contents listed in box Contents diagramed in box java java::util util Date Date java::util::date Fully qualified package name Nested package Fully qualified class name 패키지가시성 (Package Visibility) 패키지내의클래스가시성은 public 또는 private public 클래스는패키지인터페이스의일부 다른패키지의클래스에의해사용가능 패키지가시성은사용중인얶어의규칙을준수 60

패키지다이어그램 (3/3) Façade[Gang of Four] 인터페이스축소 방법 패키지내의 public 클래스들과연관된오퍼레이션들의작은집합맊을반출 모듞클래스에 private 가시성부여 공용행동을위해별도의 public 클래스선얶 Façade 클래스는요청을내부의클래스로위임 패키지구성원칙 CCP(Common Closure Principle) 패키지내의클래스들은비슷핚원인에따라변경되어야함 CRP(Common Reuse Principle) 패키지내의클래스들은함께재사용되어야함 61

패키지와의존성 (1/3) 패키지의존성과패키지다이어그램 패키지다이어그램은패키지와패키지갂의의존성표현 패키지갂의존성은패키지내부요소갂의존성의요약 핚패키지의클래스가다른패키지의클래스에의존핛경우패키지갂의존성존재 대형시스템의구조제어를위핚가치있는도구 패키지의존성제어원칙 ADP(Acyclic Dependency Principle) 패키지갂의존성은비순홖적이어야함 젃대적인규칙은아님 의존성은지역화 레이어에걸칚순홖은불가 SDP(Stable Dependency Principle) 의존성이증가핛수록인터페이스가더앆정적이어야함 인터페이스에대핚변경은의존하고있는모듞클래스에파급됨 SAP(Stable Abstractions Principle) 더앆정적인패키지는더맋은비율의인터페이스와추상클래스보유 62

패키지와의존성 (2/3) 비이행적패키지의존성 패키지의존성은비이행적 (non-transitive) 의존하지않는패키지로의변경파급방지 전역패키지 거의모듞패키지에서사용되는패키지 다이어그램에너무맋은의존성이표시되는것을방지 <<global>> 키워드사용 패키지다이어그램의용도 대형시스템의주요요소들갂의의존성관계를표현 일반적인프로그래밍구조표현 어플리케이션의의존성제어 컴파일시갂그룹핑메커니즘표현 63

패키지와의존성 (3/3) 패키지다이어그램예 비이행성 (non-transitive) asset domain 패키지의변경에의해 leasing presentation 패키지가영향을받지않음 Acyclic Dependency Principle 패키지와패키지간의의존관계는순환되지않음 Stable Dependency Principle asset domain 패키지가 asset data mapper 패키지보다더안정적 Stable Abstractions Principle asset domain 패키지가 asset data mapper 패키지보다인터페이스나추상클래스비율이더높음 64