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