소프트웨어개발방법론

Similar documents
소프트웨어개발방법론

논리적 구조 설계: 패키지도

시스템 순차도

Microsoft PowerPoint - se-ch06

객체들이책임을가지고협력하는것을어떻게설계할것인가? applying OO Design principles and the UML 책임을할당하고객체들사이의협력을설계하는것은, 설계시에가장중요하고창조적인작업이다. 2/55

소프트웨어개발방법론

Something that can be seen, touched or otherwise sensed

04-다시_고속철도61~80p

thesis

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

01-OOPConcepts(2).PDF

example code are examined in this stage The low pressure pressurizer reactor trip module of the Plant Protection System was programmed as subject for

PowerPoint 프레젠테이션

UML

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

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

유니티 변수-함수.key

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

APOGEE Insight_KR_Base_3P11

Microsoft Word - [2017SMA][T8]OOPT_Stage_1000 ver2.docx

MVVM 패턴의 이해

03.Agile.key

JAVA PROGRAMMING 실습 08.다형성

슬라이드 1

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

쉽게 풀어쓴 C 프로그래밍

13 Who am I? R&D, Product Development Manager / Smart Worker Visualization SW SW KAIST Software Engineering Computer Engineering 3

SW¹é¼Ł-³¯°³Æ÷ÇÔÇ¥Áö2013

PowerPoint 프레젠테이션

Mobile Service > IAP > Android SDK [ ] IAP SDK TOAST SDK. IAP SDK. Android Studio IDE Android SDK Version (API Level 10). Name Reference V

PowerPoint Presentation

Microsoft Word - [TP_3][T1]UTP.docx

PowerPoint Presentation

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

제11장 프로세스와 쓰레드

IKC43_06.hwp

Orcad Capture 9.x

1.장인석-ITIL 소개.ppt

엔젤입문 초급자과정

PowerPoint Presentation

금오공대 컴퓨터공학전공 강의자료

Microsoft Word - [2017SMA][T8]OOPT_Stage_1000_ docx

Microsoft PowerPoint Predicates and Quantifiers.ppt

Microsoft PowerPoint - 2강

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

No Slide Title

6자료집최종(6.8))

PowerPoint Presentation

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

DBPIA-NURIMEDIA

thesis

2002년 2학기 자료구조

02이용배(239~253)ok

JVM 메모리구조

Microsoft PowerPoint - 27.pptx

슬라이드 1

OOP 소개

11¹Ú´ö±Ô

06.AnalysisModeling.key


슬라이드 1

PowerPoint Presentation

IBM blue-and-white template

untitled

<4D F736F F F696E74202D E DB0FCB0E820BBE7BBF3BFA120C0C7C7D120B0FCB0E820B5A5C0CCC5CDBAA3C0CCBDBA20BCB3B0E8>

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

Interstage5 SOAP서비스 설정 가이드

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

DBPIA-NURIMEDIA

쉽게 풀어쓴 C 프로그래밍

PowerPoint 프레젠테이션


02 C h a p t e r Java

2Q SWG Teleweb Business Plan & 1Q Recovery Plan April 2, 2003

001지식백서_4도

yessign Version 3.1 (yessign). ccopyright 2009 yessign ALL RIGHTS RESERVED

슬라이드 1

C# Programming Guide - Types

ETL_project_best_practice1.ppt

Microsoft PowerPoint - Java7.pptx

Design Issues

Joseph Hwang, IBM Rational Software

final_thesis

PowerPoint Template

PowerPoint 프레젠테이션

<31332EBEC6C6AEB8B6C4C9C6C3C0BB20C8B0BFEBC7D120C6D0C5B0C1F6B5F0C0DAC0CE20BFACB1B82E687770>

06_±è¼öö_0323

DW 개요.PDF

ecorp-프로젝트제안서작성실무(양식3)

uml.hwp

03-최신데이터

Ver. 1.0 Unit Testing Plan for POS System Test Plan Test Design Specification Test Cases Specification Project Team Team 3 Date Team Inform

Chap7.PDF

09-interface.key

Convenience Timetable Design

Microsoft PowerPoint - 06-IPAddress [호환 모드]

학습영역의 Taxonomy에 기초한 CD-ROM Title의 효과분석

PowerPoint Presentation

JAVA PROGRAMMING 실습 05. 객체의 활용

Transcription:

Domain Model : 문제영역을시각화하기

목표 개념클래스식별 초기도메인모델작성 속성식별 명세개념클래스추가 개념관점과구현관점비교 / 대조 2

도메인모델의작성및쓰임새 Sample UP Artifact Relationships Domain Model Business Modeling date... Sale..* Sales... LineItem... quantity Requirements Process Sale conceptual 개념클래스 classes -용어, terms, concepts attributes, 개념, 속성 associations, 연관. Customer arrives... 2.... 3. Cashier enters item identifier. 4... Use Case Text Use-Case Model Operation: enteritem( ) Post-conditions: -... Operation Contracts the domain objects, attributes, 도메인객체 and associations, 속성, that 연관에 undergo 관한 state 변경 changes Cashier: Item ID:... elaboration of some 도메인 terms 모in the 델의 domain model 용어에대한정리 Glossary conceptual 도메인의 classes in the 개념클래 domain 스는 inspire 소프트웨 the names 어클래스 of some software 설계에영 classes 감부여 in the design Design Model : Register : ProductCatalog : Sale Design enteritem (itemid, quantity) spec = getproductspec( itemid ) addlineitem( spec, quantity )... 3

소개 도메인모델 소프트웨어객체설계에영감을불어넣는원천, 향후나올산출물들의필수입력 문제도메인의의미있는개념클래스 핵심아이디어도메인모델은소프트웨어컴포넌트가아니라실세계개념클래스들의표현이다. 소프트웨어클래스또는책임을갖고있는소프트웨어객체를나타내는다이어그램집합이아니다. 4

. 도메인모델 (/4) 도메인모델 관련도메인의개념클래스또는실세계객체들의시각적표현 UML 노테이션클래스다이어그램 : 도메인객체또는개념클래스, 개념클래스들간의연관 개념클래스의속성 concept 도메인 or 모델 domain 혹 object 은객체 association 연관 Sales LineItem quantity Contained-in..* 0.. Item Records-sale-of Stocked-in * 핵심아이디어 추상화의시각적인사전 attributes 속성 date time Sale Store address name Houses 가이드라인적절한수준의분석만하라. 분석무기력증에빠지지않도록. Paid-by Payment amount Captured-on..* Register 5

2. 도메인모델 (2/4) 도메인모델은소프트웨어컴포넌트모델이아니다. 도메인모델은개념을시각화 시각적사전 date time Sale visualization of a rea 실세계개념혹은 world concept in the 개체를시각적으로 domain of interest 표현 도메인모델 it is a not a picture of a software class avoid SalesDatabase software artifact; not part of domain model avoid date time Sale software class; not part of domain model print() 6

도메인모델 (3/4) 개념클래스 : 하나의생각, 사물혹은객체로세가지측면에서고려 상징 : 개념클래스의단어또는이미지 의도 : 개념클래스정의 확장 : 개념클래스가적용되는예제집합 date time Sale concept's symbol "A sale represents the event of a purchase transaction. It has a date and time." concept's intension sale- sale-3 sale-2 concept's extension sale-4 7

3. 도메인모델 (4/4) 도메인모델과분해 도메인의명확한이해 객체의분할 사람의생각과소프트웨어의표현과의차이수렴 판매도메인에서의개념클래스 Store Register Sale 객체지향과구조적분석의차이는함수의분할이아니라개념클래스의분할에있다. 8

4. 개념클래스식별 (/3) 많은상세개념클래스들이있는도메인모델이적은것보다는낫다 개념클래스식별기법. 기존의모델을재사용하거나수정한다. 2. 분류리스트사용 3. 명사어구식별 도메인모델생성절차. 개념적클래스를식별한다. ( 식별기법이용 ) 2. 이들을 UML 클래스다이어그램으로그린다. 3. 연관관계를추가한다. 4. 속성을추가한다. 9

5. 개념클래스식별 (2/3) 개념클래스분류리스트 ( 표 9.) 개념클래스카테고리 예 개념클래스카테고리 예 물리적, 유형객체 Register, Airplane 프로세스 SellingAProduct 사물의명세, 설계, 기술장소트랜잭션트랜잭션라인아이템 ProductSpec, FlightDescription Store, Airport Sale, Payment SalesLineItem 룰과정책카탈로그재정, 작업, 계약, 법적사건기록재정도구및서비스 RefundPolicy ProductCatalog Receipt, Ledger LineOfCredit, Stock 사람의역할다른사물의컨테이너시스템외부의컴퓨터 Cashier, Pilot Store, Bin, Airplane AirTrafficControl 매뉴얼, 문서, 참조문서, 책 DailyPriceChage List, RepairManual 추상명사개념 Hunger, Acrophobia 조직 SalesDepartment 이벤트 Sale, Meeting, 0

개념클래스식별 (3/3) 명사어구로개념클래스식별 조심스럽게적용 ; 명사 - 클래스매핑 x, 자연어의단어는애매모호 기본성공시나리오 ( 기본흐름 ). 고객은사려는상품이나서비스를갖고 POS 계산대에도착한다. 2. 출납원은새로운판매를시작한다. 3. 출납원은품목식별자를입력한다. 4. 시스템은품목을기록하고품목설명, 가격, 합계를보여준다. 가 격은가격룰에의해계산된다. 5. 시스템은세금을포함한총액을보여준다. 6.

6. 판매 도메인의개념클래스후보 (/2) 개념클래스카테고리리스트와명사어구분석 판매처리 요구사항 Register Item Store Payment ProductCatalog ProductSpecification SalesLineItem Cashier Customer Manager Register Item Store Sale Sales LineItem Cashier Customer Ledger Cash Payment Product Catalog Product Description 2

판매 도메인의개념클래스후보 (2/2) Report Objects 모델에영수증을포함하나? 영수증 : 판매및지불의기록, 상대적으로중요한개념. 반드시개념모델에나와야하나? 판매의기록, 다른정보로부터정보를추출, 중복정보 제외 비즈니스룰에서특별한역할 : 물품반품시반드시필요 포함 반품처리 시사용 3

도메인모델링가이드라인 (/3) 도메인모델을어떻게만들것인가?. 개념클래스카테고리리스트와현재요구사항에관련한명사식별테크닉을이용하여후보개념클래스를나열한다. 2. 도메인모델을후보개념클래스를그린다. 3. 메모리를유지해야할필요가있는관계를나타내기위해필요한연관관계를추가한다. 4. 자료요구사항을만족시키기위해필요한속성을추가한다. 4

7. 개념클래스다이어그램스케치하기 우측하단부분을열린채로그리기 속성등을확장가능하게 화이트보드 / 디지털카메라를이용한스냅샷 설계의힌트로만사용하기때문에나중에필요없을수있음 5

0. 도메인모델링가이드라인 (2/3) 명명및사물모델링 (Mapmaker) 지도제작자가어떻게일하는가를염두에두고도메인모델을만들어라 문제영역에있는이름을사용하라. 관련없는특징은제외하라 거기없는건추가하지마라 지도제작자는그영역에있는지명을사용한다, 지도제작자는지도목적에관련한것이아니면지도에서지운다. 지도제작자는실제있지않은것을추가하지않는다. 6

2. 도메인모델링가이드라인 (3/3) 개념클래스식별에서의공통된실수 개념을속성으로나타내는것! 실수를피하기위한기본원칙 : 실세계에서 X 를숫자나텍스트로생각하지않는다면 X 는속성이아니라개념클래스이다. store Sale or...? Sale Store phonenumber 7

유사한개념클래스들해결 Register vs. POST (/2) POST : Point-Of-Sale Terminal 등록기 Register 의역할 판매와지불내역을기록 도메인모델에서 Register vs. POST 기본원칙 : 도메인모델은절대적으로옳거나그른것은없다. 단지더유용하냐덜유용하냐의차이이다.; 즉상호의사소통의도구이다. POST : 익숙하고의사소통관점에서유용 Register : 보다추상적, 구현독립적이라는면에서유용 8

유사한개념클래스들해결 Register vs. POST (2/2) similar concepts with different names POST or? Register Records Records Sale * Sale * 9

Unreal 세계모델링 비즈니스도메인과소프트웨어시스템의유사성이거의없을때 통신분야 Message, Connection, Port, Dialog, Route, Protocol 도메인모델링가능, 높은추상화요구 20

3. 명세또는설명 ( 기술 ) 클래스 (/4) 상황 Item 인스턴스는가게에있는물리적인상품을나타낸다. 시리얼번호를갖고있다. Item 은설명, 가격, itemid 를갖고있는데다른데는저장되어있지않다. 그가게에서일하는모든사람은기억상실증을갖고있다. 실제물리적상품이팔릴때마다, 해당하는 Item 의소프트웨어인스턴스는 소프트웨어나라 에서삭제된다. 어느날특정상품 ( 오브젝버거 ) 이매진된날, 누군가들어와 오브젝버거는얼마예요? 라고묻는다면? 2

명세또는기술개념클래스 (2/4) 명세또는기술개념클래스필요 Item description price serial number itemid Worse ProductSpecification description price itemid Describes * Item serial number Better 22

명세또는기술개념클래스 (3/4) 언제명세개념클래스가필요한가? 아이템또는서비스의예가현재존재하는가에무관하게설명이있어야할때 인스턴스를삭제하는것이유지해야할정보의손실을가져올때 ( 삭제된인스턴스와정보간잘못된관련으로인해 ) 반복적또는중복정보를감소시킬때 23

명세또는기술개념클래스 (4/4) 서비스예 Flight date number time * Flies-to name Airport Worse date time Flight * Described-by FlightDescription Better number * Describes-flights-to Airport name 24

4 연관관계 클래스간연관관계의사용 일정기간동안기억해야할필요가있는지식 라인으로연결하고관계의이름과다중성을기록 예 ) 금전등록기는현재판매내역을기록한다. 현재판매내역의개수는하나또는없음. ( 다중성 ) 등록기객체는판매객체의정보의위치를알지만, 판매정보는등록기객체를알지못함 association 연관이름 항해성 ( 관찰가능성 ) Register Records-current 0.. Sale 다중성 25

다중성 어떤클래스의한객체에대해연관있는다른클래스의객체가몇개대응되는가혹은기억되어야하는가? * T zero or more; "many"..* T one or more..40 T one to 40 5 T exactly 5 3, 5, 8 T exactly 3, 5, or 8 26

다중연관관계 두클래스에대해연관관계가 2 개이상일때 항공노선 ( Flight ) 은공항과 2 개의연관을가짐 한항공노선에대해출발공항, 목적공항으로서의연관 Flight * Flies-to * Flies-from Airport 27

연관관계찾기규칙 범주 예제 A는 B의물리적인한부분 A는 B의논리적인한부분 A는 B에물리적으로포함 A는 B에논리적으로포함 A는 B를설명 A는트랜잭션또는보고서B의 line item A는 B에의해서파악되고 / 기록되고 / 획득 A는 B의멤버 Drawer-Register SalesLineItem-Sale Register-Store ItemDescription-Catalog ItemDescription-Item SalesLineItem-Sale Sale-Register Cashier-Store 28

연관관계찾기규칙 ( 계속 ) 범주 A는 B의조직적인하위단위 A는 B를사용또는관리 A는 B와의사소통 A는트랜잭션B와연관 A는다른트랜잭션B와연관된트랜잭션 A는 B의옆 (?) A는 B에의해서소유 A는 B와관련한이벤트 예제 Department-Store Cashier-Register Customer-Cashier Customer-Payment Payment-Sale SalesLineItem-SalesLineItem Register-Store Sale-Customer 29

연관의예 : POS 30 Register Item Store Sale CashPayment Sales LineItem Cashier Customer Product Catalog Product Description Stocks * Houses..* Used-by * Contains..* Describes * Captured-on Contained-in..* Records-sale-of 0.. Paid-by Is-for Logscompleted * Works-on..* 0.. Ledger Recordsaccountsfor

6. 속성 (Attributes) 클래스가가지는논리적인데이터 Sale 클래스는 datetime 속성이필요하다. 합계는판매된품목의집합 (SalesLineItem) 으로부터유도된속성 Store 는이름과주소가필요하다. 판매원은 ID 가필요하다. Sale attributes datetime / total : Money derived attribute 3

속성의표기법 가시성속성이름 : 데이터타입다중성 = 초기값 { 제한사항 } 가시성 : + (public), - (private), # (protected) 제한사항 : 속성이가지는제한사항 처음에는속성이름만으로시작! 구체화될수록데이터타입, 가시성, 다중성, 초기값, 제한사항을추가적으로기록 Sale - datetime : Date - / total : Money Math + pi : Real = 3.4 {readonly} Person firstname middlename : [0..] lastname Private visibility attributes Public visibility readonly attribute with initialization Optional value 32

유도된속성 다른클래스의속성으로부터유도될수있는속성 예 ) Sale 의합계는 SalesLineItem 의 quanty,price 에서유도가능 SalesLineItem 0.. Records-sale-of Item Each line item records a separate item sale. For example, tofu package. SalesLineItem 0.. Records-sale-of..* Item Each line item can record a group of the same kind of items. For example, 6 tofu packages. SalesLineItem 0.. Records-sale-of..* Item /quantity derived attribute from the multiplicity value 33

데이터타입 속성데이터타입 데이터타입 : 빌트인, 사용자정의 Boolean, Date, DateTime, Number, Character, String, Time 등의빌트인 Address, Color, Geometrics, PhoneNumber, SSN, Universal Product Code, ZIP, Enumerated Type 등 개념모델에서는구현과관계없이어떤타입이라도가능 복잡한개념을나타내는것은데이터타입이아니라클래스로! 개념적클래스는다른클래스의속성이아니라연관관계로표현! Worse Cashier name currentregister not a "data type" attribute Better name Cashier Uses number Register Worse Flight destination destination is a complex concept Better Flight Flies-to Airport 34

데이터타입 데이터타입은클래스혹은묵시적으로표현 추후설계때구체적으로반영 어떠한속성도외래속성을표현하지않음. OK Product Description ItemID id Store manufacturercode countrycode street street2 cityname... Address OK Product Description itemid : ItemID Store address : Address Worse Cashier name currentregisternumber a "simple" attribute, but being used as a foreign key to relate to another object Better name Cashier Works-on number Register 35

UML 기호, 모델링, 방법 : 다양한관점 (/3) UML 은단순히클래스다이어그램, 시퀀스다이어그램과같은다이어그램만단순히명시한다. 그위에어떤방법이나모델링관점은없다. 프로세스 (UP) 가 UML 에방법론적으로정의된모델문맥을적용한다. 관점은다르나같은표기법을사용. 본질적또는개념적관점 2. 명세서관점 3. 구현관점 관련도메인또는실세계의사물 소프트웨어추상화또는명세서와인터페이스를가진컴포넌트 특정기술과언어 ( 예. Java) 에관한소프트웨어구현 36

UML 노테이션, 모델링, 메소드 : 다양한관점 (2/3) amount Payment Pays-for date time Sale UP Domain Model Raw UML class diagra notation used in an essential model visualizing real-world concepts. Payment amount: Money getbalance(): Money... Pays-for Sale date: Date starttime: Time gettotal(): Money... UP Design Model Raw UML class diagra notation used in a specification model visualizing software components. 37

UML 기호, 모델링, 메소드 : 다양한관점 (3/3) 용어 : UML vs. 방법 개념클래스 : 실세계개념 / 사물, 본질적또는개념적관점. UP 도메인모델은개념클래스를포함 소프트웨어클래스 : 소프트웨어컴포넌트의명세혹은구현관점을나타내는클래스, 프로세스나방법에무관 설계클래스 : UP 설계모델의구성요소. 소프트웨어클래스와유사하지만, 설계모델에있는클래스. 구현클래스 : 자바같은객체지향언어로구현된클래스 클래스 : UML 에서와같이실세계사물 ( 개념클래스 ) 또는소프트웨어사물 ( 소프트웨어클래스 ) 를나타내는일반적용어 38

Lowering the Representational Gap(/2) 도메인모델은도메인단어와개념에대해시각적인사전을제공하는데소프트웨어설계에서명명시 직관 을사용한다. UP Domain Model Stakeholder's view of the noteworthy concepts in the domain. A Payment in the Domain Model is a concept, but a Payment in the Design Model is a software class. They are not the same thing, but the former inspired the naming and definition of the latter. This reduces the representational gap. This is one of the big ideas in object technology. amount Payment Payment amount: Money Pays-for inspires objects and names in Pays-for date time Sale Sale date: Date starttime: Time getbalance(): Money gettotal(): Money... UP Design Model The object-oriented developer has taken inspiration from the real w in creating software classes. Therefore, the representational gap between how stakeholders con domain, and its representation in software, has been lowered. 39

Lowering the Representational Gap(2/2) 표현상의차이 ( 의미상차이 ) 줄이기 : 심리상의모델과소프트웨어에서의표현간 도메인단어와소프트웨어단어를 : 로매핑 40

Example : The NextGen POS Domain Model Register Item Store Sale Sales LineItem Cashier Customer Manager Payment Product Catalog Product Specification 4

예 ) 부분적인도메인모델 42

Domain Models Within the UP(/2) Discipline Artifact Iteration Incep. I Business Modeling 도메인모델 s Requirements 유스케이스모델 s r Elab. E..E n 비전 s r 보충명세서 s r 용어집 s r Const. C..Cn Tran s. T..T 2 Design 설계모델 s r 소프트웨어아키텍춰모델 s 데이터모델 s r Implementation Implementation Model s r r Project Management SW Development Plan s r r r Testing Test Model s r Environment Development Case s r 43

Domain Models Within the UP(2/2) UP 비즈니스객체모델 (BOM) vs. 도메인모델 UP BOM 비즈니스작업자와비즈니스엔터티들이어떻게서로연관되고비즈니스를수행하기위해어떻게협업하는지에대한추상화 UP 에서도메인모델은 BOM 의부분집합또는특수화한 BOM 도메인에서중요한 사물 과프로덕트에초점을맞춘불완전한 BOM 44

Further Readings Object-Oriented Methods A Foundation: Odell 개념적도메인모델링의소개 Analysis Patterns : Fowler 도메인모델의패턴 Java Modeling in Color with UML : Coad 공통패턴식별 Object-Oriented Analysis from Textual Specifications : Moreno [Moreno97] 자연어분석예 45

UP Artifacts Business Modeling SUP Artifacts terms, concepts attributes, associations Use-Case Model Domain Model * * state changes in domain objects, attributes, associations Partial artifacts, refined in each iteration. elaboration of some terms in the domain model :System Requirements Glossary... text use cases use case diagrams system sequence diagrams system operation contracts Design Project Management Design Model Software Dev. Plan software classes in the domain layer of the design take inspiration from the names, attributes, and associations in the domain model Software Architecture Doc. Test Test Plan Environment Development Case 46