『簡單』- 讓混亂發展成規則 (Order from Chaos)

我在治療期間,抽空讀了一本肯恩‧西格爾(Ken Segall)著作,書名為『簡單』的書 (應該稱為『極致簡單』- Insanely Simple),西格爾主要在闡述史蒂夫‧賈伯斯(Steve Jobs)以『簡單』至上的觀念引導蘋果的成功故事,其實,賈伯斯曾經被蘋果「放逐」11年,於1997年再度回到蘋果擔任執行長,賈伯斯不在期間,蘋果每下愈況,一直到賈伯斯回來時,蘋果已經岌岌可危,幾近破產邊緣,賈伯斯以『簡單』至上的觀念重振蘋果。『簡單』至上的概念很難說得清楚,它可能是一種選擇,一種氛圍或一種指引,視你的需要而定,簡言之,『簡單』就是『打破複雜,創造絕對優勢』,你/妳如果用過蘋果的產品如iPad,可能就會有所感受,例如更新作業系統(iOS)就很簡單,總之,蘋果的基本理念是:『硬體簡單化,而背後的軟體卻豐富化』。賈伯斯如何以『簡單』至上的觀念讓蘋果起死回生,有興趣的朋友可看看西格爾的書。

發展軟體的需求,開始時都顯得比較混亂,不過『簡單』可以讓混亂發展成規則,我想,『簡單』這種觀念是否可以運用在軟體發展上,謹提供個人的看法。眾所熟悉的"KISS"原則 (Keep It Simple, Stupide) ,就是勸導人們撰寫程式與設計軟體時,要保持簡單清楚但不要太複雜,發展C語言的P.J. Plauger與B.W. Kernighan在他們的"The Elements of Programming Style"書裡,提供數十條寫程式必須遵循的『簡單』原則,例如其中有一則原則是說"Keep it simple to make it faster",所以程式如寫得太複雜,則可能會降低效率。此外,『簡單』也可以說是敏捷方法的原則之一,2001年Agile Alliance所發表的敏捷宣言(manifesto),是『簡單』的價值闡述,『簡單』的優點是你不必花費太多的時間去實作困難的解決方案(除非簡單的方案無法解決你的問題),總之,簡單的解決方案容易保養也容易改進。

談到『簡單』,我想到去年12/8我在本部落格po了一篇題為『CRC cards - 非正規物件導向發展技術』的文章(惜因少有反應,所以最近我把它列入草稿),CRC cards雖然屬非正規方法,但可做為軟體分析、設計以及敏捷思考的簡單工具,而且也可做為正規方法的輸入,如UP、Booch方法或OMT等。Craig Larman曾以隱喻(metaphor)的方式解釋何謂物件,個人認為,CRC cards可能是詮釋物件及其功能最簡單的圖示,也是教授學生物件導向觀念的入門利器,只可惜在國內似並未受到重視。下圖表示如何利用CRC cards發展軟體的簡單流程,這個流程雖然不能用來發展大型複雜的軟體,但或可做為發展軟體系統前端或軟體雛型之用,這個流程可能是最簡單的軟體發展流程,有機會再來討論。


這篇文章只不過是以表面方式闡述『簡單』這種觀念,而不在描述蘋果的種種,特此註明。

留言

這個網誌中的熱門文章

CMMI是什麼?

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

給我測試案例,其他免談(一)