首页
/
每日頭條
/
科技
/
軟件配置管理的角度
軟件配置管理的角度
更新时间:2025-04-23 03:55:20
引言

如果你從事軟件開發相關工作,一定聽說過軟件配置管理。

而對于多數人來說,軟件配置管理也可能隻是聽說過,感覺就在身邊,卻又讓人摸不到,也說不清楚。而有些即使在從事軟件配置管理的工作,也不能很好地理解它的作用和意義,有些也是在僵硬固化地模仿着做,不清楚軟件配置管理的真正内涵。

本文就試圖揭開軟件配置管理神秘的層層面紗,一探其究竟。

軟件配置管理的角度(軟件配置管理并不是那麼簡單)1

軟件配置管理(Software Configuration Management)

缺失配置管理帶來的問題

在了解什麼是軟件配置管理之前,先讓我們看一下沒有它,或者沒有做好它的時候,軟件開發過程會發生哪些事情。

你一定聽說過或者經曆過以下問題:

  • 找不到最新的開發計劃文檔
  • 使用了舊版本的需求文檔
  • 在錯誤的代碼版本上進行開發
  • 代碼分支混亂,無所适從
  • 依賴了錯誤版本的軟件包
  • 已經解決過的缺陷再次出現
  • 發布了錯誤的軟件版本
  • 軟件無法正确安裝,或者安裝後不能正常工作

軟件配置管理的角度(軟件配置管理并不是那麼簡單)2

軟件配置管理不足帶來的問題

類似的問題還有很多,這些軟件開發過程的混亂和無序,都是軟件配置管理工作缺失或沒有做好所導緻的。

軟件配置管理的意義

我們已經知道缺失軟件配置管理後,軟件開發活動是多麼混亂和無序,這是因為根據軟件項目的特點,軟件必須進行配置管理。

軟件項目日趨龐雜,需要很多人協作,需要在多種平台上運行,需要支持若幹版本,又處于不斷演化和變更狀态,容易拷貝,等等這些特點,決定了軟件配置管理的必要性。

軟件配置管理的角度(軟件配置管理并不是那麼簡單)3

軟件項目特點要求軟件進行配置管理

什麼是軟件配置管理

配置管理最初來自于制造行業,用于規範設備的設計與制造,始終交付有效的産品。

之所以叫“配置管理“,是因為成品基本都是由具備不同功能特性的零件配置起來的,随着成品的革新,零件也可能升級換代,配置管理需要把它們的版本和關系清楚記錄和管控。

為了便于理解,可以舉個比較生活化的例子。就拿餐館來說,為了讓每位客人最終享用到滿意的飯菜,避免發生做錯菜、上錯菜等錯誤,就需要将備料、點菜、加菜、制作、留樣、上菜、退菜等環節中的影響菜品制成的要素有效地管控起來,如菜品對原料要求,客人對菜品的口味要求等,做好記錄和管控。

軟件配置管理的角度(軟件配置管理并不是那麼簡單)4

餐廳菜品配置管理示意(局部)

我們将以上場景平移到軟件開發過程中,客戶點的菜品就相當于軟件需求,客戶加菜、退菜相當于需求的變更,廚房做菜的過程就相當于設計、編碼,做成的菜品就是最終編譯打包後的軟件産品,整個過程如果沒有有效地記錄和控制,可想而知是多麼的混亂、無序和錯漏百出,結果也絕不會令人滿意。

所以,我們也可以把軟件也看成是逐步演化和裝配起來的,軟件開發也需要一種可以将形成和影響軟件中間或最終形态的各種“成份”加以識别,并管控其版本和變更,實現軟件每個狀态的可追溯,使整個過程能夠有條不紊地進行,而這就是所謂的軟件配置管理。

為便于從多個角度理解軟件配置管理,下面給出一些較為學術的描述:

[微風]CMM-CMMI 軟件能力成熟度模型與模型集成:

軟件配置管理是“軟件過程的關鍵要素,是開發和維護各個階段管理軟件演進過程的方法和規程”。

​​[微風]ISO 9000-3:1997 質量管理和質量保證标準 :

配置管理是一個管理學科,它對配置項(包括軟件項)的開發和支持生存期給予技術上的和管理上的指導。配置管理的應用取決于項目的規模、複雜程度和風險大小。

​​[微風]GB/T 11457:1995 《軟件工程術語》:

A.表示和确定系統中配置項的過程,在系統整個生存期内控制這些配置項的投放和更動,記錄并報告配置的狀态和更動要求,驗證配置項的完整性和正确性。

B.對下列工作進行技術和行動指導與監督的一套規範:

——對配置項的功能特性和物理特性進行标識和文件編制工作;

——控制這些特性的更動情況;

——記錄并報告這些更動進行的處理和實現的狀态。

​​[微風]IEEE 828-1998 配置管理技術标準:

軟件配置管理是軟件工程中用來管理軟件資産變更的一項規程,包括它所使用的相關工具和應用技術(流程和方法)。

軟件配置管理的原理

我們知道,軟件是一個形成和演化的過程,在其生命周期中,它的形态和組成不斷地變化。最初,它的形态表現為業務需求文檔,接着又演化為系統需求的形态,進而被描述為概要設計和詳細設計,再接下來表現為代碼、依賴包、測試代碼等,後來又演變為部署包和安裝文檔,再後來是運行的産品和用戶手冊。

軟件配置管理的角度(軟件配置管理并不是那麼簡單)5

軟件形态演進簡單示意

可以将軟件演進比作一棵小樹逐漸成長為大樹的過程,這棵樹就是我們的軟件,樹的樹根、樹幹、枝條、樹葉、花、果實等就是形成軟件的文檔、代碼等,我們隻要完整記錄樹根、枝條、樹葉等的每次變化,就能随時“還原”出樹在某個時刻的模樣。我們再對枝條修剪、果實采摘等行為進行規範管理,就可以使這棵樹按照預定的目标健康有序成長。

軟件配置管理的角度(軟件配置管理并不是那麼簡單)6

樹木有序成長

所以,軟件配置管理的原理就是:通過對軟件的各配置項各版本進行有效記錄,并對它們的變更進行管控,來維護軟件的完整性、正确性和可追溯性,最終實現軟件的有序和高效演進。配置管理的核心就是對版本和變更的管理,就是在管理變化。

由此,我們也可以從另一個角度認識軟件配置:

軟件配置是軟件産品在生命周期各階段的不同形式和不同版本的程序、文檔和數據的集合,集合中的每個元素就是一個配置項。

下圖描述了包含階梯式、變更集、變化跟蹤、并行開發等多個配置管理的方法論,用于協調問題跟蹤和變更管理(見于徐曉春、李高健編寫的《軟件配置管理》)。

軟件配置管理的角度(軟件配置管理并不是那麼簡單)7

配置管理的若幹方法論

軟件配置管理的目标

軟件配置管理應實現配置管理的計劃性、配置項的完整識别、配置項獲取和變更的受控、軟件狀态便于了解等目标和效果。

軟件配置管理的角度(軟件配置管理并不是那麼簡單)8

軟件配置管理的目标

軟件配置管理的任務

為了做好軟件配置管理,達到其應有效果,除了做好對配置項的标識、版本管理、變更控制等核心任務外,還需要做好計劃、培訓、審計、報告等輔助工作。

軟件配置管理的角度(軟件配置管理并不是那麼簡單)9

軟件配置管理工作任務

軟件配置管理的角度(軟件配置管理并不是那麼簡單)10

配置管理工作任務順序關系

也可以将軟件配置管理活動劃分為版本控制、變更控制和過程控制三個方面。

軟件配置管理的角度(軟件配置管理并不是那麼簡單)11

軟件配置管理的三個方面

下圖體現了主要配置管理活動的層次關系。

軟件配置管理的角度(軟件配置管理并不是那麼簡單)12

配置管理的層次

軟件配置管理的組織和流程

為了有序開展軟件配置管理的以上活動,需要建立一些組織和角色,以下是一種軟件配置管理組織和流程。

軟件配置管理的角度(軟件配置管理并不是那麼簡單)13

軟件配置管理角色和職責

軟件配置管理的角度(軟件配置管理并不是那麼簡單)14

軟件配置管理基本流程

軟件配置管理的模式

在軟件配置管理中,有主分支、開發分支、本地工作空間、預發布分支、發布分支等模式可使用。

軟件配置管理的角度(軟件配置管理并不是那麼簡單)15

軟件配置管理常見模式

軟件配置管理的有效執行

有成效的配置管理,需要形成人、規範和工具三方面有機結合的最佳實踐。

軟件配置管理的角度(軟件配置管理并不是那麼簡單)16

軟件配置管理最佳實踐

配置項

軟件配置是一個集合,該集合中的每一個元素稱為該軟件産品軟件配置中的一個配置項(Software Configuration Item,SCI)。常見的軟件配置項有需求規格說明書、設計規格說明書、源代碼、測試計劃、測試用例、用戶手冊等

軟件配置管理的角度(軟件配置管理并不是那麼簡單)17

軟件配置項

标識配置項需要考慮配置項組名、配置項名稱、配置項文件名或命名規則、版本編号和變更規程等。

軟件配置管理的角度(軟件配置管理并不是那麼簡單)18

配置項标識考慮因素

配置庫

一般将配置庫分為開發庫、受控庫和産品庫。

軟件配置管理的角度(軟件配置管理并不是那麼簡單)19

配置庫劃分

配置基線

基線(Baseline)是指一個(或一組)配置項在項目生命周期的不同時間點上通過正式評審而進入正式受控的一種狀态,是軟件生命周期中各開發階段的一個特定點,它的作用是把開發各階段工作的劃分更加明确化,使本來連續的工作在這些點上斷開,以便于檢查與肯定階段成果。

軟件配置管理的角度(軟件配置管理并不是那麼簡單)20

配置基線

軟件配置管理的角度(軟件配置管理并不是那麼簡單)21

配置基線與開發階段

配置管理與DevOps

DevOps推崇”一切自動化“,而軟件配置管理則是“一切自動化”的基石。

要實現“一切自動化”,需要将需求、代碼、軟件包、部署包,乃至基礎設施,等等一切影響構建、測試、部署的元素都版本化,都納入配置管理中來,在各階段共享唯一受信源,實現可追溯、可重現。

軟件配置管理的角度(軟件配置管理并不是那麼簡單)22

一切版本化、一切自動化

結語

随着軟件行業的發展,敏捷和DevOps的廣泛流行,軟件配置管理的實踐也一直在演化之中,一些舊的概念和做法逐漸限于在部分行業領域中使用,像基礎設施即代碼、不可變基礎設施等新興理念和實踐,也在大範圍應用之中,軟件配置管理的重要性将越來越高。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
推荐阅读
小兒科普短(廣州兒科專家玩轉科普短)
小兒科普短(廣州兒科專家玩轉科普短)
     什麼是“網紅”醫師?是互聯網 醫療時代的健康資訊的傳播者,更是互聯網 醫療時代的實踐者。他們中的多數并不追求變現、拒絕帶貨,用文字、文圖、視頻、直播科普更多健康知識。8月19日第四個醫師節來臨之際,南都健康聯盟用文字和視頻,持續關注并講述廣東“網紅”醫師的科普故事,記錄他們“翻紅”的足迹。   印根權   入駐平台:抖音、快手、小紅書   昵稱:印...
2025-04-23
買蘋果手機缺點和優點(買蘋果手機你得知道的優缺點)
買蘋果手機缺點和優點(買蘋果手機你得知道的優缺點)
  被“上帝吃了口” 的蘋果   看到蘋果手機,大家會也買,但買蘋果的手機,有優點也有缺點。      蘋果的優點:系統流暢,影像清晰,音質好,保值率高,有檔次。   蘋果的缺點:價格偏高,信号不好,電池容量低,充電速度慢,系統封閉。   建議:在選擇手機的時候,看自己所需,如果你預算充足,平常玩遊戲多又對配置要求高,又要拿得出手,可以選擇蘋果手機。如果的你...
2025-04-23
python如何寫代碼和運行代碼(Python開發者如何更加高效地編寫代碼)
python如何寫代碼和運行代碼(Python開發者如何更加高效地編寫代碼)
     對于 Python 開發者而言,Anaconda 能省下大量時間下載和安裝模塊包、處理項目環境等問題,幫助開發者更加愉快地編寫代碼。      如果你苦于給 Python 安裝各種包,安裝過程中還各種出錯。那麼我牆裂推薦——Anaconda,它可以幫助你管理這些包,包括安裝、卸載、更新。   Anaconda 附帶一大批常用數據科學包,如:cond...
2025-04-23
目前iphone8256g價格(手機報價iPhone8)
目前iphone8256g價格(手機報價iPhone8)
  iPhone 8 國行256G的價格居然比港行還便宜100塊錢!   這是一個神奇的報價單,繼昨天的之後,第二次國行價格低于港版。嗯,想下手的同學可以出手了!      所以想入手iPhone的朋友們,已經到了合适的購買時間啦。有需要的小夥伴可以直接私信我就好啦   ,
2025-04-23
大數據爬蟲最新的數據(大數據ELK二十二)
大數據爬蟲最新的數據(大數據ELK二十二)
  #頭條創作挑戰賽#      采集Apache Web服務器日志一、需求Apache的Web Server會産生大量日志,當我們想要對這些日志檢索分析。就需要先把這些日志導入到Elasticsearch中。此處,我們就可以使用Logstash來實現日志的采集   打開這個文件,如下圖所示。我們發現,是一個純文本格式的日志。如下圖所示:      這個日志...
2025-04-23
Copyright 2023-2025 - www.tftnews.com All Rights Reserved