在這里只是簡單談談設計的基本含意,拋磚引玉。
設計的本質就是把軟件的需求說明轉變成可以運行的程序的整個過程。設計是一種腦力勞動,或者說是一個啟發過程。設計是一個復雜的過程,現在從幾個方面闡述它。
設計可以表現在多層次上面,設計方法可以是自底向上或是自頂向下,在實際的工作中,這兩者結合使用,相輔相成。首先使用自頂向下的方法把軟件系統劃分成多個層次,再在每個層次上面自頂向下或自底向上推動設計。層次從上到下通常表現為子系統,然后是模塊,子程序,最后是內部子程序。這里模塊和子程序的區別在于模快包含了一些子程序和相關的數據,而子程序只是一些功能集合。
在早期,大家都采用結構化設計,使用程序看起來更富邏輯性,直到面向對象(OO)方法的出現。OO是設計方法的高層發展,和結構化設計并不矛盾。現在又有了面向方面(OA)發起了另一場革命,使設計方法更深入發展。這三種方法也不是互斥的,三者相互協作,大大提高了設計的質量。
設計過程是一個啟發的過程,非常復雜。多數情況下我們需要迭代多次才能達成最后的目標,還有一些是使用增量式開發過程來完成設計。我推薦大家使用迭代,明確定義每次迭代的目標,這樣每一步都走得很踏實。迭代使我們逐步細化設計,逼近最終產品,而且結果是容易驗證的,整個過程是自信和愉快的。
在這當中還要提到一個通用的準則:解決問題的方法。遇到問題時,首先要問自己這個問題到底是什么(What)?搞清楚問題的真正原因,然后再制定幾個方案并評估它們做出最后的選擇(How)。接著是實現你的方案,有了前面的準備階段,這一步實在是簡單到頂。最后你要去驗證你的方案是否達到你的目的,這也很簡單。
什么樣的設計才算是優秀呢?
- 簡單
- 低耦合高內聚
- 易擴展
- 易移植
- 易重用且重用度高
- 標準化程度高
符合這些條件的設計通常就是非常可靠的設計。