熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

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

2013-11-23 18:58:56  來源: Java核心技術 

  軟件設計的質量在很大程度上受到系統封裝關系的影響模塊間松耦合而模塊內部又保持高度一致性是高質量設計軟件的關鍵之一所以評定軟件設計的水平的手段之一就是考察它的模塊間的關系對系統的可重用性和可維護性水平的客觀評價是一個評價軟件結構的重要組成部分我在本文介紹的度量標准可以幫助你客觀評定你的軟件設計的質量
  
  盡管度量標准可以對我們的軟件設計質量起著指導和反饋的作用但是你要牢記我在本文提出的度量標准並不是軟件設計的唯一依據設計質量分數的高低未必一定對應於真實軟件設計質量的高低但是不太可能出現那種設計水平很高但是在我們這種度量標准下分數卻很低的情況我們提出軟件設計質量度量標准的目的在於幫助設計者正確評估他們自己的設計更重要的是幫助你檢測設計的水平是否達到預期目標
  
  測試穩定性
  穩定性指的是修改軟件中某個模塊而不影響其它模塊的困難程度讓我們看看模塊間的依賴關系是如何影響到穩定性的
  
  一個模塊在軟件中重用的次數越多那麼就越依賴於它模塊的輸入依賴性越強(較多的其它模塊依賴本模塊)則它的穩定性得分也就越高(即難以修改)換句話來說其它模塊越依賴於本模塊那麼修改本模塊而不影響其它模塊也就越困難模塊的輸入依賴性和輸出依賴性是評測模塊穩定性和不穩定性的重要方面模塊的輸出依賴性強輸入依賴性弱則穩定性低(即容易修改)這是因為對變化不會擴展到很多其它方面另一方面模塊的輸入量越多它就越難以修改則越穩定穩定性可以通過計算輸入量和輸出量來計算
  
  輸入耦合度代表依賴本模塊的其它模塊數輸出耦合度代表本模塊所依賴的其它模塊數不穩定度可以通過輸出耦合度與總的耦合度的比例來得到計算公式如下I = Ce/(Ce + Ca)
  
  I 代表該模塊的不穩定度
  Ca代表該模塊的輸入耦合度即輸入依賴度
  Ce代表本模塊的輸出耦合度即輸出依賴度
  如果I的值接近於零那麼模塊的輸入依賴性就遠遠大於輸出依賴性模塊也就越穩定模塊越穩定也就越難以修改因為某個變化會衍生出許多新的變化波及到依賴它的其它模塊上了對I值接近於一的模塊來說它的輸出依賴性遠遠大於輸入依賴性模塊很不穩定由於受本模塊影響的模塊不多所以不穩定的模塊容易修改看到這些你也許會感到很困惑到底我應該讓模塊的穩定性高一些好還是低一些?
  
  由於組成一個軟件的一整套模塊中有些模塊有輸入依賴性(被其它模塊引用)而有些模塊有輸出依賴性(引用其它模塊)我們在設計模塊不應該追求完全的穩定性或者不穩定性而是具體考慮某個模塊需要的是穩定性還是不穩定性並盡可能實現輸入依賴度比較強的模塊必須擁有較高的抗可變性展現較高程度上的穩定性在面向對象的開發方法中抽象性通過分離功能和功能的實現方法來提高穩定性對Java來說抽象類和界面(interface)顯然就是抽象性的表現形式因此越需要穩定的模塊應該有越高的抽象層次與此對應越不穩定的模塊也就越具體
  
  測量抽象性
  你可以通過計算模塊內抽象類(或者界面)的數目與所有類的數目的比例來測出該模塊的抽象程度抽象度可以用下面的公式計算
  A=Na/Nc
  
  A 代表模塊的抽象程度
  Na代表模塊中抽象類或者界面的數目
  Nc代表模塊中具體類的數目
  抽象度等於零表示該模塊是一個完全抽象的模塊而抽象度等於一代表它是完全具體的模塊
  
  評估度量標准
  比較抽象度和穩定度你可以發現一些更有趣的結論完全不穩定的抽象模塊也是完全抽象的並且輸入依賴度為零相反完全穩定輸入依賴度較大的模塊意味它有較多的頻繁使用的具體類
  
  這是因為抽象性把變換和實現分隔開來變動頻繁使用的具體類會衍生出許多新的變化這些變化可能會波及整個軟件所以你應該在具體類中盡量降低模塊的輸入依賴性換句話來說設計模塊時要確保抽象性和輸入依賴性具體性與輸出依賴性成比例
  
  評估設計質量的有效輔助工具
  本評估方法可以幫助你提高軟件強壯性盡管好的度量方法並不能保證高質量的設計自然就會產生但是它確實可以幫助你加強信心在正確靈活的使用下本方法是評估軟件設計質量的寶貴手段
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26090.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.