潛魚在淵

          Concentrating on Architectures.

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

          軟件發行管理(下)

          Posted on 2005-12-16 21:31 非魚 閱讀(2327) 評論(2)  編輯  收藏 所屬分類: 管理
              軟件發行管理(上)
             
              上一篇講了發行管理的一些基本理論,最主要最根本的一點就是不要對發行的內容失去控制。在這個基礎上逐步加強對發行節奏的協調,可以形成良好的軟件發行管理制度,提高軟件發行能力。下面要說的是發行中的一些細節。

              在一個軟件的生命周期中,一般會有多次發行,尤其對于迭代開發的軟件更是這樣。每隔一段時間,生產商就會發行一個主要版本,其中包含大量功能改進或新增功 能。同時,在每個主要版本發行的間隔中,也會發行一些對當前用戶使用版本的補丁。這種情況是由軟件本身的性質決定的。對于實體的產品(如汽車),當發現設 計缺陷時必須要“召回”;而對于非實體的、形式的軟件產品,當發現缺陷時,就需要發行一個更正的補丁。實際上,軟件的主要版本和補丁版本往往是同時開發/ 修改的。版本管理和發行管理使用這種并行的開發活動互不干擾并且互相協作。下圖是軟件發行和版本管理的總圖:

                release1.bmp

              在上圖中,ADCTR分別代表分析、設計、編碼實現、測試和發行。紅線表示主要版本,所有新增功能和重大改進功能都在這個分支上進行,它代表軟件內容的增 加。幾個與Time軸平行的線表示補丁版本,對于重要缺陷的修正是在這個分支上進行,它也表示了補丁版本不增加新的內容(功能)。同時,主要版本上開發的 內容很多,涉及的文件修改也是數量巨大的。而補丁版本也稱為Minor版本,這個分支上沒有大量的修改,涉及的文件也很少。另外,我們也可以看到,每次的 發行都需要一定的時間,而在主要版本發行期間,主要版本分支理論上是沒有新的開發內容的,這種情況一直維持到新的版本計劃確定為止(實際上,新版本計劃通 常在版本發行之前就開始制定了)。

              在補丁分支上修改的文件,必須在測試通過后合并到其上面最近的分支中。這樣就保證了次要分支上的修 改不丟失,這些修改同樣也反映在后續的發行中。向最近的分支合并的文件,最終會被逐級合并到主要版本中。曾經有某國際大型知名軟件開發商,其安裝程序的一 個小缺陷在一個次要版本中更正了,但后來其發行的一個主要版本中并沒有修正這個缺陷。出現這種情況一般是因為沒有合并或沒有逐級合并。目前基本上所有的版本管理軟件都支持版本的分支和合并操作。

              也存在多分支(多于兩個)開發的情況,不過這種情況并不常見,因為控制上的難度很大,也容易出錯。實際上,當主要版本發行間隔過于密集時,也容易出現控制上的漏洞。

              在實際操作中,通常有兩個問題比較典型,也應該引起大家的注意。

              1. 版本主次不分

              在主要版本分支上開發的內容不是遠遠多于補丁版本分支上修改的內容,甚至在補丁分支上開發新增功能。這個問題的嚴重性超出想象。這直接導致版本的合并操作艱難,甚至完全不可能。注意:補丁版本上永遠只能做緊急、小量修改,稍大的缺陷修改都不應該在其上進行。

              2. 文件合并問題

              修改后測試通過的文件合并不及時、合并不正確也是常見的一個問題。合并不及時,就象不進行日構建一樣,具有同樣的危害。合并不正確會導致后續的發行版本包 含已確認解決的問題。這是應該在管理上加強控制的。另外,也不要太過于依賴自動的文件合并。

          評論

          # re: 軟件發行管理(下)  回復  更多評論   

          2005-12-16 23:14 by weide
          1. 版本主次不分

          通常我們描述為標準版本、定制版本。標準版本是符合大多數企業的通用版--標準版。為具體企業定制的版本,不是所有功能都適合放到標準版中,這樣定制的版本多了的時候,管理起來也很麻煩。定制的多個分支交叉開發的時候,有些是共性的能夠合并且應該合并到主分支,有些則不然

          # re: 軟件發行管理(下)  回復  更多評論   

          2006-03-11 13:58 by blueski
          我是sawin.cn的blueski,冒昧轉摘了此文,并表示一下感謝。
          主站蜘蛛池模板: 无棣县| 观塘区| 广平县| 乐山市| 莒南县| 卢湾区| 永顺县| 新竹市| 新野县| 佛冈县| 衡东县| 蚌埠市| 高淳县| 新绛县| 紫云| 灵台县| 乌鲁木齐县| 敦煌市| 岚皋县| 通山县| 五寨县| 凤冈县| 龙海市| 元谋县| 遂昌县| 娄烦县| 黄山市| 凤冈县| 榆社县| 烟台市| 浦县| 洛南县| 同心县| 常山县| 衡南县| 公安县| 内江市| 新邵县| 峡江县| 吕梁市| 秀山|