官术网_书友最值得收藏!

2.1 通用過程模型

過程被定義為在工作產(chǎn)品構(gòu)建過程中,所需完成的工作活動、動作和任務(wù)的集合。這些活動、動作和任務(wù)中的每一個都隸屬于某一框架或者模型,框架或模型定義了它們同過程之間或者相互之間的關(guān)系。

軟件過程示意圖如圖2-1所示,可以看出,每個框架活動由一系列軟件工程動作構(gòu)成,每個軟件工程動作由任務(wù)集合來定義,這個任務(wù)集合明確了將要完成的工作任務(wù)、將要產(chǎn)生的工作產(chǎn)品、所需要的質(zhì)量保證點,以及用于表明過程狀態(tài)的里程碑。

978-7-111-52634-6-Chapter02-1.jpg

圖2-1 軟件過程框架

2.1.1 定義框架活動

軟件工程的通用過程框架定義了5種框架活動——溝通、策劃、建模、構(gòu)建和部署。此外,一系列普適性活動——項目跟蹤控制、風(fēng)險管理、質(zhì)量保證、配置管理、技術(shù)評審及其他活動——貫穿軟件過程始終。過程流描述了在執(zhí)行順序和執(zhí)行時間上,如何組織框架中的活動、動作和任務(wù),如圖2-2所示。

線性過程流從溝通到部署順序執(zhí)行五個框架活動(見圖2-2a)。迭代過程流在執(zhí)行下一個活動前重復(fù)執(zhí)行之前的一個或多個活動(見圖2-2b)。演化過程流采用循環(huán)的方式執(zhí)行各個活動,每次循環(huán)都能產(chǎn)生更為完善的軟件版本(見圖2-2c)。并行過程流(見圖2-2d)將一個或多個活動與其他活動并行執(zhí)行(例如,軟件一個方面的建模可以同軟件另一個方面的構(gòu)建活動并行執(zhí)行)。

對于由個人負(fù)責(zé)的小型軟件項目(可能遠(yuǎn)程),其需求簡單明確,溝通也許僅僅是與合適的干系人的一個電話。因此,主要的動作是電話交流,這個動作所包括的主要工作任務(wù)集如下。

1)通過電話與干系人取得聯(lián)系。

2)討論需求并做記錄。

3)將筆記整理成一份簡單的書面需求。

4)通過E-mail,請干系人審閱并批準(zhǔn)。

如果項目有多個干系人,則要復(fù)雜得多,每個干系人都有著不同的需求(有時這些需求甚至是相互沖突的),溝通活動可能會包含6個不同的動作:啟動、需求獲取、需求系統(tǒng)、談判、規(guī)格說明和確認(rèn)。每個軟件工程動作都可能有很多工作任務(wù)和一些不同的工作成果。

978-7-111-52634-6-Chapter02-2.jpg

圖2-2 過程流

a)線性過程流 b)迭代過程流 c)演化過程流 d)并行過程流

2.1.2 明確任務(wù)集

每一個軟件工程動作(或稱行動)都由若干個任務(wù)集構(gòu)成,而每一個任務(wù)集都由軟件工程工作任務(wù)、相關(guān)工作產(chǎn)品、質(zhì)量保證點和項目里程碑等部分組成,需要選擇最滿足項目要求并適合開發(fā)團隊特點的任務(wù)集。這就意味著軟件工程動作可以根據(jù)軟件項目的特定需要和開發(fā)隊伍的特點做適當(dāng)?shù)恼{(diào)整。

任務(wù)集定義了為達(dá)到一個軟件工程動作的目標(biāo)所需要完成的工作。例如,需求獲取(或稱需求收集)就是發(fā)生在溝通活動中一個重要的軟件工程動作。需求獲取的目的是理解干系人對將構(gòu)建的軟件的需求。

對于一個小型、相對簡單的項目而言,獲取需求的任務(wù)集可能包括以下幾個。

1)制定項目的干系人列表。

2)邀請所有的干系人參加一個非正式會議。

3)征詢每一個人對于軟件特征和功能的需求。

4)討論需求,并確定最終的需求列表。

5)劃定需求優(yōu)先級。

6)標(biāo)出不確定領(lǐng)域。

對于大型、復(fù)雜的軟件工程項目而言,可能需要以下幾個不同的任務(wù)集。

1)制定項目的干系人列表。

2)和干系人的每一個成員分別單獨討論,獲取所有的要求。

3)基于任務(wù)集2)中的調(diào)查,建立初步的功能和特征列表。

4)安排一系列促進(jìn)需求獲取的會議。

5)組織會議。

6)在每次會議上建立非正式的用戶場景。

7)根據(jù)干系人的反饋,進(jìn)一步細(xì)化用戶場景。

8)建立一個修正的需求列表。

9)使用質(zhì)量功能部署技術(shù),劃分需求優(yōu)先級。

10)將需求打包,以便軟件可以增量交付。

11)標(biāo)注系統(tǒng)的約束和限制。

12)討論系統(tǒng)驗證方法。

上面兩種任務(wù)集都可以完成需求獲取,但是無論是從深度還是形式化[1]的程度來說,二者都有很大區(qū)別。軟件團隊?wèi)?yīng)采取適當(dāng)?shù)娜蝿?wù)集,以達(dá)到每個動作的目的,并且保持軟件質(zhì)量和開發(fā)的靈活性。

2.1.3 過程模式

每個軟件團隊在軟件過程中都會遇到很多問題。針對這些問題,如果軟件團隊能夠得到已有的經(jīng)過驗證的解決方案,將有助于他們快速地分析和解決問題。過程模式(Process Pattern)描述了軟件工程工作中遇到的與過程相關(guān)的問題、明確問題環(huán)境,并給出了針對該問題的一種或幾種可證明的解決方案。通俗地講,過程模式提供了一個模板——一種在軟件過程的背景下,統(tǒng)一描述問題解決方案的方法。通過模式組合,軟件團隊可以解決問題并定義最符合項目需求的開發(fā)過程。

可以在不同抽象層次上定義模式。在某些情況下,模式可以描述一個與完整過程模型(例如原型開發(fā))相關(guān)的問題(及其解決方案)。在其他的情況下,模式可以描述一個與框架活動(譬如策劃)或者框架活動中的一項具體任務(wù)(譬如項目估算)相關(guān)的問題(及其解決方案)。

例如,過程模式的描述模板可以是下列形式。

1)模式名稱。模式名稱應(yīng)能清楚地表述該模式在軟件過程中的含義(如技術(shù)評審)。

2)驅(qū)動力。模式使用環(huán)境及主要問題,以明確主要難點及可能的解決方案。

3)類型。定義模式類型。例如,3種類型分別如下。

①步驟模式,定義了與過程的框架活動相關(guān)的問題。由于框架活動包括很多動作和工作任務(wù),步驟模式包括與步驟(框架活動)有關(guān)的許多任務(wù)模式。例如,建立溝通可能作為一個步驟模式。該步驟模式可能包括需求獲取等任務(wù)模式。

②任務(wù)模式,定義了與軟件工程動作或工作任務(wù)相關(guān)、關(guān)系軟件工程實踐成敗的問題(例如,需求獲取是一個任務(wù)模式)。

③階段模式,定義了在過程中發(fā)生的框架活動序列,即使這些活動流本質(zhì)上是迭代的。例如,螺旋模型和原型開發(fā)就是兩種階段模式。

4)啟動條件。它描述的是模式應(yīng)用的前提條件。在應(yīng)用模式之前需要明確以下幾點。

①在此之前,整個開發(fā)組織或是開發(fā)團隊內(nèi)已經(jīng)有哪些活動?

②過程的進(jìn)入狀態(tài)是什么?

③已經(jīng)有哪些軟件工程信息或項目信息?

例如,策劃模式(階段模式)需要的前提條件有:

①客戶和軟件工程師已經(jīng)建立了合作的交流機制。

②已經(jīng)成功完成一些客戶溝通模式中特定的任務(wù)模式。

③項目范圍、基本業(yè)務(wù)需求和項目限制條件已經(jīng)確定。

5)問題。描述模式將要解決的具體問題。

6)解決辦法。描述如何成功實現(xiàn)模式。這部分主要討論隨著模式的啟動,過程的初始狀態(tài)(模式應(yīng)用之前就已經(jīng)存在)是如何發(fā)生改變的。解決方法也描述了隨著模式的成功執(zhí)行,模式啟動之前所獲得的軟件工程信息和項目信息是如何變換的。

7)結(jié)束條件。描述模式成功執(zhí)行之后的結(jié)果。模式結(jié)束時需要明確:

①必須完成哪些開發(fā)組織或是開發(fā)團隊相關(guān)的活動?

②過程的結(jié)束狀態(tài)是什么?

③產(chǎn)生了哪些軟件工程信息或項目信息?

8)相關(guān)模式。以層次或其他圖的方式列舉與該模式直接相關(guān)的其他過程模式。例如步驟模式溝通包括了一組任務(wù)模式:項目團隊組織、合作指導(dǎo)原則定義、范圍分解、需求獲取、約束描述及場景模式的創(chuàng)建等。

9)已知應(yīng)用實例。說明該模式可應(yīng)用的具體實例。例如,溝通在每一個軟件項目的開始都是必需的,建議在整個軟件項目過程中采用,并規(guī)定在部署活動中必須進(jìn)行。

過程模式提供了一種有效的機制,用以解決任何與軟件過程相關(guān)的問題。模式使得軟件工程組織能夠從高層抽象開始(階段模式),建立層次化的過程描述。高層抽象描述進(jìn)一步細(xì)化為一系列步驟模式以描述框架活動,然后每一個步驟模式又進(jìn)一步逐層細(xì)化為更詳細(xì)的任務(wù)模式。過程模式一旦建立起來,就可以復(fù)用來定義各種過程變體——即軟件開發(fā)隊伍可以將模式作為過程模型的構(gòu)建模塊,定制特定的過程模型。

2.1.4 過程評估與改進(jìn)

軟件過程并不能保證軟件按期交付,也不能保證軟件滿足客戶要求或軟件具備了長期質(zhì)量保證的技術(shù)特點。軟件過程模型必須與切實的軟件工程實踐相結(jié)合。另外,對過程本身也要進(jìn)行評估,以確保滿足了成功軟件工程所必需的基本過程標(biāo)準(zhǔn)要求。

在過去的幾十年中,提出了多種軟件過程評估和改進(jìn)方法,列舉如下。

(1)用于組織內(nèi)部過程改進(jìn)的CMM評估,采用CMM作為評估的依據(jù),提供了一種診斷方法,用以分析軟件開發(fā)機構(gòu)的相對成熟度。

CMM(Capability Maturity Modelfor Software)是指“能力成熟度模型”,它是對軟件組織在定義、實施、度量、控制和改善其軟件過程的實踐中各個發(fā)展階段的描述。CMM的核心是把軟件開發(fā)視為一個過程,并根據(jù)這一原則對軟件開發(fā)和維護(hù)進(jìn)行過程監(jiān)控和研究,以使其更加科學(xué)化、標(biāo)準(zhǔn)化,使企業(yè)能夠更好地實現(xiàn)商業(yè)目標(biāo)。

(2)用于過程改進(jìn)的CMMI標(biāo)準(zhǔn)評估方法提供了5步的過程評估模型:啟動、診斷、建立、執(zhí)行和學(xué)習(xí)。該方法采用CMMI作為評估的依據(jù),CMMI詳細(xì)介紹了軟件過程的基本特征及過程成功的標(biāo)準(zhǔn)。

CMMI(Capability Maturity Model Integration)是指“軟件能力成熟度模型集成”(也稱為軟件能力成熟度集成模型),是美國國防部的一個設(shè)想,1994年由美國國防部與卡內(nèi)基-梅隆大學(xué)的軟件工程研究中心(SEISM)及美國國防工業(yè)協(xié)會共同開發(fā)和研制。他們計劃把現(xiàn)在所有現(xiàn)存實施的與即將開發(fā)出來的各種能力成熟度模型集成到一個框架中去。申請此認(rèn)證的前提條件是該企業(yè)具有有效的軟件企業(yè)認(rèn)定證書。其目的是幫助軟件企業(yè)對軟件工程過程進(jìn)行管理和改進(jìn),增強開發(fā)與改進(jìn)能力,從而能按時地、不超預(yù)算地開發(fā)出高質(zhì)量的軟件。其所依據(jù)的想法是:只要集中精力持續(xù)努力地去建立有效的軟件工程過程的基礎(chǔ)結(jié)構(gòu),不斷進(jìn)行管理的實踐和過程的改進(jìn),就可以克服軟件開發(fā)中的困難。CMMI為改進(jìn)一個組織的各種過程提供了一個單一的集成化框架,新的集成模型框架消除了各個模型的不一致性,減少了模型間的重復(fù),增加了透明度和理解,建立了一個自動的、可擴展的框架。因而能夠從總體上改進(jìn)組織的質(zhì)量和效率。CMMI的主要關(guān)注點就是成本效益、明確重點、過程集中和靈活性4個方面。

CMMI是一套融合多學(xué)科的、可擴充的產(chǎn)品集合,其研制的初步動機是為了利用兩個或多個單一學(xué)科的模型實現(xiàn)一個組織的集成化過程改進(jìn)。CMMI的本質(zhì)是軟件管理工程的一個部分。軟件過程改善是當(dāng)前軟件管理工程的核心問題,50多年來,計算機的發(fā)展使人們認(rèn)識到要想高效率、高質(zhì)量和低成本地開發(fā)軟件,必須改善軟件生產(chǎn)過程。基于模型的過程改進(jìn)是指采用能力模型來指導(dǎo)組織的過程改進(jìn),使其過程能力穩(wěn)定地進(jìn)行改善,該組織也能變得更加成熟。

CMMI的成功促使其他學(xué)科也相繼開發(fā)出類似的過程改進(jìn)模型,如系統(tǒng)工程、需求工程、人力資源、集成產(chǎn)品開發(fā)和軟件采購等,從CMMI衍生出一些改善模型。不過,同一個組織中存在多個過程改進(jìn)模型可能會引起沖突和混淆,CMMI就在這些模式之間進(jìn)行協(xié)調(diào)。

●SPICE標(biāo)準(zhǔn)定義了軟件過程評估的一系列要求。該標(biāo)準(zhǔn)的目的是幫助軟件開發(fā)組織建立客觀的評價體系,以評估定義的軟件過程的有效性。

●軟件ISO 9001:2000,這是一個通用標(biāo)準(zhǔn),任何開發(fā)組織如果希望提高所提供的產(chǎn)品、系統(tǒng)或服務(wù)的整體質(zhì)量,都可以采用這個標(biāo)準(zhǔn)。因此,該標(biāo)準(zhǔn)可直接應(yīng)用于軟件組織和公司。

主站蜘蛛池模板: 青神县| 张家界市| 富蕴县| 呼和浩特市| 弋阳县| 丁青县| 南投市| 双城市| 乳山市| 白水县| 霍林郭勒市| 邹城市| 彰武县| 宜丰县| 西和县| 体育| 法库县| 沛县| 金华市| 开鲁县| 福海县| 花垣县| 乳山市| 永和县| 昆山市| 清河县| 曲麻莱县| 类乌齐县| 岑巩县| 滨州市| 永宁县| 安庆市| 大石桥市| 隆尧县| 泸定县| 宜春市| 蓝田县| 东海县| 亚东县| 荆州市| 绥阳县|