發表文章

目前顯示的是 2015的文章

使用CRC cards的『責任驅動設計』方法

圖片
本文簡單介紹一般人比較不熟習的所謂『責任驅動設計』(Responsibility-Driven Design 簡稱 RDD),這種設計方法是根據系統的責任,來設計類別的行為與方法或功能,因此RDD可運用在軟體發展上。

1989年Rebecca Wirfs-Brock與Brain Wilkerson在OOPSLA'89發表『責任驅動設計』的軟體設計方法,後來她們與Lauren Wiener共同寫了一本叫『Designing Object-Oriented Software』(PTR Prentice Hall 1990)的書用以實作RDD,2003年Wirfs-Brock與Alan McKean合著『Object Design - Roles, Responsibilities, and Collaborations』(Addison-Wesley)一書更深入介紹RDD,讀者如沒有這兩本書而有興趣的話可從網路叫出RDD相關文章參考。

本文介紹這種軟體設計方法,乃是因為在OOSE或OOAD的書籍很少提到,據我所知上課時老師也很少介紹,這種方法的設計觀念是認為,軟體物件以及大型原件的設計是基於『責任』(responsibilities)、『角色』(roles)、以及『合作』(collaborations),這種觀念,有部份異於諸如UP之類的「傳統」軟體發展想法,但是RDD是一種非正規(informal)的設計概念,其後半部如與傳統的設計與實作連結,這個方法應該值得關注,不過我在此地必須說明,RDD並非完全脫離一般OOAD甚至OOSE的觀念,只不過它對於物件的定義有別於UML的型態 ,物件並非單純資料與演繹的結合,而認為物件是結合其『角色』與『責任』的東西,當要執行某些責任時需與其他物件合作才能完成。因此,RDD的重點在於,發展物件之間的合作與溝通模式,以及物件責任與動態,而不在於物件的內部狀態(internal state)與結構,CRC cards的內涵剛好符合這種需要。如果我們定義軟體應用系統是由一群物件間的相互作用(interactions)而成,則這種相互作用就是得自於client/server模式。
Client/Server模式 物件的作業元(operations)在RDD中視為『服務』,這種服務可以提供需要的其他物件,因此只要服務存在,我們說物件就有責任…

現今軟體發展流程趨向

降低發展軟體系統的工作量、減少發展所需的時間是現今軟體發展流程的主要趨勢,因此由郭忠義、薛念林、馬尚彬與黃為德共同發展一本書名為『現代軟體工程─物件導向軟體發展策略』,這本書有別於傳統的軟體工程書籍,引進現代的先進軟體工程技術,並具有下列特色:
全面理解基本軟體工程與物件導向的觀念。提供『案例研究』(case study)以說明物件導向軟體發展流程。介紹系統化軟體測試與方法,導引出各種敏捷軟體發展方法,如Scrum方法。根據軟體設計原理與發展樣式,協助發展者發展可保養的軟體系統,提高設計品質。以敏捷觀念介紹一些有用的建模原理與應用,例如責任驅動設計(Responsibility-Driven Design,RDD)、模型驅動架構(Model Driven Architecture,MDD)。專章介紹軟體度量預測與使用CRR卡模型,兼顧傳統與實用性。 依照上述特色,本書的目的主要用來說明物件導向軟體工程的特徵,同時提供簡易而實用的物件導向的特有功能與技術,由於軟體發展不能只抱持單一種類的方法或流程,因此本書介紹的軟體發展流程是基本流程的框架(framework),發展者可將這種框架『客製化』以適合其需求,讀者學習完本書後,就有能力應用物件導向技術從事其發展軟體的工作。
     本書主要提供大專院校研究生或大四學生研讀,同時也提供工業界人士,需要以傳統或敏捷方法發展可保養的軟體系統時參考,研讀本書,必須具有軟體工程,以及物件導向程式語言的知識,如Java或C++語言。作者深切期盼任何對本書的評論,以便將來修正。
     本部落格僅提供對於近代軟體發展策略有興趣的人士參考,而無意做任何商傳,謹特別聲明。