Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Responsibility Driven Design -
CRC Card
2017/1/4
Taka Wang
Domain, Concept and Analysis
物件導向分析 (Object-Oriented
Analysis, OOA) 強調如何從問題領
域 (Problem Domain) 的描述建立
使用案例模型 (Use Case Mod...
Object-Oriented Analysis
在物件導向分析階段並不用考量實作細節,我們主要是找出系統功能和服務,以
便能夠作出對的事情。事實上,物件導向分析就是在回答下列問題:
1. 軟體系統能做什麼事?
2. 在軟體系統中有哪些類別?
...
CRC Card
CRC卡是 (Kent Beck 和 Ward Cunningham, 1989 OOPSLA) 發展的技術,CRC代
表類別(Class)、責任 (Responsibilities) 和合作 (Collaborators)
...
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。這樣提供...
CRC card methodology (2/2)
4. 要測試這個模型好不好的方法是,改變一下 use case 的情景(假想需求變更),看
這組卡片是不是仍能完成這個情景,或是需要小調整一些責任,或是需要增加新的卡
片,或是要做更大的更動...
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/oo...
Upcoming SlideShare
Loading in …5
×

CRC Card

Review CRC Card methodology

  • Login to see the comments

CRC Card

  1. 1. Responsibility Driven Design - CRC Card 2017/1/4 Taka Wang
  2. 2. 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)
  3. 3. Object-Oriented Analysis 在物件導向分析階段並不用考量實作細節,我們主要是找出系統功能和服務,以 便能夠作出對的事情。事實上,物件導向分析就是在回答下列問題: 1. 軟體系統能做什麼事? 2. 在軟體系統中有哪些類別? 3. 每一個類別負責什麼? use case diagrams 建立類別 (Class) 指定責任 http://web.ydu.edu.tw/~alan9956/doc100/100-02.sa/ooad-uml-chap04.pdf
  4. 4. CRC Card CRC卡是 (Kent Beck 和 Ward Cunningham, 1989 OOPSLA) 發展的技術,CRC代 表類別(Class)、責任 (Responsibilities) 和合作 (Collaborators) 軟體物件有如人們具有責任 (responsibilities),有些 責任必需與他人合作 (collaborate) 才能完成工作 - Craig Larman from Applying UML and Patterns CRC cards - 非正規物件導向發展技術
  5. 5. CRC Card CRC cards - 非正規物件導向發展技術
  6. 6. CRC Card (3 inch x 5 inch) http://cc.web2.ncut.edu.tw/ezfiles/26/1026/img/140/20050413_UML.pdf
  7. 7. 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 物件模型的觀念與誤解
  8. 8. CRC card methodology (2/2) 4. 要測試這個模型好不好的方法是,改變一下 use case 的情景(假想需求變更),看 這組卡片是不是仍能完成這個情景,或是需要小調整一些責任,或是需要增加新的卡 片,或是要做更大的更動才能完成。最好的模型會最簡單,而又在最小的調整下應付 最多的需求變更。<<類似BDD,此手法跟DDD找BC方式呼應>> 5. 把這組卡片推到一邊(先不要丟掉,可能隨時要拿出來參考)。試著找出不同的模型 ,加入新的卡片。讓這個設計不斷演化,不要忘了用前一步的方法測試新設計。 6. 把最後找出最好的模型記錄下來。記錄下主要的 responsibility 與 interaction。
  9. 9. ATM自動櫃員機 範例
  10. 10. ATM自動櫃員機 (1/4) 先抓出兩個 Domain Model http://www.csie.sju.edu.tw/cm/course/softengineer/OOAD_10.ppt
  11. 11. ATM自動櫃員機 (2/4) 因為一個銀行客戶可以擁有1~2個 帳戶和一張金融卡,可以使用金融 卡號取得此帳戶的所有帳戶清單
  12. 12. ATM自動櫃員機 (3/4) 抓出剩餘的兩個 Domain Model
  13. 13. ATM自動櫃員機 (4/4) 建立 Conceptual Model
  14. 14. 參考文獻 ● 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)

×