SlideShare uma empresa Scribd logo
1 de 14
Responsibility Driven Design -
CRC Card
2017/1/4
Taka Wang
Domain, Concept and Analysis
物件導向分析 (Object-Oriented
Analysis, OOA) 強調如何從問題領
域 (Problem Domain) 的描述建立
使用案例模型 (Use Case Model),
然後識別出物件,在抽象化成類別
後建立領域模型 (Domain Model),
最後指定類別責任來建立概念模型
(Conceptual Model)。
http://www.csie.sju.edu.tw/cm/course/softengineer/OOAD_10.ppt
http://web.ydu.edu.tw/~alan9956/doc100/100-02.sa/ooad-uml-chap04.pdf
Fowler's Category:
● Conceptual
● Specification (Abstract)
● Implementation (Concrete)
Object-Oriented Analysis
在物件導向分析階段並不用考量實作細節,我們主要是找出系統功能和服務,以
便能夠作出對的事情。事實上,物件導向分析就是在回答下列問題:
1. 軟體系統能做什麼事?
2. 在軟體系統中有哪些類別?
3. 每一個類別負責什麼?
use case diagrams
建立類別 (Class)
指定責任
http://web.ydu.edu.tw/~alan9956/doc100/100-02.sa/ooad-uml-chap04.pdf
CRC Card
CRC卡是 (Kent Beck 和 Ward Cunningham, 1989 OOPSLA) 發展的技術,CRC代
表類別(Class)、責任 (Responsibilities) 和合作 (Collaborators)
軟體物件有如人們具有責任 (responsibilities),有些
責任必需與他人合作 (collaborate) 才能完成工作
- Craig Larman from Applying UML and Patterns
CRC cards - 非正規物件導向發展技術
CRC Card
CRC cards - 非正規物件導向發展技術
CRC Card (3 inch x 5 inch)
http://cc.web2.ncut.edu.tw/ezfiles/26/1026/img/140/20050413_UML.pdf
CRC card methodology (1/2)
1. 挑一組相關 use cases (不是只針對單一的 use case 做模型),看起來有共同的底
層 (共同object types) 的 use cases 來 model。這樣提供情境讓我們可以討論。
2. 每個物件用一張卡片來表示。將有動作的物件卡片放在桌上。從 Actor 的 Trigger
開始。
3. 走過各個 use cases (scenario),將卡片取名,決定每個卡片的責任與如何處理
request,標示在卡片上。完成以後一組這樣的卡片就是一個物件模型。
Using CRC cards
物件模型的觀念與誤解
CRC card methodology (2/2)
4. 要測試這個模型好不好的方法是,改變一下 use case 的情景(假想需求變更),看
這組卡片是不是仍能完成這個情景,或是需要小調整一些責任,或是需要增加新的卡
片,或是要做更大的更動才能完成。最好的模型會最簡單,而又在最小的調整下應付
最多的需求變更。<<類似BDD,此手法跟DDD找BC方式呼應>>
5. 把這組卡片推到一邊(先不要丟掉,可能隨時要拿出來參考)。試著找出不同的模型
,加入新的卡片。讓這個設計不斷演化,不要忘了用前一步的方法測試新設計。
6. 把最後找出最好的模型記錄下來。記錄下主要的 responsibility 與 interaction。
ATM自動櫃員機 範例
ATM自動櫃員機 (1/4)
先抓出兩個 Domain Model
http://www.csie.sju.edu.tw/cm/course/softengineer/OOAD_10.ppt
ATM自動櫃員機 (2/4)
因為一個銀行客戶可以擁有1~2個
帳戶和一張金融卡,可以使用金融
卡號取得此帳戶的所有帳戶清單
ATM自動櫃員機 (3/4)
抓出剩餘的兩個 Domain Model
ATM自動櫃員機 (4/4)
建立
Conceptual Model
參考文獻
● http://www.csie.sju.edu.tw/cm/course/softengineer/OOAD_10.ppt
● http://web.ydu.edu.tw/~alan9956/doc100/100-02.sa/ooad-uml-chap04.pdf
● http://cc.web2.ncut.edu.tw/ezfiles/26/1026/img/140/20050413_UML.pdf
● Using CRC cards
● CRC cards - 非正規物件導向發展技術
● 物件模型的觀念與誤解
● http://www.csie.sju.edu.tw/cm/course/softengineer/OOAD_10.ppt
● https://www.cs.cmu.edu/~charlie/courses/15-214/2013-spring/slides/09_uml.
pdf (cmu cs. 15-214 Principles of Software Construction: Objects, Design and Concurrency)

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Spring Framework
Spring Framework  Spring Framework
Spring Framework
 
Testando uma aplicação com Arquitetura Hexagonal e Spring Boot
Testando uma aplicação com Arquitetura Hexagonal e Spring BootTestando uma aplicação com Arquitetura Hexagonal e Spring Boot
Testando uma aplicação com Arquitetura Hexagonal e Spring Boot
 
Dependency Injection
Dependency InjectionDependency Injection
Dependency Injection
 
The shift left strategy
The shift left strategy The shift left strategy
The shift left strategy
 
Basic design pattern interview questions
Basic design pattern interview questionsBasic design pattern interview questions
Basic design pattern interview questions
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Reactive programming by spring webflux - DN Scrum Breakfast - Nov 2018
Reactive programming by spring webflux - DN Scrum Breakfast - Nov 2018Reactive programming by spring webflux - DN Scrum Breakfast - Nov 2018
Reactive programming by spring webflux - DN Scrum Breakfast - Nov 2018
 
Testing Frameworks
Testing FrameworksTesting Frameworks
Testing Frameworks
 
Introduction to Design Pattern
Introduction to Design  PatternIntroduction to Design  Pattern
Introduction to Design Pattern
 
Adapter pattern
Adapter patternAdapter pattern
Adapter pattern
 
Maven Introduction
Maven IntroductionMaven Introduction
Maven Introduction
 
CI/CT/CD and Role of Quality Engineering
CI/CT/CD and Role of Quality EngineeringCI/CT/CD and Role of Quality Engineering
CI/CT/CD and Role of Quality Engineering
 
Mini curso de testes ágeis
Mini curso de testes ágeisMini curso de testes ágeis
Mini curso de testes ágeis
 
Facade Design Pattern
Facade Design PatternFacade Design Pattern
Facade Design Pattern
 
Angular.ppt
Angular.pptAngular.ppt
Angular.ppt
 
Projects In Laravel : Learn Laravel Building 10 Projects
Projects In Laravel : Learn Laravel Building 10 ProjectsProjects In Laravel : Learn Laravel Building 10 Projects
Projects In Laravel : Learn Laravel Building 10 Projects
 
Spring jdbc dao
Spring jdbc daoSpring jdbc dao
Spring jdbc dao
 
MPLS in DC and inter-DC networks: the unified forwarding mechanism for networ...
MPLS in DC and inter-DC networks: the unified forwarding mechanism for networ...MPLS in DC and inter-DC networks: the unified forwarding mechanism for networ...
MPLS in DC and inter-DC networks: the unified forwarding mechanism for networ...
 
Dependency injection ppt
Dependency injection pptDependency injection ppt
Dependency injection ppt
 
Top 40 MVC Interview Questions and Answers | Edureka
Top 40 MVC Interview Questions and Answers | EdurekaTop 40 MVC Interview Questions and Answers | Edureka
Top 40 MVC Interview Questions and Answers | Edureka
 

Semelhante a CRC Card

业务需求分析入门
业务需求分析入门业务需求分析入门
业务需求分析入门
zhoujg
 
软件设计原则、模式与应用
软件设计原则、模式与应用软件设计原则、模式与应用
软件设计原则、模式与应用
yiditushe
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
yiditushe
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
appollo0312
 
软件工程 第十一章
软件工程 第十一章软件工程 第十一章
软件工程 第十一章
浒 刘
 
项目中的知识管理
项目中的知识管理项目中的知识管理
项目中的知识管理
thinkinlamp
 
OOAD with Applications - Chapter 2
OOAD with Applications - Chapter 2OOAD with Applications - Chapter 2
OOAD with Applications - Chapter 2
Huan-Lin Tsai
 

Semelhante a CRC Card (20)

业务需求分析入门
业务需求分析入门业务需求分析入门
业务需求分析入门
 
CBAP 技術交流 20151008
CBAP 技術交流 20151008CBAP 技術交流 20151008
CBAP 技術交流 20151008
 
OOAD
OOADOOAD
OOAD
 
软件设计原则、模式与应用
软件设计原则、模式与应用软件设计原则、模式与应用
软件设计原则、模式与应用
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
 
Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程Struts+Spring+Hibernate整合教程
Struts+Spring+Hibernate整合教程
 
软件工程 第十一章
软件工程 第十一章软件工程 第十一章
软件工程 第十一章
 
Chp4. Contextual Analysis
Chp4. Contextual AnalysisChp4. Contextual Analysis
Chp4. Contextual Analysis
 
项目中的知识管理
项目中的知识管理项目中的知识管理
项目中的知识管理
 
Single-Page Application Design Principles 101
Single-Page Application Design Principles 101Single-Page Application Design Principles 101
Single-Page Application Design Principles 101
 
软件工程2010
软件工程2010软件工程2010
软件工程2010
 
Oai 模式
Oai 模式Oai 模式
Oai 模式
 
第1章 系统分析与设计技术 第1部分 1.3认知对象及其建模视角
第1章 系统分析与设计技术 第1部分 1.3认知对象及其建模视角第1章 系统分析与设计技术 第1部分 1.3认知对象及其建模视角
第1章 系统分析与设计技术 第1部分 1.3认知对象及其建模视角
 
OOAD with Applications - Chapter 2
OOAD with Applications - Chapter 2OOAD with Applications - Chapter 2
OOAD with Applications - Chapter 2
 
Drupal 是好的生財工具嗎?網站標案經驗分享 台灣i運動資訊平台(Drupal as a Cash Cow for Prodution House? ...
Drupal 是好的生財工具嗎?網站標案經驗分享 台灣i運動資訊平台(Drupal as a Cash Cow for Prodution House? ...Drupal 是好的生財工具嗎?網站標案經驗分享 台灣i運動資訊平台(Drupal as a Cash Cow for Prodution House? ...
Drupal 是好的生財工具嗎?網站標案經驗分享 台灣i運動資訊平台(Drupal as a Cash Cow for Prodution House? ...
 
2016.8.1 Design Pattern Eric
2016.8.1 Design Pattern Eric2016.8.1 Design Pattern Eric
2016.8.1 Design Pattern Eric
 
Scrum
ScrumScrum
Scrum
 
面向模式的软件体系架构
面向模式的软件体系架构面向模式的软件体系架构
面向模式的软件体系架构
 
第4章 项目估算
第4章 项目估算第4章 项目估算
第4章 项目估算
 
Kissy design
Kissy designKissy design
Kissy design
 

Mais de Jamie (Taka) Wang

Mais de Jamie (Taka) Wang (20)

20200606_insight_Ignition
20200606_insight_Ignition20200606_insight_Ignition
20200606_insight_Ignition
 
20200727_Insight workstation
20200727_Insight workstation20200727_Insight workstation
20200727_Insight workstation
 
20200723_insight_release_plan
20200723_insight_release_plan20200723_insight_release_plan
20200723_insight_release_plan
 
20210105_量產技轉
20210105_量產技轉20210105_量產技轉
20210105_量產技轉
 
20200808自營電商平台策略討論
20200808自營電商平台策略討論20200808自營電商平台策略討論
20200808自營電商平台策略討論
 
20200427_hardware
20200427_hardware20200427_hardware
20200427_hardware
 
20200429_ec
20200429_ec20200429_ec
20200429_ec
 
20200607_insight_sync
20200607_insight_sync20200607_insight_sync
20200607_insight_sync
 
20220113_product_day
20220113_product_day20220113_product_day
20220113_product_day
 
20200429_software
20200429_software20200429_software
20200429_software
 
20200602_insight_business
20200602_insight_business20200602_insight_business
20200602_insight_business
 
20200408_gen11_sequence_diagram
20200408_gen11_sequence_diagram20200408_gen11_sequence_diagram
20200408_gen11_sequence_diagram
 
20190827_activity_diagram
20190827_activity_diagram20190827_activity_diagram
20190827_activity_diagram
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
20161220 - microservice
20161220 - microservice20161220 - microservice
20161220 - microservice
 
20160217 - Overview of Vortex Intelligent Data Sharing Platform
20160217 - Overview of Vortex Intelligent Data Sharing Platform20160217 - Overview of Vortex Intelligent Data Sharing Platform
20160217 - Overview of Vortex Intelligent Data Sharing Platform
 
20151111 - IoT Sync Up
20151111 - IoT Sync Up20151111 - IoT Sync Up
20151111 - IoT Sync Up
 
20151207 - iot strategy
20151207 - iot strategy20151207 - iot strategy
20151207 - iot strategy
 
20141210 - Microservice Container
20141210 - Microservice Container20141210 - Microservice Container
20141210 - Microservice Container
 
20161027 - edge part2
20161027 - edge part220161027 - edge part2
20161027 - edge part2
 

CRC Card