DCI Architecture 남겨봄
- Trygve Reenskaug and James O. Coplien
- context-full과 context-less로 나눠서 context에 따른 role 주입
- 참고
: http://www.artima.com/articles/dci_vision.html
: http://www.sitepoint.com/dci-the-evolution-of-the-object-oriented-paradigm/
2. 사용자 머릿속의 개념모델을 시스템에 담자
사용자 머릿속의 시스템이란
특정상황에서 데이터의 순차적인 처리
3. 흔한 SE 그들만의 추상화
내가 원한건 목걸이였는데.. 추상화된 목걸이?!
OOP
SW엔지니어 입장에서 지극히 당연하고 익숙한건데.. T-T
예) ‘나’를 추상화 하기
- 키, 몸무게, 출생지, 직업, 주소, 취미.. 구조화(X)
- 부모님, 친구, 여친, 동료, 교회에서 내 역할과 행위흐름(O)
우린 정말 사람의 멘탈모델에 가깝게
프로그램을 만들고 있긴 한걸까?
난 어쨌든 목걸이라능.. ㅋㅋ
추상화 되었음.
마음의 문을 열라는..
예술가의 시선으로 보면 됨.
ㅋㅋ
ㅋㅋㅋ
ㅋㅋ
ㅋㅋ
ㅋㅋ
추상화
4. 놓치고 있는 것
- OO시스템은 객체간 협업의 집합.
but, 협업은 여러 객체들에 파편화되어 드러나지 않음.
- 구조화와 복잡도를 낮추는 것에는 성공
but, 사용자 멘탈모델과 멀어지고 행위는 보이지 않음.
객체는 역할을 갖는다
객체는 상황마다 갖는 책임과 로직의 합
: 도메인, 데이터 관점으로 구조화해도 파편화.. T-T
5. A New Vision of OOP
2009년에 발표 : http://bit.ly/1tEoOtG
James O. Coplien
Bell Lab, Hilside, PLoP 1-2 Org patterns,
Scrum/agile, Lean architecture…
Trygve Reenskaug
MVC Inventor(!!)
Back into the User’s Head
• OO시스템 가독성 향상
• 도메인(What the system is)과 행위(What the system does) 분리
• 사용자의 멘탈모델에 가까워 지기
• 시스템 행위는 상황(Context)에 따라 달라진다. Role 강조
6. DCI Architecture
: 상황에 따라 동일한 객체라도 수행역할이 달라짐.
Objects
What the system is What the system does
role
role
role
role
Use case
Context
-full
송금
대출
Context
-less
사용자
계좌
7. DCI Architecture 원리
: 시스템이란 특정 상황에서 순차적인 데이터의 처리
Context-ful
송금
대출
Context-less
사용자
계좌
[DCI 관련요소]
- Data
: 사용자 머리속 things. 계좌. 데이터처리
- Context
: 특정상황. 누가 무엇을 하는지 정의
: Data에 role 주입
- Roles**
: 사용자 머릿속 행위자(구분되는 책임)
- Interaction
: 시스템이 하는 것. 상호작용
: 특정 Context에서 Role획득 Data처리
[Context]
- 송금
[Data]
- 계좌 (잔액+- 처리 )
[Roles]
- 송금계좌, 수취계좌
[Interaction]
- 송금할 때
- 두 개의 계좌 필요.
- 각 계좌에 송금, 수취 역할 부여
- 각 계좌는 송금시 책임/기능 수행
9. 프로세스
엔터티 엔터티
프로세스
• 프로세스 : 로직, 처리순서
• 엔터티 : 상태처리
Ex) 계약 컴포넌트(프로세스 컴포넌트 + 엔터티 컴포넌트)
프로세스 : 계약 로직과 이를 처리하기 위한
프로세스, 엔터티 컴포넌트 호출/협업
엔터티 : 계약 관련 엔터티 처리 책임
엔터티
islandofData islandofData
보통의 Component Architecture 원칙 SI의 Component Architecture 실제
Method
Class
Component
Package
System
각 수준에서
Partitioning
& Classification.
구획화 방향성 정의
- Analysis Model
- Business modeling
with UML
- DDD
- Lean architecture
BCF(Oliver Sims, 1999)
BCF대신 DCI 적용?
: 원칙과 실제는 항상 다르잖슴 :) 공부 OK. 계약성 프로젝트 NO.
10. 150명이 X000개 화면 개발!
: 언제, 누가, 무엇을 어떻게 할 지 프로세스, 원칙 등 미확립.
DCI 적용합시다!!
이러진 말자 Orz
BCF로 쪼물딱 해 봄.
• S화재 차세대
• S보험 차대
• H보험 M&A
• L 차세대
이런 프로젝트들은 BCF로 Partitioning, classification
원칙, 프로세스가 확립되어 있고 개인/회사 차원 경험치 누적된 상태..