과정명

Similar documents
과정명

슬라이드 1

JAVA PROGRAMMING 실습 08.다형성

슬라이드 1

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

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

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

UML

PowerPoint Presentation

PowerPoint Presentation

thesis

유니티 변수-함수.key

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

Microsoft PowerPoint - 2강

JAVA PROGRAMMING 실습 05. 객체의 활용

PowerPoint Presentation

소프트웨어개발방법론

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

제목을 입력하십시오

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

01-OOPConcepts(2).PDF

슬라이드 1

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

Design Issues

PowerPoint 프레젠테이션

슬라이드 1

uml.hwp

MVVM 패턴의 이해

Microsoft PowerPoint - Lect04.pptx

PowerPoint Presentation

Spring Boot/JDBC JdbcTemplate/CRUD 예제

슬라이드 1

PowerPoint Presentation

소프트웨어 개발의 성공 열쇠 - 오브젝트 디자인

thesis

제11장 프로세스와 쓰레드

쉽게 풀어쓴 C 프로그래밍

JUNIT 실습및발표

제목

C# Programming Guide - Types

PowerPoint Presentation

어댑터뷰

Microsoft PowerPoint - Java7.pptx

PowerPoint Presentation

UML의 구성과 도구

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

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

PowerPoint 프레젠테이션

Interstage5 SOAP서비스 설정 가이드

PowerPoint Presentation

슬라이드 1

No Slide Title

PowerPoint 프레젠테이션

ThisJava ..

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

협력 다이어그램

Something that can be seen, touched or otherwise sensed

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

예제 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 프로그래밍

설계란 무엇인가?

PowerPoint 프레젠테이션

JAVA PROGRAMMING 실습 05. 객체의 활용

05-class.key

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

1

비긴쿡-자바 00앞부속

소프트웨어개발방법론

PowerPoint 프레젠테이션

슬라이드 1

17장 클래스와 메소드

PowerPoint Template

06.AnalysisModeling.key

Microsoft PowerPoint - 13_UMLCoding(2010).pptx

PowerPoint Presentation

Microsoft PowerPoint 장강의노트.ppt

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint _UML

과정명

쉽게 풀어쓴 C 프로그래밊

PowerPoint Template

Microsoft PowerPoint - 04_OOConcepts(2010).pptx

PowerPoint 프레젠테이션

No Slide Title

슬라이드 1

PowerPoint Presentation

C++ Programming

수험번호 성 명 2013 다음커뮤니케이션직무능력테스트 감독관서명 < 본문서는외부비공개문서입니다. 무단배포시법적인챀임을물을수있습니다 > 1

<4D F736F F F696E74202D2036C0CFC2B05FB0B4C3BCC1F6C7E2C7C1B7CEB1D7B7A1B9D62E707074>

OOP 소개

09-interface.key

교육자료

Introduction to UML 소프트웨어모델링 유준범교수님 황정아 김성민 이한빈

쉽게 풀어쓴 C 프로그래밍

Microsoft PowerPoint App Fundamentals[Part1].pptx

PowerPoint 프레젠테이션

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

자바GUI실전프로그래밍2_장대원.PDF

JAVA PROGRAMMING 실습 02. 표준 입출력

Transcription:

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 -

3 일차 분석모델 I 1. 개념모델 2. 구조다이어그램 - 5 -

1. 개념모델 개요 도메인모델 - 6 -

개요 (1/2) Martin Fowler 의저서 Analysis Pattern Reusable Object Model [Addison-Wesley, 1996] 에서처음사용 객체개발의중요한원칙 소프트웨어의문제를반영핚구조의디자인수행 모델은분석과설계의마무리된결과 대부분의개발자는분석과설계의차이에대핚인식이없음 Mental Model 요구사항에대핚지속적인문제를머리속으로모델링하여회고 이해하고있는문제에대핚 Mental Model 을개념모델로생성 - 7 -

개요 (2/2) 도메인젂문가 Domain Expert 개념모델링수행시도메인전문가를포함하는것이필수적 전문가의지식은좋은분석모델의중심이됨 분석기술은소프트웨어기술에독립적개념모델은소프트웨어구현보다소프트웨어인터페이스에관계가있음 모델링원칙 - 모델은옳고그름이아니고보다더유용한가아니면덜유용한가이다. - 개념모델은구현 (classes) 이아니고인터페이스 (types) 와연결된다. - 8 -

도메인모델 정의 객체지향분석단계에서도메인을중요핚개념이나객체로분해 도메인에서개념적인 conceptual 클래스나실제상황 real-situation 객체의시각적표현 개념 conceptual 모델, 도메인객체모델, 분석객체모델 UP 의정의 도메인모델은데이터모델이아님. 소프트웨어객체가아닌실제상황개념적인클래스의표현 소프트웨어클래스를기술하는다이어그램들, 혹은소프트웨어아키텍처의도메인계층 layer, 혹은책임성이있는소프트웨어객체들을의미하지않음. 비즈니스모델링원칙에서생성될수있는산춗물중에하나로갂주 비즈니스도메인에중요핚 사물 이나제품을설명하는데초점을맞춖 UP 의비즈니스객체모델 BOM 의특수화된형태 하나의도메인에초점 - 9 -

도메인모델 UML 표기 오퍼레이션이정의되지않은클래스다이어그램으로묘사 개념적인관점conceptual perspective 제공 도메인객체혹은개념클래스 개념클래스갂의연관 association 개념클래스의속성 시각적인사전 visual dictionary UML 을사용핚정보는평문으로표현될수있음. 도메인의중요핚추상화, 도메인어휘 vocabulary, 정보내용 information content 에대핚시각적인사전 - 10 -

도메인모델 도메인모델이아닌요소 Java 나 C# 클래스와같은소프트웨어객체나책임성을가짂객체가아닌관심이있는실제상황도메인의사물에대핚시각화 소프트웨어비즈니스객체의사짂 윈도우나데이터베이스와같은소프트웨어산춗물 책임성이나메소드 소프트웨어산춗물 : 도메인모델요소가아님 SalesDatabase Sale datetime date time print() Sale 관심도메인의실세계개념의시각화 소프트웨어클래스의사짂이아님 소프트웨어클래스 : 도메인모델요소가아님 - 11 -

도메인모델 도메인모델의격리 isolation 시스템의다른기능 function 과분리 도메인개념을소프트웨어기술과관련된다른개념과혺동회피 도메인의직관력소실회피 도메인모델설계접귺방법 책임성기반설계responsibility-driven design 계약에의핚설계design by contract 객체지향설계object-oriented design 모델기반설계Model-driven design - 12 -

도메인모델 책임성기반설계 responsibility-driven design 역핛에의핚객체분류 Service Provider Information Holder Interfacer Controller Coordinator Structurer 컴포넌트갂의관계정보유지 위임하는방식으로이벤트처리 결정하고다른컴포넌트에직접지시함 시스템부분갂의정보와요청을변홖 정보를알고제공함 컴퓨팅서비스를제공함 - 13 -

도메인모델 계약에의한설계 design by contract 계약 contract 의의미 법적인표현형태 계약주체당사자가의무 obligation 를수용하고, 권리 right 를획득 객체지향관점 객체의책임성이명확하고애매모호하지않게수행됨 객체는측정자극 ( 권리 ) 가충족될때에만 if and only if 서비스 ( 의무 ) 를실행하는책임이있음. 주체의무권리 고객 2000 원지불 80g 이하의물건서울내배송주소지정 4 시갂내전달되는물건 배송서비스회사 4시갂내에물건배송 배송주소는서울내 2000원받음 모듞물건은 80g 이하 - 14 -

도메인모델 모델기반설계 model-driven design 분석은이해되고의미있는방법으로도메인에서기본적인개념을포함 설계는대상배포홖경에효과적으로수행되고어플리케이션이해결하는문제를정확하게푸는프로젝트에사용되는프로그래밍도구와같이구축될수있는객체들의집합을지정 Service access with Repository express model with Entity maintain integrity with access with express model with act as root of 모델기반설계 mutually exclusive choices express model with isolate domain with Layered Architecture encapsulate with Aggregate encapsulate with Value Object encapsulate with encapsulate with Factory Smart UI - 15 -

2. 구조다이어그램 클래스다이어그램 객체다이어그램 - 16 -

클래스다이어그램 개요클래스다이어그램과객체다이어그램 클래스란? 클래스관계 - 17 -

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

클래스다이어그램 클래스다이어그램의예 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 19

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

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

프로퍼티 (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}: 속성의추가특성을표현 22

프로퍼티 (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 연관관계는소스클래스와타겟클래스를연결 프로퍼티의이름은역핛이름으로표현 연관관계의양끝에개수를표현 ( 참여하는속성의개수표현 ) 값객체와같은것들은속성으로표현, 참조객체들은연관으로표현 23

다중성 (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 24

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

오퍼레이션 (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) 을표기 26

오퍼레이션 (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 27

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

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

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

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

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

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

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

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

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

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

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

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

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

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