SlideShare a Scribd company logo
1 of 11
Download to read offline
DCI Architecture
Back into the User’s Head
Facebook @권용훈 2015.02.13
사용자 머릿속의 개념모델을 시스템에 담자
사용자 머릿속의 시스템이란
특정상황에서 데이터의 순차적인 처리
흔한 SE 그들만의 추상화
내가 원한건 목걸이였는데.. 추상화된 목걸이?!
OOP
SW엔지니어 입장에서 지극히 당연하고 익숙한건데.. T-T
예) ‘나’를 추상화 하기
- 키, 몸무게, 출생지, 직업, 주소, 취미.. 구조화(X)
- 부모님, 친구, 여친, 동료, 교회에서 내 역할과 행위흐름(O)
우린 정말 사람의 멘탈모델에 가깝게
프로그램을 만들고 있긴 한걸까?
난 어쨌든 목걸이라능.. ㅋㅋ
추상화 되었음.
마음의 문을 열라는..
예술가의 시선으로 보면 됨.
ㅋㅋ
ㅋㅋㅋ
ㅋㅋ
ㅋㅋ
ㅋㅋ
추상화
놓치고 있는 것
- OO시스템은 객체간 협업의 집합.
but, 협업은 여러 객체들에 파편화되어 드러나지 않음.
- 구조화와 복잡도를 낮추는 것에는 성공
but, 사용자 멘탈모델과 멀어지고 행위는 보이지 않음.
객체는 역할을 갖는다
객체는 상황마다 갖는 책임과 로직의 합
: 도메인, 데이터 관점으로 구조화해도 파편화.. T-T
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 강조
DCI Architecture
: 상황에 따라 동일한 객체라도 수행역할이 달라짐.
Objects
What the system is What the system does
role
role
role
role
Use case
Context
-full
송금
대출
Context
-less
사용자
계좌
DCI Architecture 원리
: 시스템이란 특정 상황에서 순차적인 데이터의 처리
Context-ful
송금
대출
Context-less
사용자
계좌
[DCI 관련요소]
- Data
: 사용자 머리속 things. 계좌. 데이터처리
- Context
: 특정상황. 누가 무엇을 하는지 정의
: Data에 role 주입
- Roles**
: 사용자 머릿속 행위자(구분되는 책임)
- Interaction
: 시스템이 하는 것. 상호작용
: 특정 Context에서 Role획득 Data처리
[Context]
- 송금
[Data]
- 계좌 (잔액+- 처리 )
[Roles]
- 송금계좌, 수취계좌
[Interaction]
- 송금할 때
- 두 개의 계좌 필요.
- 각 계좌에 송금, 수취 역할 부여
- 각 계좌는 송금시 책임/기능 수행
DCI Architecture
: 송금 Context 구현 형태
프로세스
엔터티 엔터티
프로세스
• 프로세스 : 로직, 처리순서
• 엔터티 : 상태처리
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.
150명이 X000개 화면 개발!
: 언제, 누가, 무엇을 어떻게 할 지 프로세스, 원칙 등 미확립.
DCI 적용합시다!!
이러진 말자 Orz
BCF로 쪼물딱 해 봄.
• S화재 차세대
• S보험 차대
• H보험 M&A
• L 차세대
이런 프로젝트들은 BCF로 Partitioning, classification
원칙, 프로세스가 확립되어 있고 개인/회사 차원 경험치 누적된 상태..
요상하게 신경 쓰인다..
: 현실에선 쓸데없지만 재미있음. 신경쓰이면 파 보는 것도.. :)

More Related Content

Similar to DCI Architecture : Back to the User's Head.

MVVM Pattern for Android
MVVM Pattern for AndroidMVVM Pattern for Android
MVVM Pattern for Androidtaeinkim6
 
Domain-Driven-Design 정복기 1탄
Domain-Driven-Design 정복기 1탄Domain-Driven-Design 정복기 1탄
Domain-Driven-Design 정복기 1탄현 수
 
Domain-Driven-Design 정복기 1탄
Domain-Driven-Design 정복기 1탄Domain-Driven-Design 정복기 1탄
Domain-Driven-Design 정복기 1탄Suhyeon Jo
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용중선 곽
 
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기Wonha Ryu
 
Clojurescript로 하는 함수형 UI 프로그래밍
Clojurescript로 하는 함수형 UI 프로그래밍Clojurescript로 하는 함수형 UI 프로그래밍
Clojurescript로 하는 함수형 UI 프로그래밍Sang-Kyu Park
 

Similar to DCI Architecture : Back to the User's Head. (6)

MVVM Pattern for Android
MVVM Pattern for AndroidMVVM Pattern for Android
MVVM Pattern for Android
 
Domain-Driven-Design 정복기 1탄
Domain-Driven-Design 정복기 1탄Domain-Driven-Design 정복기 1탄
Domain-Driven-Design 정복기 1탄
 
Domain-Driven-Design 정복기 1탄
Domain-Driven-Design 정복기 1탄Domain-Driven-Design 정복기 1탄
Domain-Driven-Design 정복기 1탄
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
 
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
NDC 2016, [슈판워] 맨땅에서 데이터 분석 시스템 만들어나가기
 
Clojurescript로 하는 함수형 UI 프로그래밍
Clojurescript로 하는 함수형 UI 프로그래밍Clojurescript로 하는 함수형 UI 프로그래밍
Clojurescript로 하는 함수형 UI 프로그래밍
 

DCI Architecture : Back to the User's Head.

  • 1. DCI Architecture Back into the User’s Head Facebook @권용훈 2015.02.13
  • 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] - 송금할 때 - 두 개의 계좌 필요. - 각 계좌에 송금, 수취 역할 부여 - 각 계좌는 송금시 책임/기능 수행
  • 8. DCI Architecture : 송금 Context 구현 형태
  • 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 원칙, 프로세스가 확립되어 있고 개인/회사 차원 경험치 누적된 상태..
  • 11. 요상하게 신경 쓰인다.. : 현실에선 쓸데없지만 재미있음. 신경쓰이면 파 보는 것도.. :)