潛魚在淵

          Concentrating on Architectures.

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

          軟件架構(gòu):控制與改進

          Posted on 2008-10-14 00:20 非魚 閱讀(1823) 評論(0)  編輯  收藏 所屬分類: 面向?qū)ο笤O(shè)計管理
          在漫長的生命周期中,有些軟件越做越好,有些軟件越做越差。現(xiàn)在我們要關(guān)注的是:如何在一個較長的時期內(nèi),把一個軟件越做越好。這就是軟件開發(fā)的控制與改進。

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

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

          需求控制

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

          設(shè)計控制

          最有效的設(shè)計控制手段是封裝。封裝一般性的東西以重用;封裝穩(wěn)定程度差的需求以適應(yīng)將來的變化;封裝不太確定的設(shè)計決策以便將來可以采用更好的方法。良好的封裝是軟件質(zhì)量持續(xù)改進的基礎(chǔ)。現(xiàn)實世界本來就存在依賴關(guān)系,封裝在某種程度上可能會導(dǎo)致非自然的依賴關(guān)系。對依賴關(guān)系的控制從反面影響軟件的質(zhì)量,要注意保持依賴關(guān)系是單向的,包之間絕不應(yīng)該存在雙向的甚至是循環(huán)的依賴關(guān)系。依賴關(guān)系嚴重影響軟件的可修改性。

          編碼控制

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

          實施控制的時機

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

          實施改進

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

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

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


          , , , , ,

          主站蜘蛛池模板: 林周县| 尚志市| 安西县| 尉氏县| 三门峡市| 肥西县| 温州市| 黄陵县| 锡林郭勒盟| 锦屏县| 宿迁市| 哈尔滨市| 大竹县| 革吉县| 敦煌市| 太白县| 鄯善县| 新宾| 特克斯县| 上饶县| 襄汾县| 大同县| 富平县| 高邮市| 彩票| 年辖:市辖区| 普洱| 浮梁县| 五原县| 施秉县| 乌审旗| 兴宁市| 阿拉善盟| 内江市| 峨边| 新乐市| 荥阳市| 黔西县| 永和县| 曲周县| 苏尼特右旗|