發表文章

目前顯示的是 2012的文章

CRC cards - 非正規物件導向發展技術

圖片
最近看到Kent Beck與Martin Fowler講的一句『諺語』,說:"Stick with simple tool, like pencil, paper, and whiteboard. Communication is more important than whizbang." 我才想到PO這篇短文,提供學生們(至少選我開授的OOSE的學生)參考。這句諺語我認為最重要的是『溝通』,溝通在軟體發展的過程中十分重要,尤其想使用『敏捷方法』發展軟體的工程師們更為重要(可參考Agile Alliance在2001年發表的『宣言』(manifesto),此地不宜對宣言多做闡述),問題是你要使用何種工具或方法來溝通?我想除use cases外,CRC cards可能是最佳工具之一,它是隨時隨地可得的低技術工具,易學易用。

軟體開發與維護時,工作夥伴的合作十分重要,換言之,團隊合作是發展工作成敗的關鍵,夥伴合作必須有好的工具或技術協助,CRC cards可能是適當的工具之一,據我所知,在台灣發展軟體的工程師很少使用像CRC cards這種簡單但被認為是一種『驚奇』(wonderful)的發明 (David Bellin, et al. 1997),而這種技術雖然簡單,但卻可避免發展早期陷入太細節或者產生雜亂且定義不清楚的類別,因此希望這篇報導能引起從事軟體發展的人士注意到這種『老而彌堅』的技術,而且也希望各界人士能予指正。

CRC cards (Class-Responsibility-Collaborator cards) 是1989由Kent Beck與Ward Cunningham所共同介紹 (http:\\c2.com/doc/oopsla89/paper.html),其出現時期與WWW相同,至今約有20幾年的歷史,這個工具開始是用來教導新學員如何學習物件導向的觀念與程式製作,後來的演變卻超乎在教室內的需要,而成為軟體分析、設計以及敏捷思考的工具。CRC cards的軟體發展方法屬於一種非正規方法 (informal approach),雖然屬非正規方法,但CRC cards可做為正規方法的輸入或前端作業,如Booch方法、James Rumbaugh, et al. 的OMT、Ivar Jacoson, et al.的OOSE、Shla…

再漫談『課程改進』

去年TCSE2011 Panel discussion之後,我在2011/07/13po了一`篇叫『課程改進』短文,文中主要討論,教學生是先教程式設計或模式觀念,該文引起一些討論,2011/12/05我又發表一篇:『CRC cards - 非正規物件導向發展技術』(該文因無人點閱故暫還原為草稿),我因此想到「冷飯熱炒」po這篇短文就教對該類議題的有心人士。
     事實上,討論程式與模式孰先孰後不會有結論,也不應有結論,因何者為先何者為後,甚至兩者平行教學,端視教師的觀念與想法,不過我認為,這個議題可能影響往後的軟體工程與物件軟體工程的教學以及學生學習的深度與速度,我教過幾年的物件軟工課程,發現有些學生對於模式的概念相當薄弱,因此要了解諸如UML的功能與運用時有些困難,甚至於利用UML來發展軟體也有些「障礙」,因此我才想到何不早先讓學員了解模式與程式之間的關聯!
     不過,如果你/妳不反對教授大一或大二的程式設計時,可同時授予學生物件導向的觀念;CRC cards可能是教導學生盡早具備物件導向觀念,簡單但有效的利器,事實上,Kent Beck與Ward Cunningham介紹CRC cards時的原意就是要教導程式員認知物件導向的觀念,只不過後來卻「脫離」教室而成為快速而且有效的物件先期設計方法,而成為非正規物件導向軟體發展技術(參照2011/12/05CRC crads一文)。
     這篇短文只是用來補充前置『課程改進』一文,總希望學生能夠盡速進入物件導向的領域,因為物件導向軟體發展方法可能是目前de factor軟體發展法,如果老師們能夠加以指正這種論述,本人表示樂觀與感謝。

「註」CRC cards是簡潔(compact),低技術(low-tech),便宜,容易學習的工具,而且不一定要使用電腦,甚至可做為正規方法如UP等的輸入,這一點再另文討論。