『簡單』- 讓混亂發展成規則 (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發展軟體的簡單流程,這個流程雖然不能用來發展大型複雜的軟體,但或可做為發展軟體系統前端或軟體雛型之用,這個流程可能是最簡單的軟體發展流程,有機會再來討論。


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

留言

  1. Mystino - Play online for free on Casinoinjapan
    Mystino is a unique slots game ミスティーノ that 11bet brings 1xbet together the elements of classic slots with bonus rounds, free spins and free spins.

    回覆刪除

張貼留言

這個網誌中的熱門文章

CMMI是什麼?

蓋房子和寫軟體

TCSE 2011 Panel discussion