11
DCI Architecture Back into the User’s Head Facebook @권용훈 2015.02.13

DCI Architecture : Back to the User's Head

Embed Size (px)

Citation preview

Page 1: DCI Architecture : Back to the User's Head

DCI Architecture Back into the User’s Head

Facebook @권용훈 2015.02.13

Page 2: DCI Architecture : Back to the User's Head

사용자 머릿속의 개념모델을 시스템에 담자

사용자 머릿속의 시스템이란 특정상황에서 데이터의 순차적인 처리

Page 3: DCI Architecture : Back to the User's Head

흔한 SE 그들만의 추상화 내가 원한건 목걸이였는데.. 추상화된 목걸이?!

OOP

SW엔지니어 입장에서 지극히 당연하고 익숙한건데.. T-T 예) ‘나’를 추상화 하기 - 키, 몸무게, 출생지, 직업, 주소, 취미.. 구조화(X) - 부모님, 친구, 여친, 동료, 교회에서 내 역할과 행위흐름(O) 우린 정말 사람의 멘탈모델에 가깝게 프로그램을 만들고 있긴 한걸까?

난 어쨌든 목걸이라능.. ㅋㅋ

추상화 되었음.

마음의 문을 열라는..

예술가의 시선으로 보면 됨.

ㅋㅋ

ㅋㅋㅋ

ㅋㅋ

ㅋㅋ

ㅋㅋ

추상화

Page 4: DCI Architecture : Back to the User's Head

놓치고 있는 것 - OO시스템은 객체간 협업의 집합. but, 협업은 여러 객체들에 파편화되어 드러나지 않음. - 구조화와 복잡도를 낮추는 것에는 성공 but, 사용자 멘탈모델과 멀어지고 행위는 보이지 않음.

객체는 역할을 갖는다 객체는 상황마다 갖는 책임과 로직의 합

: 도메인, 데이터 관점으로 구조화해도 파편화.. T-T

Page 5: DCI Architecture : Back to the User's Head

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 강조

Page 6: DCI Architecture : Back to the User's Head

DCI Architecture : 상황에 따라 동일한 객체라도 수행역할이 달라짐.

Objects

What the system is What the system does

role

role

role

role

Use case

Context -full

송금 대출

Context -less

사용자 계좌

Page 7: DCI Architecture : Back to the User's Head

DCI Architecture 원리 : 시스템이란 특정 상황에서 순차적인 데이터의 처리

Context-ful

송금 대출

Context-less

사용자 계좌

[DCI 관련요소] - Data : 사용자 머리속 things. 계좌. 데이터처리 - Context : 특정상황. 누가 무엇을 하는지 정의 : Data에 role 주입 - Roles** : 사용자 머릿속 행위자(구분되는 책임) - Interaction : 시스템이 하는 것. 상호작용 : 특정 Context에서 Role획득 Data처리

[Context] - 송금

[Data] - 계좌 (잔액+- 처리 )

[Roles] - 송금계좌, 수취계좌

[Interaction] - 송금할 때 - 두 개의 계좌 필요. - 각 계좌에 송금, 수취 역할 부여 - 각 계좌는 송금시 책임/기능 수행

Page 8: DCI Architecture : Back to the User's Head

DCI Architecture : 송금 Context 구현 형태

Page 9: DCI Architecture : Back to the User's Head

프로세스

엔터티 엔터티

프로세스

• 프로세스 : 로직, 처리순서 • 엔터티 : 상태처리 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.

Page 10: DCI Architecture : Back to the User's Head

150명이 X000개 화면 개발! : 언제, 누가, 무엇을 어떻게 할 지 프로세스, 원칙 등 미확립.

DCI 적용합시다!! 이러진 말자 Orz

BCF로 쪼물딱 해 봄. • S화재 차세대 • S보험 차대 • H보험 M&A • L 차세대

이런 프로젝트들은 BCF로 Partitioning, classification 원칙, 프로세스가 확립되어 있고 개인/회사 차원 경험치 누적된 상태..

Page 11: DCI Architecture : Back to the User's Head

요상하게 신경 쓰인다.. : 현실에선 쓸데없지만 재미있음. 신경쓰이면 파 보는 것도.. :)