試論軟件設計原則(轉載)

作者:中博 出處:博客中國

軟件開發過程千差萬別,開發資金規模從幾萬到幾千萬,開發方式從面向過程到模式驅動,開發人員從幾個人到幾百人,開發環境從Windows到Linux,人員水平從剛剛畢業的非計算機專業的員工到經驗豐富、能力有限的高手。


軟件設計的好壞,似乎完全取決於設計人員的能力、思維見地,判斷一個軟件設計的好壞,似乎只能看其發佈後的用戶評價,靠時間來檢驗。那麼,在軟件設計過程中是否存在一些基本的原則,在不同的開發過程中,真正的指導、提高軟件設計的水平呢?

一、功能分解

功能分解是非常樸素、普通的思想。然而,也是非常容易遺忘的思想。很多的設計人員總是雄心勃勃,試圖設計出非常複雜的算法,非常完美的結構,陶醉於自己定義的世外桃源,不是將問題簡化,而是將問題複雜化。而實踐證明,這些出發點就是有偏差的。軟件領域以外的很多實踐和經驗,都證明了分工、分解是處理複雜系統的基本前提。何況較很多系統更加複雜的軟件系統?

二、代碼重用

很多的軟件方案中,開宗明義自己的設計原則是面向對象,那麼,我們把需求影射成爲一個一個的對象,就是好的設計嗎?事實上,如何劃分、設計真正好的對象,是非常難以掌握的,如果面向對象在實踐中沒有很大的問題,就不會有時髦的重構了。實際上,翻開任何一本解釋面向對象的書,都會提到,面向對象的基本初衷是代碼重用。那麼,如果把代碼重用作爲設計原則,設計人員總是考慮如何能夠代碼重用的設計,則其效果會大大高於沒有什麼可操作性的面向對象原則

三、減少耦合 

如果將設計好的對象之間用有向箭頭連在一起,很多時候會變成了一張網,如果將對象的方法之間用有向箭頭連在一起,則看起來像信手塗鴉。對於設計人員,能夠將其中的關係一一說明白,已經是不錯的了,而對於的開發人員,則變成了黑洞。如果過一段時間、或者用戶需求有些變化,對很多人講,這樣的設計會成爲噩夢,這是比較極端的情況。但是也能說明,在設計各個層面減少耦合是設計人員需要隨時提醒自己的。

四、規律的規律 

如果設計人員確實還有能量,可以考慮一些超越用戶給定需求的PATTERN,很多情況下,是從用戶的需求得到一些PATTERN,而不是相反。

五、常識和品味

政治局常委起何作用?一般的轎車百公里油耗是多少,這些和我們的軟件設計有關麼?是的,有很大的關係。設計人員會得到各個角度、各個層次的信息,需要作出方方面面的決策,而歸根結底,這些決策的依據很多是設計人員的常識和品味,不同的人有不同的常識和品味,而設計人員的常識和品味是否足夠高,一般只能隨着系統的使用才能看出來。

<script language="javascript" src="../../../share/bottom.js" type="text/javascript"></script>  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章