潛魚在淵

          Concentrating on Architectures.

          posts - 77, comments - 309, trackbacks - 0, articles - 0
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          軟件架構:控制與改進

          Posted on 2008-10-14 00:20 非魚 閱讀(1819) 評論(0)  編輯  收藏 所屬分類: 面向對象設計管理
          在漫長的生命周期中,有些軟件越做越好,有些軟件越做越差。現在我們要關注的是:如何在一個較長的時期內,把一個軟件越做越好。這就是軟件開發的控制與改進。

          影響軟件質量的因素有很多,但本文主要考慮的是控制。為了達到這個目的,我們首先來設定一個理想的環境。在這個環境下,我們假設:

          • 意外不會發生。我是說災難性事件不會發生,沒有任何意料之外、完全不可控的事情。
          • 團隊有一定的資格,相對穩定。
          在這個前提下,我們考察相對較長時間內,軟件質量控制及穩定提升的關鍵行動。這個話題涵義很廣,我們只討論其中的關鍵點:把握好了可以達到事半功倍的效果。

          需求控制

          需求控制的手段主要是評審和變更控制。需求控制的標準主要有兩個:價值符合度標準和目的符合度標準。價值符合度標準用來衡量需求的目的是否符合客戶和用戶的價值,是否可以直接或間接給用戶帶來益處。目的符合度標準用來判定需求的細節是否符合需求的最終目的。通過這兩個標準可以判斷一個需求的穩定程度,它變化的可能性有多大。需求的穩定程度要記錄下來,做為設計階段的參考。

          設計控制

          最有效的設計控制手段是封裝。封裝一般性的東西以重用;封裝穩定程度差的需求以適應將來的變化;封裝不太確定的設計決策以便將來可以采用更好的方法。良好的封裝是軟件質量持續改進的基礎?,F實世界本來就存在依賴關系,封裝在某種程度上可能會導致非自然的依賴關系。對依賴關系的控制從反面影響軟件的質量,要注意保持依賴關系是單向的,包之間絕不應該存在雙向的甚至是循環的依賴關系。依賴關系嚴重影響軟件的可修改性。

          編碼控制

          編碼控制的核心是避免錯誤。最大的錯誤就是違反設計,破壞封裝和引入設計定義之外的依賴關系。要對每一個編碼的單元進行這些方面的檢查,避免“千里之堤,潰于蟻穴”。

          實施控制的時機

          一般來說,階段性評審是最好的時機;變更控制過程是必須的時機;如果上述兩種時機你沒有把握住的話,周期性評估是最后的時機。

          實施改進

          改進是軟件越做越好的手段。控制不能讓你的軟件變好,只能讓你的軟件不會變得更壞。但是無論如何,控制是改進的基礎,沒有控制的話你就別想改進。改進的手段包括重構和重做。

          需求變化時,極可能帶來設計的變化。這需要對需求變更和原來的設計進行評估,這是重構的好時機。這就是重構的原則,不要在錯誤的基礎上繼續工作。打補丁一樣的開發只會讓軟件越來越糟糕。

          有時候重做整個或部分軟件也是必須的。原則上重做也是越早越好,付出的代價也越小。如果你的車油量降到了一半以下,你就永遠也不可能回到起點了。


          , , , , ,

          主站蜘蛛池模板: 苏尼特左旗| 汤原县| 桦川县| 宁化县| 晋宁县| 长乐市| 洛隆县| 伊春市| 枣阳市| 宁阳县| 平顶山市| 桂林市| 贞丰县| 韶关市| 苍山县| 宁阳县| 朝阳市| 阿鲁科尔沁旗| 宁晋县| 贵州省| 绥滨县| 华容县| 西丰县| 黔江区| 佳木斯市| 弥勒县| 肃北| 云和县| 石棉县| 斗六市| 射阳县| 武宣县| 库车县| 新巴尔虎右旗| 赫章县| 龙陵县| 道真| 华阴市| 区。| 岳池县| 永仁县|