衡量軟件體系結構設計優秀與否的4把尺子

軟件體系結構設計,對於軟件開發有著至關重要的影響。在《軟件工程與項目管理解析》一書中對此有精彩的闡述:

如果把軟件比作人體,體系結構就如同人的骨架。如果某個傢伙的骨架是猴子,那麼無論怎樣餵養和美容,這傢伙始終都是猴子,不會成為人。人的身材大小取決於骨架大小,天生小個子的人基本上不可能成為威猛的大漢,後天再努力(例如鍛鍊和吃喝)也白搭。由此可見,體系結構乃是系統設計的重中之重。

既然軟件體系結構設計如此重要,那麼怎樣的設計才能是優秀的設計呢?

在回答這個問題之前,先來看看軟件的體系結構設計究竟要做些什麼事情。軟件體系結構設計主要完成3件事情:一是建立軟件模塊的靜態關係;二是建立軟件模塊的動態關係;最後是軟件的接口設計。

衡量軟件體系結構設計優秀與否的4把尺子

軟件模塊的靜態關係,就是由根據軟件需求,設計由一個或多個模塊來實現它。拿人體的骨架來比喻,人要完成各種或簡單或複雜的動作,需要多少塊骨骼來支撐,每一塊骨骼都有各自的名稱,而且幾塊小的骨骼會組成較大的骨骼,幾塊較大的骨骼組成更大的骨骼……這些事情搞清楚了,軟件模塊的靜態關係也就清楚了。

軟件模塊的動態關係,就是模塊間的相互調用關係。比如,揮動羽毛球拍時,需要腕骨來調動手骨運動。

軟件接口設計則包括內部接口和外部接口的設計,內部接口是軟件模塊間的接口關係,外部接口是軟件系統和外部交互的接口關係。人體的一些關節部位,就好像是“內部接口”。

做好這3件事,軟件的體系結構設計就算完成了。這樣僅僅解決了軟件需求都能實現,但是這樣的設計是好是壞,要怎麼衡量呢?誰也不想因為一個不良的設計,而製造出一個殘次品吧?

要看軟件體系結構設計是否優秀,就要看它有沒有遵循以下4項基本原則。

  1. 合適性

一個軟件系統由多個軟件模塊組成,軟件體系結構設計就可能有多個排列組合。一個成年人的骨骼有204塊,這要組合起來得有多少種設計方案呢?可是,真正適合人體的只有一種設計方案。軟件體系結構也是一樣的,具備“合適性”才有了優秀的潛質。

  1. 穩定性

結構的穩定對於任何一種事物都非常重要。軟件是要長期使用的,並且不斷地與外部系統進行信息交互,結構的穩定性對於軟件應付各種情況會有極大幫助。穩定的結構會使軟件在出現問題時,即使有部分模塊被破壞,也不至於引起整體的崩潰。優秀的軟件體系結構也一定是穩定的。

PS:有一次騎車時,我整個人都飛了出來,摔的那叫一個痛,右手很長時間都不能用力,好在身體結構還是很穩定的,並沒有散了架。

  1. 可擴展

軟件的應用需求可能會不斷髮生變化,這要求軟件應當具備可擴展性,這樣當需要軟件滿足新的需求時,只需要做很簡單的處理就可滿足。

我們人體,只要藉助一些工具就可以完成很多更復雜的工作。

有時候,可擴展性也不是軟件必須具備的,比如一些生命期很短的一次性的軟件。

另外,穩定性和可擴展性之間的關係也比較有意思,表面上兩者是互相矛盾的,可深層次上並沒有那麼簡單。

如果系統不可擴展的話,那麼就沒有發展前途,所以不能只關心穩定性而忽視可擴展性;而軟件系統“可擴展”的前提條件是“保持結構穩定”,否則軟件難以按計劃開發出來,穩定性是使系統能夠持續發展的基礎。所以穩定性和可擴展性都是體系結構設計的要素。

  1. 可複用

對於一個軟件開發組織,軟件的開發不是一次性的事情,每一個軟件產品都是組織的有效資產。如果軟件的體系結構是可複用的,那麼會給下次開發工作帶來極大的益處:

設計的成和風險將大大降低

PS:人體的複用,那是說的克隆嗎?

總之,軟件體系結構的設計不是隨心所欲的,而是有章可循的。通過以上的4把尺子,就可以衡量出軟件體系結構的好壞。


分享到:


相關文章: