高級軟件工程第2章過程_第1頁
高級軟件工程第2章過程_第2頁
高級軟件工程第2章過程_第3頁
高級軟件工程第2章過程_第4頁
高級軟件工程第2章過程_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

第2章軟件過程軟件過程框架傳統(tǒng)過程模型專用過程模型統(tǒng)一過程模型敏捷過程模型第2章軟件過程當(dāng)開發(fā)產(chǎn)品或構(gòu)建系統(tǒng)時,遵循一系列可預(yù)測的步驟(即路線圖)是非常重要的,它有助于及時交付高質(zhì)量的產(chǎn)品。軟件開發(fā)中所遵循的路線圖就稱為“軟件過程”。第2章軟件過程軟件過程是工作產(chǎn)品構(gòu)建時所執(zhí)行的一系列活動、動作和任務(wù)的集合?;顒樱ˋctivity)主要實現(xiàn)寬泛的目標(biāo)(如與利益相關(guān)者進行溝通),與應(yīng)用領(lǐng)域、項目大小等沒有直接關(guān)系。動作(Action)(如體系結(jié)構(gòu)設(shè)計)包含主要工作產(chǎn)品(如體系結(jié)構(gòu)設(shè)計模型)構(gòu)建過程中的一系列任務(wù)。任務(wù)(Task)關(guān)注小而明確的目標(biāo),能夠產(chǎn)生實際產(chǎn)品(如構(gòu)建一個單元測試)。

第2章軟件過程軟件過程提高了軟件工程活動的穩(wěn)定性、可控性和有組織性,如果沒有過程約束,軟件活動將失控并變得混亂。軟件過程不是對如何構(gòu)建計算機軟件的嚴(yán)格的規(guī)定,而是一種可進行適應(yīng)性調(diào)整的方法,以便于工作人員(軟件團隊)可以挑選適合的動作和任務(wù)集合。2.1軟件過程框架過程框架過程框架定義了若干個框架活動,為完整的軟件開發(fā)過程建立了基礎(chǔ)。這些框架活動可廣泛應(yīng)用于所有的軟件開發(fā)項目。過程框架還包含一些適用于整個軟件過程各個階段的活動,稱為“普適性活動(UmbrellaActivities)”。

2.1軟件過程框架軟件過程框架的組成2.1軟件過程框架通用過程框架通用過程框架可適用于絕大多數(shù)的軟件項目,該框架由溝通、策劃、建模、構(gòu)建和部署5個通用框架活動組成。(1)溝通。在技術(shù)工作開始之前,與客戶(及其他利益相關(guān)者)的溝通與協(xié)作是極其重要的;其目的是理解利益相關(guān)者的項目目標(biāo),并收集需求以定義軟件特性和功能。2.1軟件過程框架通用過程框架

(2)策劃。策劃活動協(xié)助軟件開發(fā)團隊定義全局目標(biāo),并為后續(xù)的軟件工程工作制定計劃。策劃活動包括一系列管理和技術(shù)實踐,如描述需要執(zhí)行的技術(shù)任務(wù)、可能的風(fēng)險、資源需求、工作產(chǎn)品和工作進度計劃等。2.1軟件過程框架通用過程框架(3)建模。建模的目的是為了更好地理解需要構(gòu)建的實體。在軟件工程中,主要創(chuàng)建兩類模型:分析模型和設(shè)計模型。分析模型通過描述軟件的信息域、功能域及行為域來表達客戶的需求;設(shè)計模型描述軟件架構(gòu)、用戶界面及構(gòu)件細節(jié),從而幫助開發(fā)者高效地開發(fā)軟件。2.1軟件過程框架通用過程框架(4)構(gòu)建。構(gòu)建活動包括一系列構(gòu)件組裝、編碼和測試任務(wù),從而為向客戶和最終用戶交付可運行的軟件做好準(zhǔn)備。(5)部署。部署活動是將軟件(全部或者完成的部分)交付給用戶,用戶對其進行評測并給出反饋意見。部署活動包括三個動作:交付、支持和反饋。2.1軟件過程框架過程流溝通策劃建模構(gòu)建部署溝通線性過程流迭代過程流演化過程流平行過程流時間溝通策劃建模構(gòu)建部署增量發(fā)布溝通策劃建模構(gòu)建部署策劃建模構(gòu)建部署2.1軟件過程框架典型的普適性活動(1)軟件項目跟蹤和控制:由項目組根據(jù)計劃來評估項目進度,并且采取必要的措施保證項目按進度計劃進行。(2)風(fēng)險管理:評估可能對項目成果或者產(chǎn)品質(zhì)量產(chǎn)生影響的風(fēng)險。(3)軟件質(zhì)量保證:確定和執(zhí)行用以保證軟件質(zhì)量的活動。(4)正式技術(shù)評審:評估軟件工程產(chǎn)品,盡量在錯誤傳播到下一個動作或活動之前,發(fā)現(xiàn)并清除錯誤。2.1軟件過程框架典型的普適性活動(5)測量:定義和收集過程、項目和產(chǎn)品的度量數(shù)據(jù),以幫助團隊在發(fā)布軟件的時候滿足客戶要求。同時,測量還可與其他框架協(xié)同使用。(6)軟件配置管理:管理整個軟件過程中變更所帶來的影響。(7)可復(fù)用管理:定義產(chǎn)品復(fù)用的標(biāo)準(zhǔn)(包括軟件構(gòu)件),并且建立構(gòu)件復(fù)用機制。(8)工作產(chǎn)品的準(zhǔn)備和生產(chǎn):包括創(chuàng)建產(chǎn)品所必須的活動,如建模、文檔、日志、表格和列表等。2.1軟件過程框架明確任務(wù)集任務(wù)集定義了為達到一個軟件工程動作的目標(biāo)所需要完成的工作。例如,需求獲取就是發(fā)生在溝通活動中一個重要的軟件工程動作。需求獲取的目的是理解利益相關(guān)者對軟件的需求。

2.1軟件過程框架明確任務(wù)集對于一個小型、相對簡單的項目而言,獲取需求的任務(wù)集可能包括:(1)制定項目的利益相關(guān)者列表。(2)邀請所有的利益相關(guān)者參加一個非正式會議。(3)征詢每一個人對于軟件特征和功能的需求。(4)討論需求,并確定最終的需求列表。(5)劃定需求優(yōu)先級。(6)標(biāo)出不確定域。2.2傳統(tǒng)軟件過程模型最早提出傳統(tǒng)過程模型是為了改變軟件開發(fā)的混亂狀況,使軟件開發(fā)更加有序。歷史證明這些傳統(tǒng)模型為軟件工程工作增加了大量有用的結(jié)構(gòu)化設(shè)計,并為軟件團隊提供了有效的路線圖。不管采用了何種過程模型,軟件工程師通常都會選擇一個通用的過程框架,這個框架包含以下一些框架活動:溝通、策劃、建模、構(gòu)建、部署。2.2傳統(tǒng)軟件過程模型傳統(tǒng)軟件過程模型包括:瀑布模型增量過程模型演化過程模型2.2傳統(tǒng)軟件過程模型瀑布模型瀑布模型(waterfallmodel),又被稱為經(jīng)典生命周期(classiclifecycle),它提出了一個系統(tǒng)的、順序的軟件開發(fā)方法。從用戶需求規(guī)格說明開始,通過計劃、建模、構(gòu)建和部署的過程,最終提供一個完整的軟件并提供持續(xù)的技術(shù)支持。適合項目開始時需求明確的情況。2.2傳統(tǒng)軟件過程模型瀑布模型的一個變型稱為V模型。V模型描述了質(zhì)量保證動作同溝通、建模相關(guān)動作以及早期構(gòu)建相關(guān)的動作之間的關(guān)系。

2.2傳統(tǒng)軟件過程模型增量模型增量模型綜合了線性過程流和并行過程流的特征。

2.2傳統(tǒng)軟件過程模型增量模型運用增量模型的時候,第一個增量往往是核心產(chǎn)品。也就是,滿足了基本的需求,但是許多附加的特性(一些是已知的,一些是未知的)沒有提供,客戶使用該核心產(chǎn)品或者進行仔細的評價,并根據(jù)評價結(jié)果制定下一個增量計劃。說明需要對核心產(chǎn)品進行的修改及需要增加的特性和功能。每一個增量的交付都會重復(fù)這一過程,直到最終產(chǎn)品的產(chǎn)生。

2.2傳統(tǒng)軟件過程模型演化過程模型軟件會隨著時間的推移而演化:在開發(fā)過程中,商業(yè)和產(chǎn)品需求經(jīng)常發(fā)生變化,直接導(dǎo)致最終產(chǎn)品難以實現(xiàn);嚴(yán)格的交付時間使得開發(fā)團隊不可能圓滿完成軟件產(chǎn)品,但是必須交付功能有限的版本以應(yīng)對競爭或商業(yè)壓力;很好地理解了核心產(chǎn)品和系統(tǒng)需求,但是產(chǎn)品或系統(tǒng)擴展的細節(jié)問題卻沒有定義。

在上述情況和類似情況下,軟件開發(fā)人員需要一種專門應(yīng)對不斷演變的軟件產(chǎn)品過程模型。

2.2傳統(tǒng)軟件過程模型演化過程模型演化模型是迭代的過程模型,使得軟件開發(fā)人員能夠逐步開發(fā)出更完整的軟件版本。本節(jié)介紹兩種常用的演化過程模型:原型開發(fā)模型,螺旋模型。2.2傳統(tǒng)軟件過程模型演化過程模型--原型開發(fā)模型在以下情況和類似情況下,適合采用原型開發(fā)模型:客戶提出了軟件的一些基本功能,但是沒有詳細定義功能和特性需求。開發(fā)人員可能對算法的效率、操作系統(tǒng)的兼容性和人機交互的形式等情況不能確定。2.2傳統(tǒng)軟件過程模型演化過程模型—原型開發(fā)模型Constructionofprototype溝通快速策劃建??焖僭O(shè)計構(gòu)建原型部署交付及反饋2.2傳統(tǒng)軟件過程模型演化過程模型—螺旋模型

螺旋模型最初是Boehm于1988年提出來的。該模型將瀑布模型與快速原型模型結(jié)合起來,并且加入兩種模型均忽略了的風(fēng)險分析。螺旋模型的基本思想是,使用原型及其他方法來盡量降低風(fēng)險。2.2傳統(tǒng)軟件過程模型演化過程模型—螺旋模型

螺旋模型是一種風(fēng)險驅(qū)動型的過程模型。

2.2傳統(tǒng)軟件過程模型演化過程模型—螺旋模型在螺旋模型中,軟件過程表示成一個螺線。在螺線上的每一個循環(huán)表示過程的一個階段。螺旋的第一圈一般開發(fā)出產(chǎn)品的規(guī)格說明,接下來開發(fā)產(chǎn)品的原型系統(tǒng),并在每次迭代中逐步完善,開發(fā)不同的軟件版本。2.2傳統(tǒng)軟件過程模型演化過程模型—螺旋模型在螺旋模型中,軟件過程表示成一個螺線。在螺線上的每一個循環(huán)表示過程的一個階段。螺旋的第一圈一般開發(fā)出產(chǎn)品的規(guī)格說明,接下來開發(fā)產(chǎn)品的原型系統(tǒng),并在每次迭代中逐步完善,開發(fā)不同的軟件版本。2.3專用過程模型專用過程模型包括:基于構(gòu)件的開發(fā)形式化方法模型面向方面的軟件開發(fā)2.3專用過程模型基于構(gòu)件的開發(fā)模型

基于構(gòu)件的軟件工程(component-basedsoftwareengineering,CBSE)是強調(diào)使用可復(fù)用的軟件“構(gòu)件”來設(shè)計和構(gòu)造基于計算機的系統(tǒng)的過程。2.3專用過程模型基于構(gòu)件的開發(fā)模型

Clements對CBSE給出了如下描述。

CBSE正在改變大型軟件系統(tǒng)的開發(fā)方式。CBSE體現(xiàn)了FrodBrooks和其他人支持的“購買,而非構(gòu)造”的思想。就如同早期的子程序?qū)⒊绦騿T從考慮編程細節(jié)中解脫出來一樣,CBSE將考慮的重點從編碼轉(zhuǎn)移到組裝軟件系統(tǒng)??紤]的焦點是“集成”,而不再是“實現(xiàn)”。這樣做的基礎(chǔ)是假定在很多大型軟件系統(tǒng)中存在足夠多的共性,使得開發(fā)可復(fù)用的構(gòu)件來滿足這些共性是可行的。2.3專用過程模型基于構(gòu)件的開發(fā)模型

當(dāng)軟件團隊使用傳統(tǒng)的需求獲取技術(shù)確定了待開發(fā)軟件的系統(tǒng)需求時,該過程開始。體系結(jié)構(gòu)設(shè)計完成后,并不立即進行詳細設(shè)計任務(wù),而是針對每一系統(tǒng)需求考慮以下問題:(1)現(xiàn)有的商品化構(gòu)件(commercialoff-the-shelf,COTS)是否能夠?qū)崿F(xiàn)該需求?(2)內(nèi)部開發(fā)的可復(fù)用構(gòu)件是否能夠?qū)崿F(xiàn)該需求?(3)可用構(gòu)件的接口與待構(gòu)造系統(tǒng)的體系結(jié)構(gòu)是否相容?2.3專用過程模型基于構(gòu)件的開發(fā)模型

2.3專用過程模型開發(fā)步驟

基于構(gòu)件的應(yīng)用系統(tǒng)開發(fā)模型由以下步驟組成:(1)對于該問題領(lǐng)域的基于構(gòu)件的可用產(chǎn)品進行研究和評估。(2)考慮構(gòu)件集成的問題。(3)設(shè)計軟件架構(gòu)以容納這些構(gòu)件。(4)將構(gòu)件集成到架構(gòu)中。(5)進行充分的測試以保證功能正常。2.3專用過程模型典型的構(gòu)件實現(xiàn)模型(1)OMG/CORBA。對象管理組織發(fā)布了公共對象請求代理體系結(jié)構(gòu)(OMG/CORBA),一個對象請求代理提供了多種服務(wù),使得可復(fù)用構(gòu)件(對象)可以與其他構(gòu)件通信。(2)MicrosoftCOM/DCOM/.NET。微軟公司開發(fā)了構(gòu)件對象模型(COM),此模型提供了構(gòu)件的規(guī)格說明,在Windows操作系統(tǒng),一個應(yīng)用系統(tǒng)中可以使用不同廠商生產(chǎn)的構(gòu)件。(3)SunJavaBean構(gòu)件。JavaBean構(gòu)件系統(tǒng)是一個可移植的、平臺獨立的、使用Java程序設(shè)計語言開發(fā)的CBSE基礎(chǔ)設(shè)施。2.3專用過程模型形式化方法模型形式化系統(tǒng)開發(fā)模型是一種基于形式化數(shù)學(xué)變換的軟件開發(fā)方法,它可將系統(tǒng)規(guī)格說明轉(zhuǎn)換為可執(zhí)行的程序。2.3專用過程模型與瀑布模型的區(qū)別

軟件需求規(guī)格說明被細化為用數(shù)學(xué)記號表達的詳細的形式化規(guī)格說明。設(shè)計、實現(xiàn)和單元測試等開發(fā)過程由變換開發(fā)過程代替。通過一系列變換將形式化規(guī)格說明細化成為程序。2.3專用過程模型面向方面的軟件開發(fā)

面向方面的軟件開發(fā)(aspect-orientedsoftwaredevelopment,AOSD)通常稱為面向方面編程(aspect-orientedprogamming,AOP),是相對較新的一種軟件工程模型,為定義、說明、設(shè)計和構(gòu)建方面(aspect)提供過程和方法。2.3專用過程模型隨著現(xiàn)代計算機系統(tǒng)變得更加復(fù)雜,某些關(guān)注點(客戶需要的屬性或者技術(shù)興趣點)體現(xiàn)在了整個架構(gòu)設(shè)計中。某些關(guān)注點是系統(tǒng)的高層屬性(例如安全性,容錯能力),還有一些關(guān)注點影響了系統(tǒng)的功能(如商業(yè)規(guī)則的應(yīng)用等)。如果某個關(guān)注點涉及到系統(tǒng)多個方面的功能、特性和信息時,這些關(guān)注點通常稱為橫切關(guān)注點(crosscuttingconcern)。2.3專用過程模型Grundy在面向方面的構(gòu)件工程(Aspect-OrientedComponentEngineering,AOCE)中對方面的討論:AOCE對縱向分解的軟件構(gòu)件進行橫向切片,稱為“方面”

(Aspect),以表示構(gòu)件功能及非功能的橫切屬性。系統(tǒng)的方面包括用戶接口、協(xié)同工作、發(fā)布、持續(xù)性、存儲器管理、事務(wù)處理、安全、完整性等等。2.4統(tǒng)一過程統(tǒng)一過程(UP,UnifiedProcess)由面向?qū)ο箢I(lǐng)域的三位專家IvarJacobson、GradyBooch和JamesRumbaugh提出。是一種“用例驅(qū)動,以架構(gòu)為核心,迭代并且增量”的軟件過程。目前,統(tǒng)一過程和UML廣泛應(yīng)用在各種各樣的面向?qū)ο箜椖恐小?/p>

2.4統(tǒng)一過程統(tǒng)一過程的二維開發(fā)模型

2.4統(tǒng)一過程統(tǒng)一過程的階段與通用框架活動

2.4統(tǒng)一過程統(tǒng)一過程

2.4統(tǒng)一過程主要工作產(chǎn)品

2.5敏捷過程敏捷過程模型

2001年,KentBeck等17名編程大師發(fā)表“敏捷軟件開發(fā)”宣言:

我們正在通過親身實踐以及幫助他人實踐的方式來揭示更好的軟件開發(fā)之路,通過這項工作,我們認(rèn)為:個體和交互勝過過程和工具;可工作軟件勝過寬泛的文檔;客戶合作勝過合同談判;響應(yīng)變化勝過遵循計劃。

2.5敏捷過程敏捷過程模型

對于敏捷開發(fā),IvarJacobson給出了下面非常有用的論述。

“敏捷(Agility)已經(jīng)成為當(dāng)今現(xiàn)代軟件過程的一個時髦用詞。每個人都是敏捷的,敏捷團隊是能夠適當(dāng)響應(yīng)變化的靈活團隊。變化就是軟件開發(fā)本身,軟件構(gòu)建有變化、團隊成員在變化、使用新技術(shù)會帶來變化,各種變化都會對開發(fā)的軟件產(chǎn)品以及項目本身造成影響。我們必須接受的是支持變化的意識,它應(yīng)當(dāng)根植于軟件開發(fā)中的每一件事中,因為這是軟件的心臟與靈魂。敏捷團隊意識到軟件是團隊中所有人共同開發(fā)完成的,這些人的個人技能和合作能力是項目成功的關(guān)鍵所在?!?.5敏捷過程敏捷過程

任何一個敏捷過程都可以由所強調(diào)的3個關(guān)鍵假設(shè)識別出來,這3個假設(shè)可適用于大多數(shù)軟件項目。(1)提前預(yù)測哪些需求是穩(wěn)定的、哪些需求會變化非常困難。同樣的,預(yù)測項目進行中客戶優(yōu)先級的變化也很困難。(2)對很多軟件,設(shè)計和構(gòu)建是交錯進行的。事實上,兩種活動應(yīng)當(dāng)順序開展以保證通過構(gòu)建實施來驗證設(shè)計模型,而在通過構(gòu)建驗證之前很難估計應(yīng)該設(shè)計到什么程度。(3)從制訂計劃的角度來看,分析、設(shè)計、構(gòu)建和測試并不像我們所設(shè)想的那么容易預(yù)測。2.5敏捷過程敏捷原則

(1)我們最優(yōu)先要做的是通過盡早、持續(xù)交付有價值的軟件來使客戶滿意。(2)即使在開發(fā)的后期,也歡迎需求變更。敏捷過程利用變更為客戶創(chuàng)造競爭優(yōu)勢。(3)經(jīng)常交付可運行軟件,交付的間隔可以從幾個星期到幾個月,交付的時間間隔越短越好。(4)在整個項目開發(fā)期間,業(yè)務(wù)人員和開發(fā)人員必須天天都在一起工作。(5)圍繞有積極性的個人構(gòu)建項目。給他們提供所需的環(huán)境和支持,并且信任他們能夠完成工作。2.5敏捷過程敏捷原則

(6)在團隊內(nèi)部,最富有效果和效率的信息傳遞方法是面對面交談。(7)可運行軟件是進度的首要度量標(biāo)準(zhǔn)。(8)敏捷過程提倡可持續(xù)的開發(fā)速度。責(zé)任人、開發(fā)者和用戶應(yīng)該能夠保持一種長期、穩(wěn)定的開發(fā)速度。(9)不斷地關(guān)注優(yōu)秀的技能和好的設(shè)計會增強敏捷能力。(10)簡單是必要的。(11)好的架構(gòu)、需求和設(shè)計出自于自組織團隊。(12)每隔一定時間,團隊會反省如何才能更有效地工作,并相應(yīng)調(diào)整自己的行為。2.5敏捷過程人的因素

敏捷開發(fā)團隊成員及團隊本身必須具備的一些特點:基本能力共同目標(biāo)精誠合作決策能力模糊問題解決能力相互信任和尊重自我組織2.5敏捷過程極限編程(eXtremeProgramming,XP)

使用最廣泛的敏捷過程,最初由KentBeck提出。XP包含了策劃、設(shè)計、編碼和測試4個框架活動的規(guī)則和實踐。2.5敏捷過程極限編程的框架活動

①策劃開始于建立“用戶故事”敏捷團隊評估每一個故事并給出成本(cost)故事被分組用于可交付增

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論