Agile-架構設計會議 (CRC Session)
架構設計會議常使用CRC(Class,Responsibility, Collaborator)會議:五人以內圍坐,執行使用情節,推敲切割(partition)情節找出物件(object)及物件互動(object interaction,即method),須含下層隱藏物件(hidden object),用小卡片(CRC card,可用A4紙)記錄:
1.Class name
2.要做何事 Responsibility (R),(將轉為 method)
3.要誰合作(即需呼叫誰的 responsibility)叫 Collaborator
會議後所有 CRC cards 即系統架構(class interfaces),(1)(2) 找class encapsulation,(3) 找 class use relationship 此會議是群體智慧- 腦力激盪,快速溝通,真相: 大型軟體從未在架構師腦袋,而是多個程式師共同擁有
1.對每個功能寫出多個驗收測試(acceptance test cases)每個 test case 有步驟描述
2. 對每個 test case 由第一步驟出發,大家討論: 要有那個 object 執行那個 method,接著又有那個 object 執行那個 method … 直到最後步驟做完
3. 討論中,用一張A4紙記錄一個class及其methods,並指定專人扮演這class (即CRC)
4. 會後,檢視所有A4紙,並調整之(如某method 應歸屬另一 class) 即得 class interfaces (軟體架構)
5. 架構定案後,各 method 要寫好 header (method description, parameters, return value, exceptions)
- parameters 不超過 5 個 (magic 7 minus 2)
- return value 是一個 object, 但寫出的是其 class
- 原則上禁用 global variables
還是要多討論~~~
自我LV~