天天看點

《實踐者的研究方法》—— 第2章 軟體工程 2.2 軟體過程

本節書摘來自華章出版社《實踐者的研究方法》一書中的第2章,第2.2節,作者羅傑 s. 普萊斯曼(roger s. pressman),更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

<b>2.2 軟體過程</b>

軟體過程是工作産品建構時所執行的一系列活動、動作和任務的集合。活動(activity)主要實作寬泛的目标(如與利益相關者進行溝通),與應用領域、項目大小、結果複雜性或者實施軟體工程的重要程度沒有直接關系。動作(action,如體系結構設計)包含了主要工作産品(如體系結構設計模型)生産過程中的一系列任務。任務(task)關注小而明确的目标,能夠産生實際産品(如建構一個單元測試)。

在軟體工程領域,過程不是對如何建構計算機軟體的嚴格的規定,而是一種具有可适應性的調整方法,以便于從業人員(軟體團隊)可以挑選适合的工作動作和任務集合。其目标通常是及時、高品質地傳遞軟體,以滿足軟體項目資助方和最終使用者的需求。

2.2.1 過程架構

過程架構(process framework)定義了若幹個架構活動(framework activity),為實作完整的軟體工程過程建立了基礎。這些活動可廣泛應用于所有軟體開發項目,無論項目的規模和複雜性如何。此外,過程架構還包含一些适用于整個軟體過程的普适性活動(umbrella activity)。一個通用的軟體工程過程架構通常包含以下5個活動。

溝通。在技術工作開始之前,和客戶(及其他利益相關者)的溝通與協作是極其重要的,其目的是了解利益相關者的項目目标,并收集需求以定義軟體特性和功能。

策劃。如果有地圖,任何複雜的旅程都可以變得簡單。軟體項目好比是一個複雜的旅程,策劃活動就是建立一個“地圖”,以指導團隊的項目旅程,這個地圖稱為軟體項目計劃,它定義和描述了軟體工程工作,包括需要執行的技術任務、可能的風險、資源需求、工作産品和工作進度計劃。

模組化。無論你是庭園設計師、橋梁建造者、航空工程師、木匠還是建築師,你每天的工作都離不開模型。你會畫一張草圖來輔助了解整個項目大的構想——體系結構、不同的構件如何結合,以及其他一些特性。如果需要,可以把草圖不斷細化,以便更好地了解問題并找到解決方案。軟體工程師也是如此,需要利用模型來更好地了解軟體需求,并完成符合這些需求的軟體設計。

建構。必須要對所做的設計進行建構,包括編碼(手寫的或者自動生成的)和測試,後者用于發現編碼中的錯誤。

部署。軟體(全部或者部分增量)傳遞給使用者,使用者對其進行評測并給出回報意見。

上述五個通用架構活動既适用于簡單小程式的開發,也可用于webapp的建造以及基于計算機的大型複雜系統工程。不同的應用案例中,軟體過程的細節可能差别很大,但是架構活動都是一緻的。

對許多軟體項目來說,随着項目的開展,架構活動可以疊代應用。也就是說,在項目的多次疊代過程中,溝通、策劃、模組化、建構、部署等活動不斷重複。每次項目疊代都會産生一個軟體增量(software increment),每個軟體增量實作了部分的軟體特性和功能。随着每一次增量的産生,軟體将逐漸完善。

2.2.2 普适性活動

軟體工程過程架構活動由很多普适性活動來補充實作。通常,這些普适性活動貫穿軟體項目始終,以幫助軟體團隊管理和控制項目進度、品質、變更和風險。典型的普适性活動包括如下活動。

軟體項目跟蹤和控制——項目組根據計劃來評估項目進度,并且采取必要的措施保證項目按進度計劃進行。

風險管理——對可能影響項目成果或者産品品質的風險進行評估。

軟體品質保證——确定和執行保證軟體品質的活動。

技術評審——評估軟體工程産品,盡量在錯誤傳播到下一個活動之前發現并清除錯誤。

測量——定義和收集過程、項目以及産品的度量,以幫助團隊在釋出軟體時滿足利益相關者的要求。同時,測量還可與其他架構活動和普适性活動配合使用。

軟體配置管理——在整個軟體過程中管理變更所帶來的影響。

可複用管理——定義工作産品複用的标準(包括軟體構件),并且建立構件複用機制。

工作産品的準備和生産——包括生成産品(如模組化、文檔、日志、表格和清單等)所必需的活動。

上述每一種普适性活動都将在本書後續部分詳細讨論。

2.2.3 過程的适應性調整

在本節前面部分曾提到,軟體工程過程并不是教條的法則,也不要求軟體團隊機械地執行;而應該是靈活可适應的(根據軟體所需解決的問題、項目特點、開發團隊群組織文化等進行适應性調整)。是以,不同項目所采用的項目過程可能有很大不同。這些不同主要展現在以下幾個方面:

活動、動作和任務的總體流程以及互相依賴關系。

在每一個架構活動中,動作和任務細化的程度。

工作産品的定義和要求的程度。

品質保證活動應用的方式。

項目跟蹤和控制活動應用的方式。

過程描述的詳細程度和嚴謹程度。

客戶和利益相關者對項目的參與程度。

軟體團隊所賦予的自主權。

隊伍組織和角色的明确程度。

本書第1部分将詳細介紹軟體過程。

繼續閱讀