面向對象的設計法確保軟件的健壯性


軟件設計的質量在很大程度上受到系統封裝關係的影響。模塊間鬆耦合而模塊內部又保持高度一致性是高質量設計軟件的關鍵之一。所以,評定軟件設計的水平的手段之一就是考察它的模塊間的關係。對系統的可重用性和可維護性水平的客觀評價是一個評價軟件結構的重要組成部分。我在本文介紹的度量標準可以幫助你客觀評定你的軟件設計的質量。

 
Nokia_S60_728x90.gif Nokia_S60_728x90.gif tech;sz=1x1;ord=191907387?

儘管度量標準可以對我們的軟件設計質量起着指導和反饋的作用,但是你要牢記我在本文提出的度量標準並不是軟件設計的唯一依據。設計質量分數的高低未必一定對應於真實軟件設計質量的高低,但是不太可能出現那種設計水平很高,但是在我們這種度量標準下,分數卻很低的情況。我們提出軟件設計質量度量標準的目的在於幫助設計者正確評估他們自己的設計,更重要的是幫助你檢測設計的水平是否達到預期目標。

測試穩定性

穩定性指的是修改軟件中某個模塊而不影響其它模塊的困難程度。讓我們看看模塊間的依賴關係是如何影響到穩定性的。

一個模塊在軟件中重用的次數越多,那麼就越依賴於它。模塊的輸入依賴性越強(較多的其它模塊依賴本模塊),則它的穩定性得分也就越高(即難以修改)。換句話來說,其它模塊越依賴於本模塊,那麼修改本模塊而不影響其它模塊也就越困難。模塊的輸入依賴性和輸出依賴性是評測模塊穩定性和不穩定性的重要方面。模塊的輸出依賴性強、輸入依賴性弱,則穩定性低(即容易修改),這是因爲對變化不會擴展到很多其它方面。另一方面,模塊的輸入量越多,它就越難以修改,則越穩定。穩定性可以通過計算輸入量和輸出量來計算。

輸入耦合度代表依賴本模塊的其它模塊數,輸出耦合度代表本模塊所依賴的其它模塊數。不穩定度可以通過輸出耦合度與總的耦合度的比例來得到。計算公式如下:I = Ce/(Ce + Ca)

  • I 代表該模塊的不穩定度
  • Ca代表該模塊的輸入耦合度,即輸入依賴度
  • Ce代表本模塊的輸出耦合度,即輸出依賴度

如果I的值接近於零,那麼模塊的輸入依賴性就遠遠大於輸出依賴性,模塊也就越穩定。模塊越穩定也就越難以修改,因爲某個變化會衍生出許多新的變化,波及到依賴它的其它模塊上了。對I值接近於一的模塊來說,它的輸出依賴性遠遠大於輸入依賴性,模塊很不穩定。由於受本模塊影響的模塊不多,所以不穩定的模塊容易修改。看到這些,你也許會感到很困惑,“到底我應該讓模塊的穩定性高一些好,還是低一些?”

由於組成一個軟件的一整套模塊中,有些模塊有輸入依賴性(被其它模塊引用),而有些模塊有輸出依賴性(引用其它模塊)。我們在設計模塊不應該追求完全的穩定性或者不穩定性,而是具體考慮某個模塊需要的是穩定性還是不穩定性並儘可能實現。輸入依賴度比較強的模塊必須擁有較高的抗可變性,展現較高程度上的穩定性。在面向對象的開發方法中,抽象性通過分離功能和功能的實現方法來提高穩定性。對Java來說,抽象類和界面(interface)顯然就是抽象性的表現形式。因此,越需要穩定的模塊應該有越高的抽象層次。與此對應,越不穩定的模塊也就越具體。

測量抽象性

你可以通過計算模塊內抽象類(或者界面)的數目與所有類的數目的比例來測出該模塊的抽象程度。抽象度可以用下面的公式計算:
A=Na/Nc

  • A 代表模塊的抽象程度
  • Na代表模塊中抽象類或者界面的數目
  • Nc代表模塊中具體類的數目

抽象度等於零表示該模塊是一個完全抽象的模塊,而抽象度等於一代表它是完全具體的模塊。

評估度量標準

Nokia_S60_728x90.gif Nokia_S60_728x90.gif tech;sz=1x1;ord=1307950774?

比較抽象度和穩定度,你可以發現一些更有趣的結論。完全不穩定的抽象模塊也是完全抽象的、並且輸入依賴度爲零。相反,完全穩定、輸入依賴度較大的模塊意味它有較多的頻繁使用的具體類。

這是因爲抽象性把變換和實現分隔開來。變動頻繁使用的具體類會衍生出許多新的變化,這些變化可能會波及整個軟件。所以,你應該在具體類中儘量降低模塊的輸入依賴性。換句話來說,設計模塊時要確保抽象性和輸入依賴性、具體性與輸出依賴性成比例。

評估設計質量的有效輔助工具

本評估方法可以幫助你提高軟件強壯性。儘管好的度量方法並不能保證高質量的設計自然就會產生,但是它確實可以幫助你加強信心。在正確靈活的使用下,本方法是評估軟件設計質量的寶貴手段。

 

作者: BUILDER.COM

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章