軟件工程第1章軟件過程課件_第1頁
軟件工程第1章軟件過程課件_第2頁
軟件工程第1章軟件過程課件_第3頁
軟件工程第1章軟件過程課件_第4頁
軟件工程第1章軟件過程課件_第5頁
已閱讀5頁,還剩189頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件工程與測試基礎(chǔ)

——軟件過程與方法

林大經(jīng)管學(xué)院瞿華軟件工程與測試基礎(chǔ)

——軟件過程與方法

林大經(jīng)管學(xué)院瞿華引子:羅馬不是一天建成的2013年IT界最大的新聞是什么?引子:羅馬不是一天建成的2013年IT界最大的新聞是什么?22010年9月,面對蘋果iphone的威脅,Nokia董事會任命埃洛普為新的CEO。此前,埃洛普任微軟的BusinessDivision部門的總管,負(fù)責(zé)Office2010的開發(fā)。2010年9月,面對蘋果iphone的威脅,Nokia董事會3第一步:自廢武功?埃洛普上任后就做出了很多備受爭議的決策:宣布徹底放棄經(jīng)典的Symbian系統(tǒng)中止了前任諾基亞CEO規(guī)劃的諾基亞Android手機(jī)計(jì)劃放棄了與intel合作開發(fā)的MeeGo系統(tǒng)(搭載此系統(tǒng)的N9手機(jī)已經(jīng)研發(fā)成功并上市)第一步:自廢武功?埃洛普上任后就做出了很多備受爭議的決策:4第二步:執(zhí)子之手2011年,宣布諾基亞與微軟公司達(dá)成戰(zhàn)略合作伙伴,將在所有智能手機(jī)上都采用WindowsPhone7操作系統(tǒng)。第二步:執(zhí)子之手2011年,宣布諾基亞與微軟公司達(dá)成戰(zhàn)略合作5微軟坑我千百遍但由于:微軟在WP7的研發(fā)和發(fā)布等發(fā)面,并未給予Nokia特別的優(yōu)待;微軟的WindowsPhone系統(tǒng)與原有的Symbian系統(tǒng)并不兼容(連導(dǎo)入/導(dǎo)出通訊錄都很麻煩);微軟在2011年推出WindowsPhone7后不久,就正式宣布運(yùn)行WP7的手機(jī)無法升級到即將發(fā)行的WP8系統(tǒng)。到2013年1季度,WP手機(jī)的市場占有率只有2.9%(Anroid74%,iOS14%)微軟坑我千百遍但由于:6據(jù)說是微軟的WP8發(fā)布會邀請函。為什么主角不是Nokia?據(jù)說是微軟的WP8發(fā)布會邀請函。7我待微軟如初戀一直到收購前,Nokia一直堅(jiān)持WP獨(dú)占的戰(zhàn)略(WP全部銷量中Nokia占70%以上)。相比之下,其他主要的競爭對手三星、HTC及Sony等都采取了多頭下注(同時(shí)開發(fā)Android和WP手機(jī))的策略。我待微軟如初戀一直到收購前,Nokia一直堅(jiān)持WP獨(dú)占的戰(zhàn)略8結(jié)局:如愿以償?從2010年埃洛普擔(dān)任CEO以來,Nokia的手機(jī)市場占有率從30%以上一路下跌到不到2%,股價(jià)從10.1美元一路下跌到3.9美元。9月3日,微軟正式宣布將收購Nokia手機(jī)部門。在此之前(8月底),微軟CEO鮑爾默正式宣布將于一年內(nèi)退休。埃洛普隨著Nokia的收購回到了微軟,并成為了下一任CEO的有力競爭者……結(jié)局:如愿以償?從2010年埃洛普擔(dān)任CEO以來,Nokia9軟件過程與方法一、軟件過程二、軟件過程模型三、敏捷開發(fā)與統(tǒng)一過程四、軟件工程方法五、小結(jié)軟件過程與方法一、軟件過程10一、軟件過程過程與過程管理軟件過程定義軟件過程要素核心軟件活動普適性軟件活動一、軟件過程過程與過程管理11還記得嗎?軟件工程的構(gòu)成?以質(zhì)量為中心過程方法工具質(zhì)量和過程是“道”,方法和工具是“術(shù)”!還記得嗎?軟件工程的構(gòu)成?以質(zhì)量為中心過程方法工具質(zhì)量和過程121.1過程與過程管理過程:也稱業(yè)務(wù)過程,指為客戶創(chuàng)造價(jià)值的一系列相互關(guān)聯(lián)、有組織的活動或任務(wù)的集合。管理學(xué)意義上的過程是有明確目的性的:為客戶(或企業(yè))創(chuàng)造價(jià)值過程的特點(diǎn):可確定性:有明確的輸入、輸出和邊界;順序:構(gòu)成過程的活動,必須在時(shí)間和空間里具有確定的順序;客戶:過程的結(jié)果必須有接收者——客戶。增值:在過程中發(fā)生的轉(zhuǎn)換必須為接收者增加價(jià)值,無論接收者是在過程的上游還是下游。1.1過程與過程管理過程:也稱業(yè)務(wù)過程,指為客戶創(chuàng)造價(jià)值的131.1過程與過程管理過程管理:辨識出一連串的商業(yè)活動,并針對這些活動的作業(yè)流程進(jìn)行管理。過程管理的目標(biāo):確保企業(yè)中各種商業(yè)活動的執(zhí)行成果能具有一定的水平和精確度,確保能持續(xù)改善活動的進(jìn)行方式,串連活動的作業(yè)流程讓企業(yè)能保持市場上的競爭力。1.1過程與過程管理過程管理:辨識出一連串的商業(yè)活動,并針141.1過程與過程管理過程管理的任務(wù):發(fā)現(xiàn)、去除非增值活動,簡化過程通過合理安排活動順序提高過程效率適當(dāng)改變過程以適應(yīng)環(huán)境變化對過程執(zhí)行情況加以監(jiān)控,尋找過程中的錯(cuò)誤、薄弱、低效環(huán)節(jié)并加予以糾正1.1過程與過程管理過程管理的任務(wù):151.2軟件過程定義軟件過程:構(gòu)建、維護(hù)軟件產(chǎn)品時(shí)所執(zhí)行的一系列活動、動作和任務(wù)的集合?;顒觿幼魅蝿?wù)過程1.2軟件過程定義軟件過程:構(gòu)建、維護(hù)軟件產(chǎn)品時(shí)所執(zhí)行的一161.3軟件過程要素活動:組成軟件過程的最主要的宏觀步驟。例如:需求分析、設(shè)計(jì)、編碼、發(fā)布等。動作:對活動進(jìn)一步細(xì)分的得到的步驟。例如設(shè)計(jì)活動,可以細(xì)分分為總體設(shè)計(jì)、模塊設(shè)計(jì)等多個(gè)動作。任務(wù):具體的工作步驟。例如:編寫一個(gè)具體的軟件模塊等。1.3軟件過程要素活動:組成軟件過程的最主要的宏觀步驟。171.4核心軟件活動所有合理的軟件過程都包含一些共同的必要的活動(步驟),這些活動我們稱為核心軟件活動。應(yīng)該有哪些核心軟件活動呢?如果讓我們來幫某個(gè)人A蓋一棟房子,會怎么做呢?:決定要不要蓋?能不能蓋?了解A想要什么樣的房子?制定計(jì)劃(什么時(shí)候開始設(shè)計(jì),什么時(shí)候開始施工,什么等等設(shè)計(jì)房屋(外觀、結(jié)構(gòu)等等)施工與監(jiān)理(有沒有偷工減料?是否按照設(shè)計(jì)施工?)交付1.4核心軟件活動所有合理的軟件過程都包含一些共同的必要的181.4核心軟件活動軟件過程通常包括下列六個(gè)核心軟件活動:溝通需求:通過與客戶的溝通協(xié)作,了解客戶的真實(shí)需要,決定軟件特性和功能,制定項(xiàng)目目標(biāo)。策劃:創(chuàng)建軟件項(xiàng)目的“地圖”,以指導(dǎo)團(tuán)隊(duì)的項(xiàng)目旅程。通常包括:需要執(zhí)行的具體任務(wù)、每個(gè)任務(wù)需要的資源分配,每個(gè)任務(wù)的具體產(chǎn)品,以及工作計(jì)劃等建模(設(shè)計(jì)):通過構(gòu)造軟件模型(通常是圖形形式的模型)的方法來研究、理解具體問題,(向客戶和其他開發(fā)人員)展現(xiàn)具體解決方案。1.4核心軟件活動軟件過程通常包括下列六個(gè)核心軟件活動:191.4核心軟件活動核心軟件活動(續(xù)):編碼與測試:實(shí)際編寫代碼、驗(yàn)證代碼的正確性運(yùn)行與部署:將軟件交付用戶使用。通常用戶會對軟件進(jìn)行一段時(shí)間的試用,并給出反饋意見維護(hù):修復(fù)用戶使用過程中發(fā)現(xiàn)的軟件缺陷,或者根據(jù)用戶使用意見對軟件進(jìn)行改進(jìn)上述活動之間并不一定是簡單的線性關(guān)系,而是可能存在反復(fù)的迭代。1.4核心軟件活動核心軟件活動(續(xù)):201.5普適性軟件活動除了上述活動外,在實(shí)際軟件過程中往往還存在一些貫穿整個(gè)過程的普適性活動,以幫助軟件團(tuán)隊(duì)管理和控制項(xiàng)目進(jìn)度、質(zhì)量、變化和風(fēng)險(xiǎn)。常見的普適性軟件活動包括:項(xiàng)目跟蹤和控制:定期評估項(xiàng)目進(jìn)度情況,采取必要措施確保項(xiàng)目按期完成風(fēng)險(xiǎn)管理:對可能影響項(xiàng)目進(jìn)度和產(chǎn)品質(zhì)量的風(fēng)險(xiǎn)進(jìn)行評估,并采取必要措施來降低風(fēng)險(xiǎn)1.5普適性軟件活動除了上述活動外,在實(shí)際軟件過程中往往還211.5普適性軟件活動普適性軟件活動(續(xù)):測量:定義和采集關(guān)于過程、項(xiàng)目和產(chǎn)品的度量數(shù)據(jù),以幫助管理和改進(jìn)其他活動。例如:開發(fā)人員的生產(chǎn)率等軟件質(zhì)量保證:確保軟件質(zhì)量的措施和活動軟件配置管理:管理軟件(代碼、配置信息及其文檔)的版本變化歷史可復(fù)用管理:建立產(chǎn)品(代碼等)復(fù)用的機(jī)制和標(biāo)準(zhǔn)(如公用函數(shù)庫等)人員培訓(xùn):對相關(guān)人員進(jìn)行必要的培訓(xùn),使其具備必要的知識和技能,掌握相關(guān)工具的使用方法1.5普適性軟件活動普適性軟件活動(續(xù)):22二、軟件過程模型軟件過程模型與過程流瀑布模型原型開發(fā)模型螺旋模型增量過程模型二、軟件過程模型軟件過程模型與過程流232.1軟件過程模型與過程流

軟件過程模型是從一特定角度提出的軟件過程的簡化描述?!澳P偷谋举|(zhì)在于簡化”軟件過程模型就是對描述的實(shí)際過程的抽象,它包括構(gòu)成軟件過程的各種活動、軟件產(chǎn)品及軟件工程人員參與的不同角色。2.1軟件過程模型與過程流

軟件過程模型是從一特定角度提出242.1軟件過程模型與過程流過程流(模型)是最主要的一類軟件過程模型。過程流描述了如何在執(zhí)行順序和執(zhí)行時(shí)間這一層面上,組織軟件過程中(除維護(hù)之外的)的活動。幾種主要的過程流及典型過程模型:線性過程流:瀑布模型迭代過程流:原型開發(fā)模型演化過程流:螺旋模型并行過程流:混合過程流:增量模型2.1軟件過程模型與過程流過程流(模型)是最主要的一類軟件252.1軟件過程模型與過程流溝通需求策劃建模編碼測試部署運(yùn)行線性過程流溝通需求策劃建模編碼測試部署運(yùn)行迭代過程流溝通需求策劃建模編碼測試部署運(yùn)行演化過程流溝通需求策劃建模編碼測試部署運(yùn)行并行過程流2.1軟件過程模型與過程流溝通需求策劃建模編碼測試部署運(yùn)行262.2瀑布模型瀑布模型(waterfallmodel)是由W.Royce于1970年提出來的。又稱為軟件生存周期模型。瀑布模型嚴(yán)格按照軟件生存周期各個(gè)階段來進(jìn)行開發(fā),上一階段的輸出即是下一階段的輸入,并強(qiáng)調(diào)每一階段的嚴(yán)格性。它規(guī)定了各階段的任務(wù)和應(yīng)提交的成果及文檔,每一階段的任務(wù)完成后,都必須對其階段性產(chǎn)品(主要是文檔)進(jìn)行評審,通過后才能開始下一階段的工作。因此,它是一種以文檔作為驅(qū)動的模型。2.2瀑布模型瀑布模型(waterfallmodel)是272.2瀑布模型軟件生存周期:軟件從定義開始,經(jīng)過開發(fā)、使用和維護(hù),直到最終退役的全過程稱為軟件生存周期。瀑布模型將軟件生命周期分成軟件定義、軟件開發(fā)、運(yùn)行、維護(hù)及退役五個(gè)時(shí)期組成。而每個(gè)時(shí)期又可以進(jìn)一步劃分成若干階段。2.2瀑布模型軟件生存周期:軟件從定義開始,經(jīng)過開發(fā)、使用282.2瀑布模型的結(jié)構(gòu)可行性研究特點(diǎn):階段間具有順序性和依賴性推遲實(shí)現(xiàn)質(zhì)量保證需求分析概要設(shè)計(jì)詳細(xì)設(shè)計(jì)實(shí)現(xiàn)組裝測試驗(yàn)收測試使用與維護(hù)退役2.2瀑布模型的結(jié)構(gòu)可行性研究特點(diǎn):需求分析概要設(shè)計(jì)詳細(xì)設(shè)292.2瀑布模型的變形-V模型可行性研究需求分析(驗(yàn)收測試計(jì)劃)概要設(shè)計(jì)(組裝測試計(jì)劃)詳細(xì)設(shè)計(jì)(單元測試計(jì)劃)編碼與調(diào)試單元測試集成測試系統(tǒng)測試驗(yàn)收測試運(yùn)行與維護(hù)V模型強(qiáng)調(diào)了質(zhì)量保證活動,特別是測試與其它動作之間的關(guān)系2.2瀑布模型的變形-V模型可行性研究需求分析概要設(shè)計(jì)詳細(xì)302.2瀑布模型的優(yōu)點(diǎn)可強(qiáng)迫開發(fā)人員采用的規(guī)范方法;嚴(yán)格規(guī)定了每一階段必須提交的文檔;要求每一階段交付之產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細(xì)審查;清晰區(qū)分了邏輯設(shè)計(jì)與物理設(shè)計(jì),盡可能推遲程序的物理實(shí)現(xiàn)。“一種文檔驅(qū)動的模型”提供了軟件開發(fā)的基本框架,有利于大型軟件開發(fā)過程中人員的組織、管理,有利于軟件開發(fā)方法和工具的研究與使用,因此,在軟件工程中占有重要的地位。2.2瀑布模型的優(yōu)點(diǎn)可強(qiáng)迫開發(fā)人員采用的規(guī)范方法;312.2瀑布模型的不足

瀑布模型要求在項(xiàng)目開始的需求分析階段就能夠完整的得到客戶的所有需求。但在實(shí)際中客戶通常難以清楚地描述出所有的需求;同時(shí),客戶自身的需求也可能會隨著時(shí)間的變化而發(fā)生變化。1988年的發(fā)表的一份關(guān)于軟件項(xiàng)目的研究報(bào)告指出,平均每個(gè)項(xiàng)目有25%左右的需求功能點(diǎn)變化;1997年的另一份研究報(bào)告中,需求功能點(diǎn)的變化率則達(dá)到了35%-50%。客戶要到項(xiàng)目接近尾聲的驗(yàn)收階段才能夠看到實(shí)際的程序執(zhí)行效果。如果這時(shí)才發(fā)現(xiàn)程序和客戶實(shí)際要求有重大偏差,就可能會造成重大的損失。這兩個(gè)問題構(gòu)成了瀑布模型的致命弱點(diǎn)。2.2瀑布模型的不足

瀑布模型要求在項(xiàng)目開始的需求分析階段322.2瀑布模型的不足2001年發(fā)表的一份論文,對1027個(gè)失敗軟件項(xiàng)目的失敗原因作了研究。其中82%的項(xiàng)目認(rèn)為采用瀑布模型是導(dǎo)致失敗的罪魁禍?zhǔn)?!很多采用瀑布模型的?xiàng)目在開發(fā)時(shí)為了應(yīng)對可能的變化,采取了在軟件產(chǎn)品中盡可能包含更多功能的方法,這構(gòu)成了極大的浪費(fèi)。在一份研究發(fā)現(xiàn),在采用瀑布模型的開發(fā)項(xiàng)目中,有45%以上的功能最終根本就沒有被使用,有19%以上的功能幾乎沒有被使用。也就是說,為了開發(fā)這將近65%的功能而所作的工作完全是浪費(fèi)!不過,當(dāng)需求非常明確時(shí)(比如,山寨某個(gè)已知的軟件),瀑布模型還是個(gè)很有用的模型。2.2瀑布模型的不足2001年發(fā)表的一份論文,對1027個(gè)332.3原型開發(fā)模型針對瀑布模型的下列缺陷,提出了原型開發(fā)模型:在瀑布模型中,項(xiàng)目開發(fā)者在需求分析階段只能通過文字和圖形來向用戶展示軟件功能,不夠直觀,很容易造成誤解用戶直到最后階段才能看到軟件操作界面和實(shí)際功能。所謂原型,就是軟件的一個(gè)模擬的可執(zhí)行界面。用戶可在原型上進(jìn)行操作,直觀的感受軟件的執(zhí)行效果。原型開發(fā)就是軟件開發(fā)人員根據(jù)用戶提出的軟件基本需求快速開發(fā)一個(gè)原型,向用戶展示軟件界面和功能。在征求用戶對原型的評價(jià)意見后,進(jìn)一步改進(jìn)、完善原型,如此迭代,直到軟件開發(fā)人員和用戶都確認(rèn)軟件系統(tǒng)的需求并達(dá)成一致的理解為止。軟件需求確定后,便可進(jìn)行設(shè)計(jì),編碼、測試等以后的各個(gè)開發(fā)步驟。2.3原型開發(fā)模型針對瀑布模型的下列缺陷,提出了原型開發(fā)模342.3原型開發(fā)模型的優(yōu)點(diǎn)原型的開發(fā)和評審是系統(tǒng)分析員和用戶/客戶共同參予的迭代過程,這種迭代過程有利于雙方的充分理解和溝通。原型開發(fā)模型比瀑布模型更符合人們認(rèn)識事物的過程和規(guī)律,項(xiàng)目成員能夠更清晰的理解用戶實(shí)際需求。如果原型的開發(fā)語言和實(shí)際軟件相同,那么它的若干高質(zhì)量的程序片段和開發(fā)工具也可被用于工作程序的開發(fā)。2.3原型開發(fā)模型的優(yōu)點(diǎn)原型的開發(fā)和評審是系統(tǒng)分析員和用戶352.3原型開發(fā)建造/修改原型用戶測試運(yùn)行原型聽取用戶意見2.3原型開發(fā)建造/修改原型用戶測試聽取用戶意見362.3原型開發(fā)初步需求分析快速設(shè)計(jì)建造原型用戶評估原型(新需求)對原型加工開發(fā)產(chǎn)品開始結(jié)束用戶/客戶給出軟件產(chǎn)品的一般需求開發(fā)小組和用戶共同定義軟件總體目標(biāo),標(biāo)識已知需求對界面、功能、人機(jī)交互方式等,進(jìn)行設(shè)計(jì)并建造原型強(qiáng)調(diào)“快速”,釆用基于構(gòu)件的軟件開發(fā)方法,盡量縮短軟件開發(fā)周期,不宜釆用過多的新技術(shù)用戶/客戶對原型進(jìn)行評估修改需求、更新設(shè)計(jì)、完善原型直至確定需求。2.3原型開發(fā)初步需求分析快速設(shè)計(jì)建造原型用戶評估原型(新372.3快速原型的開發(fā)途徑原型僅僅是需求分析的一部分,因此必須盡可能快速的開發(fā)原型:僅模擬軟件系統(tǒng)的人機(jī)界面和人機(jī)交互方式。開發(fā)一個(gè)工作模型,實(shí)現(xiàn)軟件系統(tǒng)中重要的或容易產(chǎn)生誤解的功能。利用一個(gè)或幾個(gè)類似的正在運(yùn)行的軟件向用戶展示軟件需求中的部分或全部功能。建造原型應(yīng)盡量采用相應(yīng)的軟件工具和環(huán)境,并盡量采用軟件重用技術(shù),在運(yùn)行效率方面可做出讓步,以便盡快提供。同時(shí),原型應(yīng)充分展示軟件系統(tǒng)的可見部分,如人機(jī)界面、數(shù)據(jù)的輸入方式和輸出格式等。2.3快速原型的開發(fā)途徑原型僅僅是需求分析的一部分,因此必382.3采用原型模型的軟件生命周期生成原型測試分析定義系統(tǒng)需求系統(tǒng)設(shè)計(jì)程序設(shè)計(jì)含原型化的軟件生存期原型化運(yùn)行和維護(hù)編碼2.3采用原型模型的軟件生命周期生成測試分析定義系統(tǒng)程序含392.3原型開發(fā)模型的缺點(diǎn)

原型開發(fā)模型要求開發(fā)者和用戶在一段時(shí)間內(nèi)緊密配合、共同參與完成原型系統(tǒng)的開發(fā),特別是需要用戶的及時(shí)反饋。如果用戶對此不夠重視,那么原型開發(fā)的意義也就大打折扣了。原型的快速構(gòu)造容易讓用戶誤以為實(shí)際軟件的開發(fā)也是可以很容易、很快就完成的,或者要求開發(fā)者直接將原型稍加修改使之成為實(shí)際運(yùn)行的產(chǎn)品。而實(shí)際上,為了快速開發(fā)原型,開發(fā)者往往會犧牲軟件質(zhì)量和可維護(hù)性而采取了最快速的開發(fā)手段,因此實(shí)際的高質(zhì)量軟件產(chǎn)品需要拋棄原型從頭開發(fā)。如果不能夠充分的向客戶解釋這一點(diǎn)的話,就容易導(dǎo)致軟件開發(fā)人員和用戶之間產(chǎn)生矛盾。原型開發(fā)模型最大的缺點(diǎn)在于,它仍然沒有解決需求變化的問題。2.3原型開發(fā)模型的缺點(diǎn)

原型開發(fā)模型要求開發(fā)者和用戶在一402.3原型開發(fā)的意義原型開發(fā)模型雖然存在無法適應(yīng)需求變化的缺陷,但原型開發(fā)作為一種需求分析的方法,還是非常有價(jià)值的。要充分發(fā)揮原型開發(fā)的價(jià)值,避免用戶的誤解,需要在項(xiàng)目開始時(shí)就和用戶進(jìn)行充分的溝通和解釋,讓他們明白(或者說承認(rèn))原型只是為了明確需求而服務(wù)的,用完后是要丟棄的,實(shí)際軟件系統(tǒng)則是要以質(zhì)量為第一目標(biāo)來進(jìn)行開發(fā)。2.3原型開發(fā)的意義原型開發(fā)模型雖然存在無法適應(yīng)需求變化的412.4螺旋模型螺旋模型是一種演化式的軟件過程模型。它結(jié)合了原型開發(fā)模型的迭代性和瀑布模型的系統(tǒng)性和可控性特點(diǎn)。它把軟件開發(fā)過程轉(zhuǎn)化成了了軟件的版本演進(jìn)過程。通過多次的反復(fù)迭代演化,一個(gè)版本一個(gè)版本的逐步完善軟件,提高了軟件開發(fā)對需求變化的適應(yīng)能力它在模型中明確加入了風(fēng)險(xiǎn)控制活動,每次迭代時(shí)都要考慮可能的風(fēng)險(xiǎn),并采取措施來降低風(fēng)險(xiǎn)。交付并不意味著軟件過程的結(jié)束,它只是上一次迭代的結(jié)束和下一次迭代的開始。整個(gè)軟件過程貫穿軟件產(chǎn)品的整個(gè)生命周期。2.4螺旋模型螺旋模型是一種演化式的軟件過程模型。422.4螺旋模型評審提交線對目標(biāo)、可選方案和約束的確定制定計(jì)劃預(yù)估可選方案,明確并解決風(fēng)險(xiǎn)風(fēng)險(xiǎn)分析開發(fā)驗(yàn)證下一級產(chǎn)品實(shí)施工程規(guī)劃下階段工作客戶評估第一圈產(chǎn)生產(chǎn)品規(guī)格說明原型1風(fēng)險(xiǎn)分析需求計(jì)劃和生存周期計(jì)劃操作的概念需求評價(jià)第二圈產(chǎn)生一個(gè)用于開發(fā)的原型原型2風(fēng)險(xiǎn)分析軟件需求需求有效性驗(yàn)證驗(yàn)收測試計(jì)劃建模需求精化計(jì)劃第三圈產(chǎn)生軟件產(chǎn)品的初始版本原型3風(fēng)險(xiǎn)分析組裝測試計(jì)劃設(shè)計(jì)驗(yàn)證與確認(rèn)產(chǎn)品設(shè)計(jì)模擬開發(fā)計(jì)劃第四圈產(chǎn)生軟件產(chǎn)品比較完善的新版本風(fēng)險(xiǎn)分析操作原型詳細(xì)設(shè)計(jì)編碼單元測試組裝測試驗(yàn)收測試運(yùn)行維護(hù)評價(jià)實(shí)現(xiàn)計(jì)劃順時(shí)針為進(jìn)展方向2.4螺旋模型評審提交線對目標(biāo)、可選方案和約束的確定制定計(jì)432.4螺旋模型螺旋模型的每一個(gè)迭代周期都包括計(jì)劃(需求定義)、風(fēng)險(xiǎn)分析、工程實(shí)現(xiàn)和評審4個(gè)階段。計(jì)劃(需求定義)在第一輪迭代周期中,利用需求分析技術(shù)理解應(yīng)用領(lǐng)域,獲取初步用戶需求,制定項(xiàng)目開發(fā)計(jì)劃(即整個(gè)軟件生命周期計(jì)劃)和需求分析計(jì)劃。在以后的每個(gè)迭代周期中,根據(jù)用戶和開發(fā)人員對上一周期工作成果評價(jià)和評審,修改、完善需求,明確下一周期軟件開發(fā)的目標(biāo)、約束條件,并據(jù)此制定新一輪的軟件開發(fā)計(jì)劃。2.4螺旋模型螺旋模型的每一個(gè)迭代周期都包括計(jì)劃(需求定義442.4螺旋模型風(fēng)險(xiǎn)分析根據(jù)本輪制定的開發(fā)計(jì)劃,進(jìn)行風(fēng)險(xiǎn)分析,評估可選方案,并構(gòu)造原型進(jìn)一步分析風(fēng)險(xiǎn),給出消除或減少風(fēng)險(xiǎn)的途徑。此時(shí)根據(jù)風(fēng)險(xiǎn)分析的結(jié)果決策項(xiàng)目是否繼續(xù)。所以,螺旋模型是一個(gè)風(fēng)險(xiǎn)驅(qū)動的模型。工程實(shí)現(xiàn)在前幾輪迭代周期中,構(gòu)造的原型進(jìn)行需求建?;蜻M(jìn)行系統(tǒng)模擬在后面的迭代周期中,逐步構(gòu)造、完善實(shí)際的軟件系統(tǒng)。2.4螺旋模型風(fēng)險(xiǎn)分析452.4螺旋模型用戶評價(jià)與階段評審將原型或者軟件產(chǎn)品提交用戶使用并征求改進(jìn)意見。開發(fā)人員應(yīng)在用戶的密切配合下進(jìn)一步完善用戶需求,直到用戶認(rèn)為原型可滿足需求,或?qū)浖a(chǎn)品設(shè)計(jì)進(jìn)行評價(jià)或確認(rèn)等。就這樣,螺旋模型從第一個(gè)周期的計(jì)劃開始,一個(gè)周期、一個(gè)周期地不斷迭代,直到整個(gè)軟件生命周期結(jié)束。螺旋模型中的每個(gè)迭代周期都不應(yīng)該太長(一般是2-8周左右)。太短了則每輪實(shí)際工作量太少,無法得到有意義的結(jié)果太長了,無法及時(shí)得到用戶的反饋,也就失去了迭代演化的意義。2.4螺旋模型用戶評價(jià)與階段評審462.4螺旋模型的優(yōu)點(diǎn)支持用戶需求的動態(tài)變化。支持軟件系統(tǒng)的可維護(hù)性,每次維護(hù)過程只是沿螺旋模型繼續(xù)多走一兩個(gè)周期。這符合人們認(rèn)識現(xiàn)實(shí)世界和軟件開發(fā)的客觀規(guī)律。原型可看作形式的可執(zhí)行的需求規(guī)格說明,易于為用戶和開發(fā)人員共同理解,還可作為繼續(xù)開發(fā)的基礎(chǔ),并為用戶參與所有關(guān)鍵決策提供了方便。開發(fā)者和用戶共同參與軟件開發(fā),可盡早發(fā)現(xiàn)軟件中的錯(cuò)誤。螺旋模型特別強(qiáng)調(diào)原型的可擴(kuò)充性和可修改性,原型的使用貫穿整個(gè)軟件生存周期,這將有助于提高目標(biāo)軟件的適應(yīng)能力。既保持瀑布模型的系統(tǒng)性、階段性,又可利用原型評估降低開發(fā)風(fēng)險(xiǎn)。螺旋模型為項(xiàng)目管理人員及時(shí)調(diào)整管理決策提供了方便,進(jìn)而可降低開發(fā)風(fēng)險(xiǎn)。2.4螺旋模型的優(yōu)點(diǎn)支持用戶需求的動態(tài)變化。支持軟件系統(tǒng)的472.4螺旋模型的缺點(diǎn)及適用范圍螺旋模型的缺點(diǎn):如果每次迭代的效率不高,致使迭代次數(shù)過多,將會增加成本并推遲提交時(shí)間;使用該模型需要有相當(dāng)豐富的風(fēng)險(xiǎn)評估經(jīng)驗(yàn)和專門知識,要求開發(fā)隊(duì)伍水平較高。螺旋模型適用場合:支持需求不明確、特別是大型軟件系統(tǒng)的開發(fā),并支持面向規(guī)格說明、面向過程、面向?qū)ο蟮榷喾N軟件開發(fā)方法,是一種具有廣闊前景的模型。2.4螺旋模型的缺點(diǎn)及適用范圍螺旋模型的缺點(diǎn):482.4增量過程模型增量過程模型是螺旋模型基礎(chǔ)上的改進(jìn)。前面講的幾種模型,過程流本質(zhì)都是順序執(zhí)行。也就是說,上一個(gè)活動執(zhí)行完才能執(zhí)行下一個(gè)活動這種順序執(zhí)行往往會導(dǎo)致項(xiàng)目中產(chǎn)生“阻塞狀態(tài)”,即由于任務(wù)之間的依賴性,項(xiàng)目的部分成員要等待另一些成員的工作完成。94年的一項(xiàng)研究表明,在很多項(xiàng)目中,花在等待上的時(shí)間反而超過了花在實(shí)際工作上的時(shí)間!增量開發(fā)模型采用并行的方式來解決這種阻塞帶來的浪費(fèi)問題。2.4增量過程模型增量過程模型是螺旋模型基礎(chǔ)上的改進(jìn)。492.4增量過程模型軟件功能和特征項(xiàng)目時(shí)間第一個(gè)增量第二個(gè)增量第三個(gè)增量第n個(gè)增量溝通策劃建模(分析、設(shè)計(jì))構(gòu)建(編碼、測試)部署(交付、反饋)2.4增量過程模型軟件功能和特征項(xiàng)目時(shí)間第一個(gè)增量第二個(gè)增50三、敏捷開發(fā)與統(tǒng)一過程敏捷開發(fā)的背景敏捷開發(fā)宣言什么是敏捷敏捷開發(fā)模型極限編程統(tǒng)一過程三、敏捷開發(fā)與統(tǒng)一過程敏捷開發(fā)的背景513.1敏捷開發(fā)的背景在現(xiàn)代市場經(jīng)濟(jì)條件下,計(jì)算機(jī)軟件系統(tǒng)總是面臨著不斷的變化:市場環(huán)境變化新競爭對手出現(xiàn)新技術(shù)涌現(xiàn)這就導(dǎo)致軟件開發(fā)和實(shí)施過程中,用戶需求會不斷變化1988年的發(fā)表的一份關(guān)于軟件項(xiàng)目的研究報(bào)告指出,平均每個(gè)項(xiàng)目有25%左右的需求功能點(diǎn)變化;1997年的另一份研究報(bào)告中,這需求功能點(diǎn)的變化率則達(dá)到了35%-50%。3.1敏捷開發(fā)的背景在現(xiàn)代市場經(jīng)濟(jì)條件下,計(jì)算機(jī)軟件系統(tǒng)總523.1敏捷開發(fā)提出的背景傳統(tǒng)的過程開發(fā)模型都是從管理者的角度來看待軟件開發(fā)。因此,存在著重大缺陷:忽視變化的存在。過程階段劃分過細(xì)、過于死板,難于適應(yīng)實(shí)際情況的變化。忽視了軟件開發(fā)是一個(gè)智力密集型的工作,過分強(qiáng)調(diào)紀(jì)律和文檔,導(dǎo)致人的創(chuàng)造性降低。忽視了人與人之間的直接交流。過多的書面交流既增加整個(gè)項(xiàng)目的時(shí)間成本,又導(dǎo)致了誤解和溝通障礙的增加。過分注重過程。認(rèn)為符合過程就能導(dǎo)致正確的結(jié)果。3.1敏捷開發(fā)提出的背景傳統(tǒng)的過程開發(fā)模型都是從管理者的角533.2敏捷開發(fā)宣言敏捷開發(fā)可以認(rèn)為是一場“革命”,開發(fā)者對管理者的革命。敏捷開發(fā)試圖將開發(fā)者的視角也加入到軟件過程管理中來。2001年KentBeck等16位知名專家共同發(fā)起了敏捷聯(lián)盟,并發(fā)表了“敏捷開發(fā)宣言”:個(gè)人與交流勝于開發(fā)過程和工具可運(yùn)行的軟件勝于面面俱到的文檔客戶協(xié)作勝于合同談判響應(yīng)變化勝于按部就班遵循計(jì)劃注意,宣言中右邊的各項(xiàng)并非沒有價(jià)值,只是左邊的各項(xiàng)價(jià)值更大3.2敏捷開發(fā)宣言敏捷開發(fā)可以認(rèn)為是一場“革命”,開發(fā)者對543.3什么是敏捷敏捷的基本推動力:普遍存在的變化敏捷鼓勵(lì):使溝通更便利的團(tuán)隊(duì)結(jié)構(gòu)和協(xié)作態(tài)度快速交付可運(yùn)行產(chǎn)品而非中間文檔客戶以開發(fā)團(tuán)隊(duì)中的一員的身份參與項(xiàng)目根據(jù)實(shí)際情況靈活調(diào)整項(xiàng)目計(jì)劃3.3什么是敏捷敏捷的基本推動力:普遍存在的變化553.3敏捷對軟件開發(fā)成本的影響研究表明,敏捷能明顯降低:由于需求變化導(dǎo)致的那部分軟件開發(fā)成本開發(fā)進(jìn)度日程變更成本使用傳統(tǒng)軟件過程的變更成本使用敏捷過程的理想變更成本使用敏捷過程的實(shí)際變更成本3.3敏捷對軟件開發(fā)成本的影響研究表明,敏捷能明顯降低:開563.3敏捷原則敏捷聯(lián)盟提出了實(shí)現(xiàn)敏捷的12條原則:最優(yōu)先要做的是通過盡早、持續(xù)的交付有價(jià)值的軟件來使客戶滿意即使在開發(fā)的后期,也歡迎需求變更。敏捷過程利用變更為客戶創(chuàng)造競爭優(yōu)勢經(jīng)常交付可運(yùn)行的軟件,交付時(shí)間間隔越短越好在整個(gè)項(xiàng)目開發(fā)期間,業(yè)務(wù)人員和開發(fā)人員應(yīng)天天在一起工作圍繞有積極性的個(gè)人構(gòu)建項(xiàng)目。團(tuán)隊(duì)內(nèi)部最有效率的溝通方式是面對面交談3.3敏捷原則敏捷聯(lián)盟提出了實(shí)現(xiàn)敏捷的12條原則:573.3敏捷原則(續(xù))實(shí)現(xiàn)敏捷的12條原則(續(xù)):可運(yùn)行軟件是進(jìn)度的首要度量指標(biāo)提倡可持續(xù)的開發(fā)速度不斷的關(guān)注優(yōu)秀技能和好的設(shè)計(jì)簡單(使不必做的工作盡可能多的藝術(shù))是必要的。最好的架構(gòu)、需求和設(shè)計(jì)出自于自我組織的團(tuán)隊(duì)每隔一定時(shí)間,團(tuán)隊(duì)?wèi)?yīng)反省如何才能更有效的工作,并相應(yīng)調(diào)整自己的行為3.3敏捷原則(續(xù))實(shí)現(xiàn)敏捷的12條原則(續(xù)):583.3敏捷開發(fā)中人的因素敏捷開發(fā)非常強(qiáng)調(diào)人的因素在軟件項(xiàng)目開發(fā)中的重要性。特別的,敏捷開發(fā)強(qiáng)調(diào)團(tuán)隊(duì)及其成員應(yīng)該具備下列要素:基本能力。包括軟件開發(fā)和正確實(shí)施敏捷開發(fā)的能力。共同目標(biāo)。團(tuán)隊(duì)成員必須瞄準(zhǔn)同一個(gè)目標(biāo),即在承諾的時(shí)間內(nèi)向客戶提交能夠可靠運(yùn)行的軟件或其增量。精誠合作。團(tuán)隊(duì)成員之間,以及團(tuán)隊(duì)和項(xiàng)目其他利益相關(guān)者(如用戶、客戶)之間必須精誠合作3.3敏捷開發(fā)中人的因素敏捷開發(fā)非常強(qiáng)調(diào)人的因素在軟件項(xiàng)目593.3敏捷開發(fā)中人的因素敏捷開發(fā)強(qiáng)調(diào)團(tuán)隊(duì)及其成員應(yīng)該具備下列要素(續(xù)):決策能力。項(xiàng)目團(tuán)隊(duì)在項(xiàng)目問題上必須有自主決策權(quán)。相互尊重和信任。具體體現(xiàn)就是良好、高效的溝通。不斷學(xué)習(xí)。團(tuán)隊(duì)?wèi)?yīng)從多種來源(包括過去的失?。┲袑W(xué)習(xí)到經(jīng)驗(yàn)。自我組織。團(tuán)隊(duì)自己組織自身、安排進(jìn)度來完成項(xiàng)目,并對此負(fù)責(zé)。3.3敏捷開發(fā)中人的因素敏捷開發(fā)強(qiáng)調(diào)團(tuán)隊(duì)及其成員應(yīng)該具備下603.3敏捷過程模型在敏捷開發(fā)思想的指導(dǎo)下,業(yè)界提出了很多敏捷過程模型,其中影響較大的有:極限編程(eXtremeProgramming,XP)Scrum特征驅(qū)動開發(fā)(FDD)精益軟件開發(fā)(LSD)敏捷統(tǒng)一過程(AUP)等等這里簡要介紹一下極限編程3.3敏捷過程模型在敏捷開發(fā)思想的指導(dǎo)下,業(yè)界提出了很多敏613.4極限編程策劃設(shè)計(jì)編碼測試測試驅(qū)動開發(fā)發(fā)布極限編程過程模型重構(gòu)用例KISS原則單元測試持續(xù)集成面向?qū)ο箝_發(fā)方法3.4極限編程策劃設(shè)計(jì)編碼測試測試驅(qū)動開發(fā)發(fā)布極限編程過程623.4極限編程極限編程(XP)是使用最廣泛的一種敏捷軟件過程。XP定義了五個(gè)有重要意義的要素:溝通:強(qiáng)調(diào)口頭的、面對面的交流簡明:為了簡化設(shè)計(jì),只對當(dāng)前的需要做設(shè)計(jì)。當(dāng)設(shè)計(jì)需要改進(jìn)時(shí),使用重構(gòu)來實(shí)現(xiàn)。反饋:通過測試、增量交付和持續(xù)集成等手段,快速獲得反饋鼓勵(lì):鼓勵(lì)符合極限精神的實(shí)踐。例如,盡可能減少過度設(shè)計(jì)。尊重:敏捷團(tuán)隊(duì)?wèi)?yīng)在內(nèi)部成員之間,以及內(nèi)部成員與其他利益相關(guān)者之間,灌輸相互尊重的思想。減少推諉和扯皮,增加協(xié)作。3.4極限編程極限編程(XP)是使用最廣泛的一種敏捷軟件過633.4極限編程XP使用面向?qū)ο蠓椒ㄗ鳛橥扑]的開發(fā)范型XP包含了4個(gè)框架活動的規(guī)則和方法:策劃:開始于傾聽,其目的是使團(tuán)隊(duì)成員理解軟件的背景以及感受主要需求。傾聽產(chǎn)生一系列“用戶故事”(用例)。每個(gè)用例由客戶標(biāo)明權(quán)值(即用例的優(yōu)先級)XP團(tuán)隊(duì)評估每個(gè)用例并估算期開發(fā)時(shí)間成本(以周為單位)。成本過高的用例會被進(jìn)一步分成若干個(gè)子用例并重新賦予權(quán)值和計(jì)算成本。3.4極限編程XP使用面向?qū)ο蠓椒ㄗ鳛橥扑]的開發(fā)范型643.4極限編程策劃(續(xù)):客戶和XP團(tuán)隊(duì)共同決定下一個(gè)要發(fā)布的軟件增量中應(yīng)包含哪些用例。通常應(yīng)該選擇優(yōu)先實(shí)現(xiàn)那些具有最高權(quán)值或風(fēng)險(xiǎn)最大的用例。XP團(tuán)隊(duì)根據(jù)之前迭代輪次中軟件增量的開發(fā)速度來估計(jì)后續(xù)版本的開發(fā)速度,并相應(yīng)調(diào)整開發(fā)計(jì)劃。在開發(fā)過程中,客戶可以隨時(shí)增加、修改、分解、合并或者刪除用例。XP團(tuán)隊(duì)根據(jù)用例的變化情況相應(yīng)修改開發(fā)計(jì)劃。3.4極限編程策劃(續(xù)):653.4極限編程設(shè)計(jì):XP的設(shè)計(jì)活動嚴(yán)格遵循KISS原則(Keep

It

Simple、Stupid,保持簡潔)。設(shè)計(jì)應(yīng)恰好實(shí)現(xiàn)用例中的要求,不多也不少。不鼓勵(lì)額外(因?yàn)殚_發(fā)者認(rèn)為將來可能會用到)的設(shè)計(jì)如果在某個(gè)用例設(shè)計(jì)中碰到困難,XP推薦立即針對這部分設(shè)計(jì)編寫可執(zhí)行的原型,以便及時(shí)對設(shè)計(jì)進(jìn)行評估,降低風(fēng)險(xiǎn)。3.4極限編程設(shè)計(jì):663.4極限編程設(shè)計(jì)(續(xù)):XP認(rèn)為設(shè)計(jì)可以與編碼同時(shí)進(jìn)行(設(shè)計(jì)一部分,編碼一部分)。編碼活動本身就會給XP團(tuán)隊(duì)提供關(guān)于如何改進(jìn)設(shè)計(jì)的反饋。設(shè)計(jì)可以并且應(yīng)當(dāng)是在構(gòu)建過程中連續(xù)修改的中間臨時(shí)產(chǎn)品。(可執(zhí)行程序才是最終產(chǎn)品)。修改的方法是重構(gòu)。重構(gòu):以不改變代碼外部行為(接口)而改進(jìn)其內(nèi)部結(jié)構(gòu)(實(shí)現(xiàn))的方式來改進(jìn)軟件系統(tǒng)的過程(方法)。3.4極限編程設(shè)計(jì)(續(xù)):673.4極限編程編碼:XP推薦使用測試驅(qū)動開發(fā)(TDD)方法來進(jìn)行編碼。測試驅(qū)動開發(fā):在編寫實(shí)際的功能實(shí)現(xiàn)代碼之前,先編寫接口和用于檢測接口行為的一系列單元測試。這樣,實(shí)際代碼編寫完成后,就可以立即進(jìn)行單元側(cè),從而向開發(fā)者提供即時(shí)的反饋。XP推薦使用結(jié)對編程的方式進(jìn)行編碼。即兩個(gè)人同時(shí)面對同一臺計(jì)算機(jī)共同為同一個(gè)用例進(jìn)行編碼。這種編碼方式是否適合我國的文化還存在很大疑問。3.4極限編程編碼:683.4極限編程測試:TDD,即在編碼開始之前就建立單元測試是XP方法的關(guān)鍵之一。單元測試的另一個(gè)好處是為重構(gòu)提供一個(gè)安全網(wǎng)。XP推薦使用持續(xù)集成,即每天都進(jìn)行系統(tǒng)的集成和確認(rèn)測試。這樣既可以為團(tuán)隊(duì)和客戶實(shí)時(shí)提供項(xiàng)目的進(jìn)展情況,也可以在問題發(fā)生時(shí)盡早提出預(yù)警。3.4極限編程測試:693.4極限編程的缺點(diǎn)要求客戶全程參與整個(gè)項(xiàng)目,這一點(diǎn)在實(shí)際中不容易做到不是所有的編程語言和工具都能良好的支持重構(gòu)要求團(tuán)隊(duì)保持長期相對穩(wěn)定對團(tuán)隊(duì)成員的能力、素質(zhì)和自覺性要求較高對團(tuán)隊(duì)管理者的領(lǐng)導(dǎo)能力提出了很高的要求口頭交流和自組織在大規(guī)模的團(tuán)隊(duì)和項(xiàng)目中往往難以實(shí)現(xiàn)3.4極限編程的缺點(diǎn)要求客戶全程參與整個(gè)項(xiàng)目,這一點(diǎn)在實(shí)際703.5統(tǒng)一過程統(tǒng)一過程(UnifiedProcess,簡稱UP)是一種流行的、構(gòu)造面向?qū)ο笙到y(tǒng)的、迭代式軟件開發(fā)過程特別的,Rational統(tǒng)一過程(簡稱RUP)是對UP的詳細(xì)精化,并且已經(jīng)被廣泛采用。UP試圖從傳統(tǒng)軟件過程中挖掘出最好的特性,把普遍認(rèn)可的最佳實(shí)踐結(jié)合起來,成為聯(lián)系緊密并且具有良好文檔描述的過程。UP將開發(fā)分成起始、細(xì)化、構(gòu)造和交付4個(gè)階段,每個(gè)階段都提出了若干可選的最佳實(shí)踐(方法)和制品(執(zhí)行方法得到的輸出)。團(tuán)隊(duì)可以根據(jù)項(xiàng)目實(shí)際需要選擇合適的最佳實(shí)踐和制品,并適當(dāng)調(diào)整過程。將敏捷開發(fā)的思想應(yīng)用于統(tǒng)一過程,就形成了敏捷統(tǒng)一過程(AUP)3.5統(tǒng)一過程統(tǒng)一過程(UnifiedProcess,簡713.5統(tǒng)一過程3.5統(tǒng)一過程72四、軟件工程方法軟件工程方法簡介面向數(shù)據(jù)和功能的方法面向?qū)ο蟮姆椒ńy(tǒng)一建模語言(UML)四、軟件工程方法軟件工程方法簡介734.1軟件工程方法簡介軟件工程方法:軟件開發(fā)活動中具體問題的解決方法。軟件工程方法是完成軟件工程項(xiàng)目的技術(shù)手段。它支持軟件開發(fā)與維護(hù)的全部過程。軟件工程過程由方法的使用活動組成。軟件工程方法劃分為:面向數(shù)據(jù)和功能的方法結(jié)構(gòu)化分析方法Jackson方法Warnier方法面向?qū)ο蠓椒?.1軟件工程方法簡介軟件工程方法:軟件開發(fā)活動中具體問題744.2面向數(shù)據(jù)和功能的方法這類方法以軟件系統(tǒng)所處理的數(shù)據(jù)或其功能為核心分析對象。其對應(yīng)于傳統(tǒng)對軟件的理解:“軟件=數(shù)據(jù)結(jié)構(gòu)+算法”4.2面向數(shù)據(jù)和功能的方法這類方法以軟件系統(tǒng)所處理的數(shù)據(jù)或754.2.1Jackson方法Jackson方法是最典型的面向數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì)方法首先分析數(shù)據(jù)的層次結(jié)構(gòu),生成輸入、輸出數(shù)據(jù)結(jié)構(gòu)圖,然后將處理模塊化,并在此基礎(chǔ)上進(jìn)行詳細(xì)設(shè)計(jì)和編程。Jackson方法有JSP(JacksonStructureProgramming)和改進(jìn)的JSD(JacksonSystemdevelopment)方法。4.2.1Jackson方法Jackson方法是最典型的面764.2.1Jackson方法的發(fā)展二十世紀(jì)七十年代Jackson提出了軟件工程領(lǐng)域中著名的Jackson方法,當(dāng)時(shí)它只用于軟件設(shè)計(jì)。二十世紀(jì)八十年代初,Jackson又對它進(jìn)行了多方面的擴(kuò)充和完善,最終發(fā)展成為一種需求分析方法。Jackson方法的核心思想是:根據(jù)作用于數(shù)據(jù)的行為序列的結(jié)構(gòu)(順序、選擇與重復(fù)),建立目標(biāo)軟件系統(tǒng)的模型然后在軟件設(shè)計(jì)階段將模型演化為相應(yīng)的程序結(jié)構(gòu)。4.2.1Jackson方法的發(fā)展二十世紀(jì)七十年代Jack774.2.1Jackson方法的主要步驟分析并確定輸入數(shù)據(jù)和輸出數(shù)據(jù)的邏輯結(jié)構(gòu)。找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)中有對應(yīng)關(guān)系的數(shù)據(jù)單元。從描述數(shù)據(jù)結(jié)構(gòu)的Jackson圖導(dǎo)出描述程序結(jié)構(gòu)的Jackson圖。列出所有的操作和條件,并把他們分配到程序結(jié)構(gòu)圖中去。4.2.1Jackson方法的主要步驟分析并確定輸入數(shù)據(jù)和輸784.2.1Jackson方法基本元素*表示重復(fù)O表示選擇一個(gè)分支重復(fù)結(jié)構(gòu)AB*順序結(jié)構(gòu)ABCD選擇結(jié)構(gòu)ABCDOOO順序結(jié)構(gòu)偽碼:AseqBCDAend重復(fù)結(jié)構(gòu)偽碼:Aiter

until(或while)condBAend選擇結(jié)構(gòu)偽碼:Aselectcond1BAorcond2CAorcond3DAend4.2.1Jackson方法基本元素*表示重復(fù)O表示選擇一個(gè)794.2.1Jaskson方法示例例:一個(gè)正文文件由若干個(gè)記錄組成,每個(gè)記錄是一個(gè)字符串,即:要求:統(tǒng)計(jì)每個(gè)記錄中空格字符的個(gè)數(shù),以及文件中空格字符的總個(gè)數(shù)。輸出數(shù)據(jù)格式:每復(fù)制一行輸入字符串之后,另起一行印出這個(gè)字符串中的空格數(shù),最后印出文件中空格的總個(gè)數(shù)。4.2.1Jaskson方法示例例:一個(gè)正文文件由若干個(gè)記804.2.1Jaskson方法示例例,輸入:HelloworldIamastudentTodayisafineday!輸出:Helloworld1Iamastudent3Todayisafineday!484.2.1Jaskson方法示例例,輸入:輸出:814.2.1Jaskson方法示例步驟1:繪制輸入和輸出數(shù)據(jù)結(jié)構(gòu)正文文件字符串*I字符*空格o非空格oIS輸出表格表格體空格總數(shù)串信息*I字符串空格數(shù)輸入結(jié)構(gòu)輸出結(jié)構(gòu)4.2.1Jaskson方法示例步驟1:繪制輸入和輸出數(shù)據(jù)824.2.1Jaskson方法示例步驟2:找出輸入數(shù)據(jù)結(jié)構(gòu)和輸出數(shù)據(jù)結(jié)構(gòu)有對應(yīng)關(guān)系的數(shù)據(jù)單元,然后,用Jackson圖表示按映射規(guī)則導(dǎo)出相應(yīng)的程序結(jié)構(gòu)。統(tǒng)計(jì)空格程序體打印總數(shù)處理字符串*打印字符串分析字符串打印空格數(shù)分析字符*I處理空格°處理非空格°S正文文件字符串*I字符*空格o非空格oIS輸出表格表格體空格總數(shù)串信息*I字符串空格數(shù)I4.2.1Jaskson方法示例步驟2:找出輸入數(shù)據(jù)結(jié)構(gòu)和834.2.1Jaskson方法示例步驟3:列出所有的操作和條件,并把它們分配到程序結(jié)構(gòu)圖的適當(dāng)位置。(1)停止(2)打開文件(3)關(guān)閉文件(4)印出字符串(5)印出空格數(shù)(6)印出空格總數(shù)(7)sum:=sum+1(8)totalsum:=totalsum+sum(9)讀入字符串(10)sum:=0(11)totalsum:=0(12)pointer:=1(13)pointer:=pointer+1I(1)文件結(jié)束I(2)字符串結(jié)束S(3)字符是空格統(tǒng)計(jì)空格程序體印總數(shù)處理字符串*印字符串分析字符串印空格數(shù)分析字符*I(2)處理空格°處理非空格°29113161012489571313I(1)S(3)4.2.1Jaskson方法示例步驟3:列出所有的操作和條844.2.1Jaskson方法示例步驟4:用Jackson偽代碼寫出與程序結(jié)構(gòu)圖對應(yīng)的過程性表示。打開文件讀入字符串totalsum:=0程序體iteruntil文件結(jié)束處理字符串seq

打印字符串seq

印出字符串

打印字符串endsum:=0pointer:=1

分析字符串iteruntil字符串結(jié)束

分析字符select字符是空格處理空格seqsum:=sum+1pointer:=pointer+1

處理空格end

分析字符or字符不是空格處理非空格seqpointer:=pointer+1

處理非空格end

分析字符end分析字符串end

打印空格數(shù)seq

打印出空格數(shù)目

打印空格數(shù)endtotalsum:=totalsum+sum

讀入字符串處理字符串end

程序體end

打印總數(shù)seq

打印出空格總數(shù)

打印總數(shù)end

關(guān)閉文件停止統(tǒng)計(jì)空格end4.2.1Jaskson方法示例步驟4:用Jackson偽854.2.2結(jié)構(gòu)化分析方法該方法是一種面向數(shù)據(jù)流的開發(fā)方法。圖形表示方法為數(shù)據(jù)流圖(DFD)和模塊層次結(jié)構(gòu)圖(SC)。是現(xiàn)有的軟件開發(fā)方法中最成熟,應(yīng)用最廣泛的方法,主要特點(diǎn)是快速,自然和方便。結(jié)構(gòu)化方法總的指導(dǎo)思想自頂向下、逐步求精,分解成若干個(gè)具有合適大小和功能的模塊并對各個(gè)模塊進(jìn)行定義和描述,其實(shí)質(zhì)就是功能分解和抽象。4.2.2結(jié)構(gòu)化分析方法該方法是一種面向數(shù)據(jù)流的開發(fā)方法。864.2.2結(jié)構(gòu)化方法的發(fā)展70年代初結(jié)構(gòu)化程序設(shè)計(jì)方法SP法(StructuredProgram)70年代中結(jié)構(gòu)化設(shè)計(jì)方法SD法(StructuredDesign)70年代末結(jié)構(gòu)化分析方法SA法(StructuredAnalysis)SA,SD,SP法相互銜接,形成了一整套開發(fā)方法。若將SA,SD法結(jié)合起來,又稱為結(jié)構(gòu)化分析與設(shè)計(jì)技術(shù),即SDAT技術(shù)。4.2.2結(jié)構(gòu)化方法的發(fā)展70年代初結(jié)構(gòu)化程序設(shè)計(jì)方法874.2.2結(jié)構(gòu)化分析方法示例例:學(xué)生選課系統(tǒng)學(xué)生使用自己的學(xué)號和密碼,可以登錄系統(tǒng),查詢可選課程,選課,以及打印課表。4.2.2結(jié)構(gòu)化分析方法示例例:學(xué)生選課系統(tǒng)884.2.2結(jié)構(gòu)化分析方法示例步驟1:在需求分析階段,可以繪制數(shù)據(jù)流圖(DFD)如下:注意DFD要素:參與者、數(shù)據(jù)、處理、存儲4.2.2結(jié)構(gòu)化分析方法示例步驟1:在需求分析階段,可以繪894.2.2結(jié)構(gòu)化分析方法示例步驟2:設(shè)計(jì)階段,根據(jù)DFD繪制模塊結(jié)構(gòu)圖步驟2.1:劃分信息輸入、加工、輸出環(huán)節(jié)信息輸入信息加工信息輸出4.2.2結(jié)構(gòu)化分析方法示例步驟2:設(shè)計(jì)階段,根據(jù)DFD繪904.2.2結(jié)構(gòu)化分析方法示例步驟2.2:構(gòu)造頂層模塊選課主模塊系統(tǒng)登錄模塊選課處理模塊課表打印模塊合法身份合法身份課表課表4.2.2結(jié)構(gòu)化分析方法示例步驟2.2:構(gòu)造頂層模塊選課主914.2.2結(jié)構(gòu)化分析方法示例步驟2.3:逐級構(gòu)造剩下的層次選課主模塊系統(tǒng)登錄模塊選課處理模塊課表打印模塊合法身份合法身份課表課表身份輸入身份驗(yàn)證密碼密碼合法身份課表顯示課表打印課表課表課程查詢課程登記課程選課信息課表4.2.2結(jié)構(gòu)化分析方法示例步驟2.3:逐級構(gòu)造剩下的層次924.3面向?qū)ο蠓椒嫦驅(qū)ο蠓椒▽W(xué)是20世紀(jì)90年代發(fā)展起來的軟件分析設(shè)計(jì)方法。該方法把客觀世界的事物或?qū)嶓w都看成對象,把對象作為分析設(shè)計(jì)的基本元素。把所有對象都劃分成對象類類可以派生和繼承對每個(gè)對象類都定義一組數(shù)據(jù)和方法。面向?qū)ο蠓椒òǎ好嫦驅(qū)ο蠓治雒嫦驅(qū)ο笤O(shè)計(jì)面向?qū)ο髮?shí)現(xiàn)面向?qū)ο蠓椒ㄊ墙陙砣〉醚杆侔l(fā)展并具有強(qiáng)大生命力的軟件開發(fā)方法,被譽(yù)為90年代軟件的核心技術(shù)之一。4.3面向?qū)ο蠓椒嫦驅(qū)ο蠓椒▽W(xué)是20世紀(jì)90年代發(fā)展起來934.4統(tǒng)一建模語言統(tǒng)一建模語言(UML)是描述、構(gòu)造和文檔化系統(tǒng)制品的可視化語言。這里的可視化就是圖形化。UML是圖形化表示法的事實(shí)標(biāo)準(zhǔn),用來繪制和展示與軟件(特別是面向?qū)ο筌浖┑南嚓P(guān)圖形(及文字)UML適用于各種軟件開發(fā)方法、軟件生命周期的各個(gè)階段、各種應(yīng)用領(lǐng)域以及各種開發(fā)工具,是一種總結(jié)了以往建模技術(shù)的經(jīng)驗(yàn)并吸收當(dāng)今優(yōu)秀成果的標(biāo)準(zhǔn)建模方法。4.4統(tǒng)一建模語言統(tǒng)一建模語言(UML)是描述、構(gòu)造和文檔944.4UML圖型分類UML中有9種圖型,分為2大類4小類類圖:類以及類之間的相互關(guān)系對象圖:對象以及對象之間相互關(guān)系構(gòu)件圖:構(gòu)件及其相互依賴關(guān)系部署圖:構(gòu)件在各節(jié)點(diǎn)上的部署順序圖:強(qiáng)調(diào)時(shí)間順序的交互圖協(xié)作圖:強(qiáng)調(diào)對象協(xié)作的交互圖狀態(tài)圖:類所經(jīng)歷的各種狀態(tài)活動圖:對工作流建模用例圖:需求捕獲,測試依據(jù)靜態(tài)結(jié)構(gòu)行為用例圖靜態(tài)圖實(shí)現(xiàn)圖交互圖行為圖4.4UML圖型分類UML中有9種圖型,分為2大類4小類靜954.4UML圖形舉例UML用例圖4.4UML圖形舉例UML用例圖96五、小結(jié)什么是過程?什么是過程管理?過程管理的目的是什么?什么是軟件過程?什么是軟件過程活動軟件過程包含哪些關(guān)鍵活動?本課介紹了哪幾種典型的軟件過程模型,其主要優(yōu)缺點(diǎn)是什么?什么是敏捷開發(fā)?敏捷開發(fā)注重哪四項(xiàng)要素?UP、XP、TDD這些詞都代表什么意思?本課介紹了哪些軟件工程方法?五、小結(jié)什么是過程?什么是過程管理?過程管理的目的是什么?97軟件工程與測試基礎(chǔ)

——軟件過程與方法

林大經(jīng)管學(xué)院瞿華軟件工程與測試基礎(chǔ)

——軟件過程與方法

林大經(jīng)管學(xué)院瞿華引子:羅馬不是一天建成的2013年IT界最大的新聞是什么?引子:羅馬不是一天建成的2013年IT界最大的新聞是什么?992010年9月,面對蘋果iphone的威脅,Nokia董事會任命埃洛普為新的CEO。此前,埃洛普任微軟的BusinessDivision部門的總管,負(fù)責(zé)Office2010的開發(fā)。2010年9月,面對蘋果iphone的威脅,Nokia董事會100第一步:自廢武功?埃洛普上任后就做出了很多備受爭議的決策:宣布徹底放棄經(jīng)典的Symbian系統(tǒng)中止了前任諾基亞CEO規(guī)劃的諾基亞Android手機(jī)計(jì)劃放棄了與intel合作開發(fā)的MeeGo系統(tǒng)(搭載此系統(tǒng)的N9手機(jī)已經(jīng)研發(fā)成功并上市)第一步:自廢武功?埃洛普上任后就做出了很多備受爭議的決策:101第二步:執(zhí)子之手2011年,宣布諾基亞與微軟公司達(dá)成戰(zhàn)略合作伙伴,將在所有智能手機(jī)上都采用WindowsPhone7操作系統(tǒng)。第二步:執(zhí)子之手2011年,宣布諾基亞與微軟公司達(dá)成戰(zhàn)略合作102微軟坑我千百遍但由于:微軟在WP7的研發(fā)和發(fā)布等發(fā)面,并未給予Nokia特別的優(yōu)待;微軟的WindowsPhone系統(tǒng)與原有的Symbian系統(tǒng)并不兼容(連導(dǎo)入/導(dǎo)出通訊錄都很麻煩);微軟在2011年推出WindowsPhone7后不久,就正式宣布運(yùn)行WP7的手機(jī)無法升級到即將發(fā)行的WP8系統(tǒng)。到2013年1季度,WP手機(jī)的市場占有率只有2.9%(Anroid74%,iOS14%)微軟坑我千百遍但由于:103據(jù)說是微軟的WP8發(fā)布會邀請函。為什么主角不是Nokia?據(jù)說是微軟的WP8發(fā)布會邀請函。104我待微軟如初戀一直到收購前,Nokia一直堅(jiān)持WP獨(dú)占的戰(zhàn)略(WP全部銷量中Nokia占70%以上)。相比之下,其他主要的競爭對手三星、HTC及Sony等都采取了多頭下注(同時(shí)開發(fā)Android和WP手機(jī))的策略。我待微軟如初戀一直到收購前,Nokia一直堅(jiān)持WP獨(dú)占的戰(zhàn)略105結(jié)局:如愿以償?從2010年埃洛普擔(dān)任CEO以來,Nokia的手機(jī)市場占有率從30%以上一路下跌到不到2%,股價(jià)從10.1美元一路下跌到3.9美元。9月3日,微軟正式宣布將收購Nokia手機(jī)部門。在此之前(8月底),微軟CEO鮑爾默正式宣布將于一年內(nèi)退休。埃洛普隨著Nokia的收購回到了微軟,并成為了下一任CEO的有力競爭者……結(jié)局:如愿以償?從2010年埃洛普擔(dān)任CEO以來,Nokia106軟件過程與方法一、軟件過程二、軟件過程模型三、敏捷開發(fā)與統(tǒng)一過程四、軟件工程方法五、小結(jié)軟件過程與方法一、軟件過程107一、軟件過程過程與過程管理軟件過程定義軟件過程要素核心軟件活動普適性軟件活動一、軟件過程過程與過程管理108還記得嗎?軟件工程的構(gòu)成?以質(zhì)量為中心過程方法工具質(zhì)量和過程是“道”,方法和工具是“術(shù)”!還記得嗎?軟件工程的構(gòu)成?以質(zhì)量為中心過程方法工具質(zhì)量和過程1091.1過程與過程管理過程:也稱業(yè)務(wù)過程,指為客戶創(chuàng)造價(jià)值的一系列相互關(guān)聯(lián)、有組織的活動或任務(wù)的集合。管理學(xué)意義上的過程是有明確目的性的:為客戶(或企業(yè))創(chuàng)造價(jià)值過程的特點(diǎn):可確定性:有明確的輸入、輸出和邊界;順序:構(gòu)成過程的活動,必須在時(shí)間和空間里具有確定的順序;客戶:過程的結(jié)果必須有接收者——客戶。增值:在過程中發(fā)生的轉(zhuǎn)換必須為接收者增加價(jià)值,無論接收者是在過程的上游還是下游。1.1過程與過程管理過程:也稱業(yè)務(wù)過程,指為客戶創(chuàng)造價(jià)值的1101.1過程與過程管理過程管理:辨識出一連串的商業(yè)活動,并針對這些活動的作業(yè)流程進(jìn)行管理。過程管理的目標(biāo):確保企業(yè)中各種商業(yè)活動的執(zhí)行成果能具有一定的水平和精確度,確保能持續(xù)改善活動的進(jìn)行方式,串連活動的作業(yè)流程讓企業(yè)能保持市場上的競爭力。1.1過程與過程管理過程管理:辨識出一連串的商業(yè)活動,并針1111.1過程與過程管理過程管理的任務(wù):發(fā)現(xiàn)、去除非增值活動,簡化過程通過合理安排活動順序提高過程效率適當(dāng)改變過程以適應(yīng)環(huán)境變化對過程執(zhí)行情況加以監(jiān)控,尋找過程中的錯(cuò)誤、薄弱、低效環(huán)節(jié)并加予以糾正1.1過程與過程管理過程管理的任務(wù):1121.2軟件過程定義軟件過程:構(gòu)建、維護(hù)軟件產(chǎn)品時(shí)所執(zhí)行的一系列活動、動作和任務(wù)的集合?;顒觿幼魅蝿?wù)過程1.2軟件過程定義軟件過程:構(gòu)建、維護(hù)軟件產(chǎn)品時(shí)所執(zhí)行的一1131.3軟件過程要素活動:組成軟件過程的最主要的宏觀步驟。例如:需求分析、設(shè)計(jì)、編碼、發(fā)布等。動作:對活動進(jìn)一步細(xì)分的得到的步驟。例如設(shè)計(jì)活動,可以細(xì)分分為總體設(shè)計(jì)、模塊設(shè)計(jì)等多個(gè)動作。任務(wù):具體的工作步驟。例如:編寫一個(gè)具體的軟件模塊等。1.3軟件過程要素活動:組成軟件過程的最主要的宏觀步驟。1141.4核心軟件活動所有合理的軟件過程都包含一些共同的必要的活動(步驟),這些活動我們稱為核心軟件活動。應(yīng)該有哪些核心軟件活動呢?如果讓我們來幫某個(gè)人A蓋一棟房子,會怎么做呢?:決定要不要蓋?能不能蓋?了解A想要什么樣的房子?制定計(jì)劃(什么時(shí)候開始設(shè)計(jì),什么時(shí)候開始施工,什么等等設(shè)計(jì)房屋(外觀、結(jié)構(gòu)等等)施工與監(jiān)理(有沒有偷工減料?是否按照設(shè)計(jì)施工?)交付1.4核心軟件活動所有合理的軟件過程都包含一些共同的必要的1151.4核心軟件活動軟件過程通常包括下列六個(gè)核心軟件活動:溝通需求:通過與客戶的溝通協(xié)作,了解客戶的真實(shí)需要,決定軟件特性和功能,制定項(xiàng)目目標(biāo)。策劃:創(chuàng)建軟件項(xiàng)目的“地圖”,以指導(dǎo)團(tuán)隊(duì)的項(xiàng)目旅程。通常包括:需要執(zhí)行的具體任務(wù)、每個(gè)任務(wù)需要的資源分配,每個(gè)任務(wù)的具體產(chǎn)品,以及工作計(jì)劃等建模(設(shè)計(jì)):通過構(gòu)造軟件模型(通常是圖形形式的模型)的方法來研究、理解具體問題,(向客戶和其他開發(fā)人員)展現(xiàn)具體解決方案。1.4核心軟件活動軟件過程通常包括下列六個(gè)核心軟件活動:1161.4核心軟件活動核心軟件活動(續(xù)):編碼與測試:實(shí)際編寫代碼、驗(yàn)證代碼的正確性運(yùn)行與部署:將軟件交付用戶使用。通常用戶會對軟件進(jìn)行一段時(shí)間的試用,并給出反饋意見維護(hù):修復(fù)用戶使用過程中發(fā)現(xiàn)的軟件缺陷,或者根據(jù)用戶使用意見對軟件進(jìn)行改進(jìn)上述活動之間并不一定是簡單的線性關(guān)系,而是可能存在反復(fù)的迭代。1.4核心軟件活動核心軟件活動(續(xù)):1171.5普適性軟件活動除了上述活動外,在實(shí)際軟件過程中往往還存在一些貫穿整個(gè)過程的普適性活動,以幫助軟件團(tuán)隊(duì)管理和控制項(xiàng)目進(jìn)度、質(zhì)量、變化和風(fēng)險(xiǎn)。常見的普適性軟件活動包括:項(xiàng)目跟蹤和控制:定期評估項(xiàng)目進(jìn)度情況,采取必要措施確保項(xiàng)目按期完成風(fēng)險(xiǎn)管理:對可能影響項(xiàng)目進(jìn)度和產(chǎn)品質(zhì)量的風(fēng)險(xiǎn)進(jìn)行評估,并采取必要措施來降低風(fēng)險(xiǎn)1.5普適性軟件活動除了上述活動外,在實(shí)際軟件過程中往往還1181.5普適性軟件活動普適性軟件活動(續(xù)):測量:定義和采集關(guān)于過程、項(xiàng)目和產(chǎn)品的度量數(shù)據(jù),以幫助管理和改進(jìn)其他活動。例如:開發(fā)人員的生產(chǎn)率等軟件質(zhì)量保證:確保軟件質(zhì)量的措施和活動軟件配置管理:管理軟件(代碼、配置信息及其文檔)的版本變化歷史可復(fù)用管理:建立產(chǎn)品(代碼等)復(fù)用的機(jī)制和標(biāo)準(zhǔn)(如公用函數(shù)庫等)人員培訓(xùn):對相關(guān)人員進(jìn)行必要的培訓(xùn),使其具備必要的知識和技能,掌握相關(guān)工具的使用方法1.5普適性軟件活動普適性軟件活動(續(xù)):119二、軟件過程模型軟件過程模型與過程流瀑布模型原型開發(fā)模型螺旋模型增量過程模型二、軟件過程模型軟件過程模型與過程流1202.1軟件過程模型與過程流

軟件過程模型是從一特定角度提出的軟件過程的簡化描述?!澳P偷谋举|(zhì)在于簡化”軟件過程模型就是對描述的實(shí)際過程的抽象,它包括構(gòu)成軟件過程的各種活動、軟件產(chǎn)品及軟件工程人員參與的不同角色。2.1軟件過程模型與過程流

軟件過程模型是從一特定角度提出1212.1軟件過程模型與過程流過程流(模型)是最主要的一類軟件過程模型。過程流描述了如何在執(zhí)行順序和執(zhí)行時(shí)間這一層面上,組織軟件過程中(除維護(hù)之外的)的活動。幾種主要的過程流及典型過程模型:線性過程流:瀑布模型迭代過程流:原型開發(fā)模型演化過程流:螺旋模型并行過程流:混合過程流:增量模型2.1軟件過程模型與過程流過程流(模型)是最主要的一類軟件1222.1軟件過程模型與過程流溝通需求策劃建模編碼測試部署運(yùn)行線性過程流溝通需求策劃建模編碼測試部署運(yùn)行迭代過程流溝通需求策劃建模編碼測試部署運(yùn)行演化過程流溝通需求策劃建模編碼測試部署運(yùn)行并行過程流2.1軟件過程模型與過程流溝通需求策劃建模編碼測試部署運(yùn)行1232.2瀑布模型瀑布模型(waterfallmodel)是由W.Royce于1970年提出來的。又稱為軟件生存周期模型。瀑布模型嚴(yán)格按照軟件生存周期各個(gè)階段來進(jìn)行開發(fā),上一階段的輸出即是下一階段的輸入,并強(qiáng)調(diào)每一階段的嚴(yán)格性。它規(guī)定了各階段的任務(wù)和應(yīng)提交的成果及文檔,每一階段的任務(wù)完成后,都必須對其階段性產(chǎn)品(主要是文檔)進(jìn)行評審,通過后才能開始下一階段的工作。因此,它是一種以文檔作為驅(qū)動的模型。2.2瀑布模型瀑布模型(waterfallmodel)是1242.2瀑布模型軟件生存周期:軟件從定義開始,經(jīng)過開發(fā)、使用和維護(hù),直到最終退役的全過程稱為軟件生存周期。瀑布模型將軟件生命周期分成軟件定義、軟件開發(fā)、運(yùn)行、維護(hù)及退役五個(gè)時(shí)期組成。而每個(gè)時(shí)期又可以進(jìn)一步劃分成若干階段。2.2瀑布模型軟件生存周期:軟件從定義開始,經(jīng)過開發(fā)、使用1252.2瀑布模型的結(jié)構(gòu)可行性研究特點(diǎn):階段間具有順序性和依賴性推遲實(shí)現(xiàn)質(zhì)量保證需求分析概要設(shè)計(jì)詳細(xì)設(shè)計(jì)實(shí)現(xiàn)組裝測試驗(yàn)收測試使用與維護(hù)退役2.2瀑布模型的結(jié)構(gòu)可行性研究特點(diǎn):需求分析概要設(shè)計(jì)詳細(xì)設(shè)1262.2瀑布模型的變形-V模型可行性研究需求分析(驗(yàn)收測試計(jì)劃)概要設(shè)計(jì)(組裝測試計(jì)劃)詳細(xì)設(shè)計(jì)(單元測試計(jì)劃)編碼與調(diào)試單元測試集成測試系統(tǒng)測試驗(yàn)收測試運(yùn)行與維護(hù)V模型強(qiáng)調(diào)了質(zhì)量保證活動,特別是測試與其它動作之間的關(guān)系2.2瀑布模型的變形-V模型可行性研究需求分析概要設(shè)計(jì)詳細(xì)1272.2瀑布模型的優(yōu)點(diǎn)可強(qiáng)迫開發(fā)人員采用的規(guī)范方法;嚴(yán)格規(guī)定了每一階段必須提交的文檔;要求每一階段交付之產(chǎn)品都必須經(jīng)過質(zhì)量保證小組的仔細(xì)審查;清晰區(qū)分了邏輯設(shè)計(jì)與物理設(shè)計(jì),盡可能推遲程序的物理實(shí)現(xiàn)?!耙环N文檔驅(qū)動的模型”提供了軟件開發(fā)的基本框架,有利于大型軟件開發(fā)過程中人員的組織、管理,有利于軟件開發(fā)方法和工具的研究與使用,因此,在軟件工程中占有重要的地位。2.2瀑布模型的優(yōu)點(diǎn)可強(qiáng)迫開發(fā)人員采用的規(guī)范方法;1282.2瀑布模型的不足

瀑布模型要求在項(xiàng)目開始的需求分析階段就能夠完整的得到客戶的所有需求。但在實(shí)際中客戶通常難以清楚地描述出所有的需求;同時(shí),客戶自身的需求也可能會隨著時(shí)間的變化而發(fā)生變化。1988年的發(fā)表的一份關(guān)于軟件項(xiàng)目的研究報(bào)告指出,平均每個(gè)項(xiàng)目有25%左右的需求功能點(diǎn)變化;1997年的另一份研究報(bào)告中,需求功能點(diǎn)的變化率則達(dá)到了35%-50%??蛻粢巾?xiàng)目接近尾聲的驗(yàn)收階段才能夠看到實(shí)際的程序執(zhí)行效果。如果這時(shí)才發(fā)現(xiàn)程序和客戶實(shí)際要求有重大偏差,就可能會造成重大的損失。這兩個(gè)問題構(gòu)成了瀑布模型的致命弱點(diǎn)。2.2瀑布模型的不足

瀑布模型要求在項(xiàng)目開始的需求分析階段1292.2瀑布模型的不足2001年發(fā)表的一份論文,對1027個(gè)失敗軟件項(xiàng)目的失敗原因作了研究。其中82%的項(xiàng)目認(rèn)為采用瀑布模型是導(dǎo)致失敗的罪魁禍?zhǔn)祝『芏嗖捎闷俨寄P偷捻?xiàng)目在開發(fā)時(shí)為了應(yīng)對可能的變化,采取了在軟件產(chǎn)品中盡可能包含更多功能的方法,這構(gòu)成了極大的浪費(fèi)。在一份研究發(fā)現(xiàn),在采用瀑布模型的開發(fā)項(xiàng)目中,有45%以上的功能最終根本就沒有被使用,有19%以上的功能幾乎沒有被使用。也就是說,為了開發(fā)這將近65%的功能而所作的工作完全是浪費(fèi)!不過,當(dāng)需求非常明確時(shí)(比如,山寨某個(gè)已知的軟件),瀑布模型還是個(gè)很有用的模型。2.2瀑布模型的不足2001年發(fā)表的一份論文,對1027個(gè)1302.3原型開發(fā)模型針對瀑布模型的下列缺陷,提出了原型開發(fā)模型:在瀑布模型中,項(xiàng)目開發(fā)者在需求分析階段只能通過文字和圖形來向用戶展示軟件功能,不夠直觀,很容易造成誤解用戶直到最后階段才能看到軟件操作界面和實(shí)際功能。所謂原型,就是軟件的一個(gè)模擬的可執(zhí)行界面。用戶可在原型上進(jìn)行操作,直觀的感受軟件的執(zhí)行效果。原型開發(fā)就是軟件開發(fā)人員根據(jù)用戶提出的軟件基本需求快速開發(fā)一個(gè)原型,向用戶展示軟件界面和功能。在征求用戶對原型的評價(jià)意見后,進(jìn)一步改進(jìn)、完善原型,如此迭代,直到軟件開發(fā)人員和用戶都確認(rèn)軟件系統(tǒng)的需求并達(dá)成一致的理解為止。軟件需求確定后,便可進(jìn)行設(shè)計(jì),編碼、測試等以后的各個(gè)開發(fā)步驟。2.3原型開發(fā)模型針對瀑布模型的下列缺陷,提出了原型開發(fā)模1312.3原型開發(fā)模型的優(yōu)點(diǎn)原型的開發(fā)和評審是系統(tǒng)分析員和用戶/客戶共同參予的迭代過程,這種迭代過程有利于雙方的充分理解和溝通。原型開發(fā)模型比瀑布模型更符合人們認(rèn)識事物的過程和規(guī)律,項(xiàng)目成員能夠更清晰的理解用戶實(shí)際需求。如果原型的開發(fā)語言和實(shí)際軟件相同,那么它的若干高質(zhì)量的程序片段和開發(fā)工具也可被用于工作程序的開發(fā)。2.3原型開發(fā)模型的優(yōu)點(diǎn)原型的開發(fā)和評審是系統(tǒng)分析員和用戶1322.3原型開發(fā)建造/修改原型用戶測試運(yùn)行原型聽取用戶意見2.3原型開發(fā)建造/修改原型用戶測試聽取用戶意見1332.3原型開發(fā)初步需求分析快速設(shè)計(jì)建造原型用戶評估原型(新需求)對原型加工開發(fā)產(chǎn)品開始結(jié)束用戶/客戶給出軟件產(chǎn)品的一般需求開發(fā)小組和用戶共同定義軟件總體目標(biāo),標(biāo)識已知需求對界面、功能、人機(jī)交互方式等,進(jìn)行設(shè)計(jì)并建造原型強(qiáng)調(diào)“快速”,釆用基于構(gòu)件的軟件開發(fā)方法,盡量縮短軟件開發(fā)周期,不宜釆用過多的新技術(shù)用戶/客戶對原型進(jìn)行評估修改需求、更新設(shè)計(jì)、完善原型直至確定需求。2.3原型開發(fā)初步需求分析快速設(shè)計(jì)建造原型用戶評估原型(新1342.3快速原型的開發(fā)途徑原型僅僅是需求分析的一部分,因此必須盡可能快速的開發(fā)原型:僅模擬軟件系統(tǒng)的人機(jī)界面和人機(jī)交互方式。開發(fā)一個(gè)工作模型,實(shí)現(xiàn)軟件系統(tǒng)中重要的或容易產(chǎn)生誤解的功能。利用一個(gè)或幾個(gè)類似的正在運(yùn)行的軟件向用戶展示軟件需求中的部分或全部功能。建造原型應(yīng)盡量采用相應(yīng)的軟件工具和環(huán)境,并盡量采用軟件重用技術(shù),在運(yùn)行效率方面可做出讓步,以便盡快提供。同時(shí),原型應(yīng)充分展示軟件系統(tǒng)的可見部分,如人機(jī)界面、數(shù)據(jù)的輸入方式和輸出格式等。2.3快速原型的開發(fā)途徑原型僅僅是需求分析的一部分,因此必1352.3采用原型模型的軟件生命周期生成原型測試分析定義系統(tǒng)需求系統(tǒng)設(shè)計(jì)程序設(shè)計(jì)含原型化的軟件生存期原型化運(yùn)行和維護(hù)編碼2.3采用原型模型的軟件生命周期生成測試分析定義系統(tǒng)程序含1362.3原型開發(fā)模型的缺點(diǎn)

原型開發(fā)模型要求開發(fā)者和用戶在一段時(shí)間內(nèi)緊密配合、共同參與完成原型系統(tǒng)的開發(fā),特別是需要用戶的及時(shí)反饋。如果用戶對此不夠重視,那么原型開發(fā)的意義也就大打折扣了。原型的快速構(gòu)造容易讓用戶誤以為實(shí)際軟件的開發(fā)也是可以很容易、很快就完成的,或者要求開發(fā)者直接將原型稍加修改使之成為實(shí)際運(yùn)行的產(chǎn)品。而實(shí)際上,為了快速開發(fā)原型,開發(fā)者往往會犧牲軟件質(zhì)量和可維護(hù)性而采取了最快速的開發(fā)手段,因此實(shí)際的高質(zhì)量軟件產(chǎn)品需要拋棄原型從頭開發(fā)。如果不能夠充分的向客戶解釋這一點(diǎn)的話,就容易導(dǎo)致軟件開發(fā)人員和用戶之間產(chǎn)生矛盾。原型開發(fā)模型最大的缺點(diǎn)在于,它仍然沒有解決需求變化的問題。2.3原型開發(fā)模型的缺點(diǎn)

原型開發(fā)模型要求開發(fā)者和用戶在一1372.3原型開發(fā)的意義原型開發(fā)模型雖然存在無法適應(yīng)需求變化的缺陷,但原型開發(fā)作為一種需求分析的方法,還是非常有價(jià)值的。要充分發(fā)揮原型開發(fā)的價(jià)值,避免用戶的誤解,需要在項(xiàng)目開始時(shí)就和用戶進(jìn)行充分的溝通和解釋,讓他們明白(或者說承認(rèn))原型只是為了明確需求而服務(wù)的,用完后是要丟棄的,實(shí)際軟件系統(tǒng)則是要以質(zhì)量為第一目標(biāo)來進(jìn)行開發(fā)。2.3原型開發(fā)的意義原型開發(fā)模型雖然存在無法適應(yīng)需求變化的1382.4螺旋模型螺旋模型是一種演化式的軟件過程模型。它結(jié)合了原型開發(fā)模型的迭代性和瀑布模型的系統(tǒng)性和可控性特點(diǎn)。它把軟件開發(fā)過程轉(zhuǎn)化成了了軟件的版本演進(jìn)過程。通過多次的反復(fù)迭代演化,一個(gè)版本一個(gè)版本的逐步完善軟件,提高了軟件開發(fā)對需求變化的適應(yīng)能力它在模型中明確加入了風(fēng)險(xiǎn)控制活動,每次迭代時(shí)都要考慮可能的風(fēng)險(xiǎn),并采取措施來降低風(fēng)險(xiǎn)。交付并不意味著軟件過程的結(jié)束,它只是上一次迭代的結(jié)束和下一次迭代的開始。整個(gè)軟件過程貫穿軟件產(chǎn)品的整個(gè)生命周期。2.4螺旋模型螺旋模型是一種演化式的軟件過程模型。1392.4螺旋模型評審提交線對目標(biāo)、可選方案和約束的確定制定計(jì)劃預(yù)估可選方案,明確并解決風(fēng)險(xiǎn)風(fēng)險(xiǎn)分析開發(fā)驗(yàn)證下一級產(chǎn)品實(shí)施工程規(guī)劃下階段工作客戶評估第一圈產(chǎn)生產(chǎn)品規(guī)格說明原型1風(fēng)險(xiǎn)分析需求計(jì)劃和生存周期計(jì)劃操作的概念需求評價(jià)第二圈產(chǎn)生一個(gè)用于開發(fā)的原型原型2風(fēng)險(xiǎn)分析軟件需求需求有效性驗(yàn)證驗(yàn)收測試計(jì)劃建模需求精化計(jì)劃第三圈產(chǎn)生軟件產(chǎn)品的初始版本原型3風(fēng)險(xiǎn)分析組裝測試計(jì)劃設(shè)計(jì)驗(yàn)證與確認(rèn)產(chǎn)品設(shè)計(jì)模擬開發(fā)計(jì)劃第四圈產(chǎn)生軟件產(chǎn)品比較完善的新版本風(fēng)險(xiǎn)分析操作原型詳細(xì)設(shè)計(jì)編碼單元測試組裝測試驗(yàn)收測試運(yùn)行維護(hù)評價(jià)實(shí)現(xiàn)計(jì)劃順時(shí)針為進(jìn)展方向2.4螺旋模型評審提交線對目標(biāo)、可選方案和約束的確定制定計(jì)1402.4螺旋模型螺旋模型的每一個(gè)迭代周期都包括計(jì)劃(需求定義)、風(fēng)險(xiǎn)分析、工程實(shí)現(xiàn)和評審4個(gè)階段。計(jì)劃(需求定義)在第一輪迭代周期中,利用需求分析技術(shù)理解應(yīng)用領(lǐng)域,獲取初步用戶需求,制定項(xiàng)目開發(fā)計(jì)劃(即整個(gè)軟件生命周期計(jì)劃)和需求分析計(jì)劃。在以后的每個(gè)迭代周期中,根據(jù)用戶和開發(fā)人員對上一周期工作成果評價(jià)和評審,修改、完善需求,明確下一周期軟件開發(fā)的目標(biāo)、約束條件,并據(jù)此制定新一輪的軟件開發(fā)計(jì)劃。2.4螺旋模型螺旋模型的每一個(gè)迭代周期都包括計(jì)劃(需求定義1412.4螺旋模型風(fēng)險(xiǎn)分析根據(jù)本輪制定的開發(fā)

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論