2.3 軟件生存周期過程與軟件過程工程
軟件生存周期過程也稱為軟件過程,是指軟件生存周期中的一系列相關過程。過程就是活動的集合,活動是任務的集合,任務則起到把輸入加工成輸出的作用。活動的執行可以是順序的、迭代的(重復的)、并行的、嵌套的或者是有條件地引發的。
GB/T 8566—2007把軟件生存周期中可以開展的活動分為5個基本過程、8個支持過程和4個組織過程。每一生存周期過程劃分為一組活動,每一項活動進一步劃分為一組任務,如圖2-11所示。
圖2-11 軟件生存周期過程的結構
事實上,無論從概念上如何解釋和劃分,軟件過程都應當包含以下3個含義。
●個體含義:即指軟件或系統在生存周期中的某一類活動的集合,如獲取過程、供應過程、開發過程和管理過程等。
●整體含義:即指軟件或系統在所有上述含義下的軟件過程的總體。
●工程含義:即指解決軟件過程的工程,它應用軟件工程的原則和方法來構造軟件過程模型,并結合軟件的具體要求進行例化,以及在用戶環境中運作,以此來進一步提高軟件的開發率,降低成本。
軟件過程的工程含義還可以包含以下幾個方面。
1)軟件過程不僅要有工程視圖,也要有合同視圖(包括系統視圖和用戶視圖)。任何軟件的開發必然涉及供需雙方,從合同視圖考慮相關的活動必要而且可行;同時,由于軟件復用技術已經較為成熟,對已有構件或子系統的復用需求也需涉及供需活動,對供需活動的良好定義能夠從客戶接口方面保證軟件的質量。為此軟件過程應當涉及獲取過程和供應過程。
2)軟件過程包含管理視圖。提高生產率和軟件質量這兩個目標能否實現,其關鍵還在于管理和支持能力,就管理與被管理、管理與支持等命題已出現越來越多的研究結果,它貫穿于軟件生存周期,又同軟件開發相對獨立,為此軟件過程應當涉及管理過程和支持過程。
3)軟件過程應包含運作視圖。由于區分了軟件開發環境和業務運作環境,并且系統或軟件也不一定全部自行開發,可以從獲取過程得到所需的部分軟件并投入使用,因而需要考慮與軟件運作相關的問題,運作過程便從工程過程中獨立出來,形成相對獨立的過程。
4)不同角色由于其視圖不同,所參與的軟件過程亦不相同。如管理者按其管理視圖參與的是管理過程;用戶和操作人員按其運作視圖參與的是運作過程;開發人員和維護人員按其工程視圖參與的是開發過程和維護過程;獲取者(如設備、系統軟件采購人員)或供應者(如軟件銷售人員)按其合同視圖參與的是獲取過程或供應過程;介入支持活動的人員(如培訓工程師、設備管理員等)按他們支持的目標負責支持過程的某些工作。軟件過程研究的對象因而擴展到從事軟件活動的各類人員上。
對一個特定的軟件項目而言,軟件過程可被視為開展與軟件開發相關的一切活動的指導性的綱領和方案,因而軟件過程的優劣對軟件的成功開發起決定作用。那么,如何建立那些對軟件項目的開發具有積極意義的軟件過程,便是“軟件過程工程”所涉及和研究的內容。因此,“軟件過程工程”定義為:為建立軟件過程所必須實施的一系列工程化的活動,它涉及與此有關的方法、工具和環境的研究。
“軟件過程工程”是“軟件工程”理論中新形成的一個重要內容,而“軟件生存周期過程”則是“軟件過程工程”的基本概念。因此,以工程化的思維方式理解“軟件生存周期過程”概念及其他相關概念、構成軟件生存周期過程的各項內容,以及構造一個軟件生存周期過程的各項活動等,對了解和理解“軟件過程工程”并進而對“軟件過程工程”理論進行研究尤為重要。