화면(UI) 기반 도메인모델 작성 2014년 8월
접근법 일반적인 접근법 우리의 접근법 도메인모델을 기반으로 UI와 데이터베이스와 애플리케이션 설계/구현 도메인모델을 기반으로 데이터베이스와 애플리케이션 설계/구현 ER모델 User Interface 도메인모델 애플리케이션 설계/구현
메타모델 메타모델: 모델의 모델 객체모델을 메타모델로 사용해서 도메인모델 작성 객체모델은 UML 클래스 다이어그램으로 표현
클래스 다이어그램에 표현되는 모델요소 클래스(Class), 데이터타입(Datatype), 인터페이스(Interface), 관계(Relationship) 클래스, 데이터타입, 인터페이스의 내부구조 속성(Attribute), 오퍼레이션(Operation) 관계(Relationship) 연관(Association), 의존(Dependency), 일반화(Generalization), 실현(Realization) 협력(Collaboration)
화면(UI)에 표현되는 화면(UI)요소들을 클래스 다이어그램에 표현되는 모델요소로 표현하는 것 우리가 하려는 것 화면(UI)에 표현되는 화면(UI)요소들을 클래스 다이어그램에 표현되는 모델요소로 표현하는 것 UI 구성요소 모델구성 요소
값이 작성되지 않은 UI – 값이 작성된 UI 값이 작성되지 않은 UI 값이 작성된 UI 클래스 다이어그램에 표현되는 모델요소 - 개념 값이 작성된 UI - 인스턴스 클래스 다이어그램에 표현되는 모델요소 - 개념 인스턴스에 해당하는 모델요소 - 객체(Object), 값(Value), 링크(Link) 추상보다 구체를 가지고 분석하는 것이 쉬움 객체(Object), 값(Value), 링크(Link), 협력객체
값이 작성된 UI를 가지고 어떻게 작성하는가를 통해 통해 구체적인 모델요소를 식별한다. 모델링 방법 1 값이 작성된 UI를 가지고 어떻게 작성하는가를 통해 통해 구체적인 모델요소를 식별한다. 구체적인 모델요소(인스턴스)에 대응되는 개념에 해당하는 모델요소를 식별한다. 개념에 해당하는 모델요소를 클래스 다이어그램에 작성한다.
객체와 값 객체 - 정체성(Identification)을 갖는 실체 값 - 정체성이 없는 실체
여러 개 중에 선택 가능한 화면요소를 통해 객체 식별 시스템이 제공한 목록에서 선택 검색, 선택 정체성 - 그 놈이 그 놈인 것을 알게 하는 것 정체성이 있다는 것의 의미 - 여러 개 중에 선택 가능하다는 것 여러 개 중에 선택 가능한 화면요소를 통해 객체 식별 시스템이 제공한 목록에서 선택 검색, 선택 객체에 대응되는 클래스를 식별해서 클래스 다이어그램에 표현 값 작성을 편하게 하려는 것에 주의 – 열거형, 첨부파일 선택 등 코드 – 코드를 관계로 관리할 것인지에 따라 달라짐, 코드는 가능한 복잡도를 낮추기 위해 관계로 관리하지 않음
그래픽 표현 클래스 속성부분과 오퍼레이션 부분은 별도로 자세히 다룸 - 사각형으로 작성 - 이름 부분, 속성 부분, 오퍼레이션 부분을 갖고, 각 부분은 구분 선으로 나뉨 속성부분과 오퍼레이션 부분은 별도로 자세히 다룸
실습 1) 클래스 식별 1. 선택 객체를 통한 클래스 식별 모델링 도구 설치 http://www.umlcert.com/product/rsmsmarteasy/
객체를 선택한다는 의미 링크 사용행위 생성행위 사용 생성 협력할 객체가 선택되었다는 것 협력이 요구된다는 것 어떤 협력에 어떤 객체가 요구되는지를 연결로 표현 생성 사용 객체 사용행위 생성행위
그래픽 표현 Person Company
협력객체에 대응되는 클래스를 식별해서 클래스 다이어그램에 작성한다. 모델링 방법 2 협력객체에 대응되는 클래스를 식별해서 클래스 다이어그램에 작성한다. 연결을 식별하고, 이에 대응되는 개념인 연관을 식별해서 클래스 다이어그램에 작성한다.
실습 2) 클래스 식별 2. 협력 객체를 통한 클래스 식별
화면 작성 화면에서 사용자가 작성하는 것 객체를 선택하려면 객체가 생성되어야 함 값만 작성 가능 객체는 선택만 가능 사용자가 작성한 값은 객체가 생성될 때 객체의 속성 값으로 작성
데이터타입(Data Type) Data Type Primitive Type Enumeration 데이터타입 값에 대응하는 개념 값의 유형에 따라 기본형(int, float 등, 문자열 포함), 열거형, 데이터타입(그룹값) Data Type Primitive Type Enumeration
그래픽 표현 기본타입 name : string 열거형 데이터타입 타입 이름을 그대로 작성 enumeration 키워드를 ‘<<‘ 와 ‘>>’ 사이에 작성 열거형 리터럴 부분에 열거형 리터럴을 열거 데이터타입 클래스 표현과 같은 방법을 사용 dataType키워드를 ‘<<‘ 와 ‘>>’ 사이에 작성 name : string isEqual : bool
<가시성>’/’ <이름> ’:’ <타입> <다중성> ‘=‘ <기본값> <특성문자열> static인 경우 속성 이름에 밑줄 추상: 이탤릭 + / age : int [0..1] = 0 {readOnly} Copyright © 2004-2013 by NWC Consulting
Copyright © 2004-2013 by NWC Consulting + / age : int [0..1] =0 {readOnly} - # + ~ 0..1 1 * 1..* Copyright © 2004-2013 by NWC Consulting
선택한 객체가 아닌 것은 모두 값으로 식별해서 클래스의 속성으로 작성한다. 값의 유형에 따라 대응되는 데이터타입을 작성한다. 모델링 방법 3 선택한 객체가 아닌 것은 모두 값으로 식별해서 클래스의 속성으로 작성한다. 값의 유형에 따라 대응되는 데이터타입을 작성한다. 속성의 나머지 부분을 작성한다.
실습 3) 속성 식별 및 작성
연관 전체와 부분 컴포지션(Composition), 애그리게이션(Aggregation) 전체와 부분의 연결도 연관으로 작성 전체와 부분은 포함 또는 구성의 의미를 가짐 컴포지션(Composition), 애그리게이션(Aggregation) 컴포지션은 직접, 애그리게이션은 참조 직접 포함되거나 직접 구성한다는 것은 전체를 제거하면 부분도 제거됨
전체와 부분의 생성 전체가 생성될 때 부분이 같이 생성 전체가 생성되고 난 후 부분이 생성 전체 속성 작성 시 부분 속성을 같이 작성 한 전체가 다수의 부분을 갖는 것이 일반적임 전체가 생성되고 난 후 부분이 생성 - 전체를 선택한 후 부분의 속성을 작성
그래픽 표현 컴포지션 어그리게이션
화면에 그리드가 있고 그리드의 한 행을 추가하기 위해 속성을 작성하는 부분을 식별해서 전체 부분의 개념을 식별한다. 모델링 방법 4 화면에 그리드가 있고 그리드의 한 행을 추가하기 위해 속성을 작성하는 부분을 식별해서 전체 부분의 개념을 식별한다. 식별된 전체부분의 관계가 컴포지션인지 애그리케이션인지 구별하여 클래스 다이어그램에 작성한다.
실습 4) 전체 부분 식별 및 작성
연관
그래픽 표현 재귀 다중
employer employee 를 위해 일한다 Person 0..1 * Company
컬레보레이션 클래스에서 협력하는 클래스로는 항상 일방향으로 작성 모델링 방법 5 일반연관의 방향성을 결정한다. 컬레보레이션 클래스에서 협력하는 클래스로는 항상 일방향으로 작성 컬레보레이션 클래스가 아닌 클래스들 사이에 작성된 연관의 경우에는 가능한 일방향으로 작성
전체부분의 방향성을 결정한다. 컬레보레이션 클래스들 사이에 동일 개념을 전체와 부분으로 분리한 것에는 양뱡향으로 작성 그렇지 않은 것에 일방향으로 작성 컬레보레이션 클래스가 아닌 클래스들 사이의 전체 부분에는 양방향으로 작성
실습 5) 연관 작성
일반화 생성되는 객체들이 속하는 전체집합의 개념과 부분집합의 개념 사이의 관계 도형 집합 = 원 집합 + 삼각형 집합 개념 정의의 재사용 도형 집합 = 원 집합 + 삼각형 집합 + 사각형 집합 공통속성 - 구체속성
실현 사용되는 객체들에 대한 전체집합의 개념과 부분집합의 개념 사이의 관계 역할 정의의 재사용 Drawing되는 도형들
추상클래스와 인터페이스 추상클래스 인터페이스 객체를 생성하지는 않고 생성된 객체를 묶는 전체집합에 해당하는 개념 다른 클래스의 객체들을 같은 사용(같은 역할)으로 묶는 개념
그래픽 표현 도형 삼각형 원 사각형
일반화된 개념들이 존재할 경우 해당 개념을 식별한다. 속성 중복이 발생하는 클래스들을 식별하고 일반화시킬 수 있는지 결정한다. 모델링 방법 6 일반화된 개념들이 존재할 경우 해당 개념을 식별한다. 속성 중복이 발생하는 클래스들을 식별하고 일반화시킬 수 있는지 결정한다. 상위클래스의 추상여부를 결정한다. 일반화 관계를 클래스 다이어그램에 작성한다.
연관된 클래스가 다르나 같은 역할로 묶어서 다루어야 하는 것을 식별한다. 실현 관계를 클래스 다이어그램에 작성한다.
실습 6) 일반화, 실현 작성
전체 부분
행위 식별 시스템의 목적 메뉴 그룹 메뉴 항목 버튼, 입력장치 조작 전체 행위 식별 사용자의 시스템 사용목적 유스케이스 수준의 행위 식별 메뉴 항목 사용자의 시스템 사용목적을 달성하기 위한 방법 서비스 수준의 행위 식별 버튼, 입력장치 조작 메뉴항목의 주 목적 반영 기능성 객체 선택, 값 작성, 행위 요청을 위한 것 외의 모든 것
실습 7) 행위 식별
상호작용 시나리오 작성 시퀀스 다이어그램으로 표현 Sender가 사용자인 경우 액터로 표현 Lifeline Sender 동기 비동기 리턴 객체/역할:클래스 Sender Receiver makeColor(r, g, b, a) Lifeline Message Sender가 사용자인 경우 액터로 표현
사용자의 행위 객체 선택 값 작성 요청 시스템의 행위 객체목록 제공 행위 수행
메뉴 항목으로 식별된 행위에 대해 시퀀스 다이어그램을 작성한다. 모델링 방법 7 메뉴 항목으로 식별된 행위에 대해 시퀀스 다이어그램을 작성한다. 사용자의 액션 중심으로 객체 선택, 값 작성, 요청만 작성한다. 객체 선택을 먼저 작성하고 값 작성을 그 뒤에 요청을 마지막에 작성한다. 값들은 모두 묶어서 ‘내역’으로 해서 작성한다. 부분 내역을 작성할 때는 전체 내역 작성과 분리해서 작성한다.
실습 8) 상호작용 시나리오 작성
행위수행 방법 상호작용 시나리오에 수행방법을 텍스트로 작성 수행방법모델링을 통해 작성
수행방법을 설명에 클래스가 요구되는 경우 클래스를 작성한다. 선택해야 할 것과 작성해야 할 것을 배경색 등으로 구분한다. 모델링 방법 8 수행방법을 설명에 클래스가 요구되는 경우 클래스를 작성한다. 선택해야 할 것과 작성해야 할 것을 배경색 등으로 구분한다.
실습 9) 텍스트로 수행방법 작성
객체의 책임 오퍼레이션 메소드(Method) 객체가 무엇을 해야 하는가? 객체의 행위 객체가 어떻게 책임을 수행하는가? 객체의 행위 수행방법
객체가 책임을 수행하려면 생성되어야 함 객체가 생성된 후에 수행 객체 생성, 갱신, 삭제는 객체의 책임이 아님 부분에 대한 생성, 갱신, 삭제는 전체의 책임 이 경우에도 생성, 갱신, 삭제는 외부에서 하고, 전체에 속한 부분의 추가, 제거(add, remove)만 다룸
객체의 책임 식별 전체 부분 행위 식별 수행방법 명세 부분 식별 책임 할당 (부분행위 식별)
행위수행방법 명세 도메인 전문가에 의해 표현 컵에 물 따르기 물병 뚜껑을 연다. 물병에서 물을 따라 컵에 물을 담는다. 도메인 전문가가 다루는 대상(자원)들이 수동적인 것으로 표현 컵에 물 따르기 물병 뚜껑을 연다. 물병에서 물을 따라 컵에 물을 담는다.
객체 모델 모든 객체는 능동적으로 자신의 책임을 수행
객체에 책임 할당 도메인 전문가 행위를 컬레보레이션 객체로 표현하고 객체를 다루어 하던 책임을 객체에 할당 뚜껑열기 물따르기 컵에 물 따르기 물병 뚜껑을 연다. 물병에서 물을 따라 컵에 물을 담는다. 물담기 컵에 물 따르기 물병.뚜껑열기 물병.물따르기 컵.물담기 객체지향적 사고
도메인 전문가를 통해 명세한 수행방법을 한 클래스를 대상으로 하는 수준까지 분할해서 작성한다. 모델링 방법 9 도메인 전문가를 통해 명세한 수행방법을 한 클래스를 대상으로 하는 수준까지 분할해서 작성한다.
실습 10) 수행방법모델링
의존 연관과 의존 의존과 인터페이스 의존성 주입(Dependency Injection) 연관은 협력해야 대상이 정해지면 반드시 그 객체와만 협력해야 함 의존은 협력에 참여해서 요구되는 역할만 할 수 있으면 어떤 객체라도 상관하지 않음 의존은 정보구조에 중점을 두는 도메인 모델에서는 등장하지 않음 의존과 인터페이스 인터페이스는 공통의 역할을 나타내는 개념 의존은 역할과 관련됨으로 직접적인 클래스에 의존하기 보다 인터페이스에 의존하도록 해야 함 의존성 주입(Dependency Injection) 직접적으로 의존하지 않도록 의존성 주입
End of Document