- 面向?qū)ο蠹夹g(shù)與工具(第2版)
- 陳文宇等編著
- 2093字
- 2018-12-27 18:06:48
1.3 軟件過程模型
軟件過程模型也稱為軟件生存期模型或軟件開發(fā)模型,是描述軟件過程中各種活動如何執(zhí)行的模型。它確立了軟件開發(fā)和演繹各階段的次序限制以及各階段活動的準(zhǔn)則,確立了開發(fā)過程所遵守的規(guī)定和限制,便于各種活動的協(xié)調(diào)以及各種人員的有效通信,有利于活動重用和活動管理。
目前常見的軟件過程模型有瀑布模型、增量模型、螺旋模型、噴泉模型、變換模型和基于知識的模型等。
1.3.1 瀑布模型
瀑布模型是經(jīng)典的軟件開發(fā)模型,是1970年由W.Royce提出的最早的軟件開發(fā)模型。如圖1-4所示,瀑布模型將軟件開發(fā)活動中的各項(xiàng)活動規(guī)定為依線性順序連接的若干個階段的工作,形如瀑布流水,最終得到軟件系統(tǒng)或軟件產(chǎn)品。換句話說,它將軟件開發(fā)過程劃分成若干個互相區(qū)別而又彼此聯(lián)系的階段,每個階段中的工作都以上一個階段工作的結(jié)果為依據(jù),同時作為下一個階段的工作基礎(chǔ)。

圖1-4 瀑布模型
每個階段的任務(wù)完成之后,產(chǎn)生相應(yīng)的文檔。它是以文檔作為驅(qū)動的,該模型適合于需求很明確的軟件項(xiàng)目開發(fā)。
在軟件工程的第一階段,瀑布模型得到了廣泛的應(yīng)用。它簡單、易用,在消除非結(jié)構(gòu)化軟件、降低軟件的復(fù)雜性、促進(jìn)軟件開發(fā)工程化方面起了很大的作用。但在軟件開發(fā)實(shí)踐中也逐漸暴露出它的缺點(diǎn)。由于瀑布模型是一種理想的線性開發(fā)模式,它將一個充滿回溯的軟件開發(fā)過程硬性分割為幾個階段,無法解決軟件需求不明確或者變動的問題。這些缺點(diǎn)對軟件開發(fā)帶來了嚴(yán)重影響,由于需求不明確,會導(dǎo)致開發(fā)的軟件不符合用戶的需求而夭折。
1.3.2 增量模型
增量模型是一種非整體開發(fā)的模型。根據(jù)增量的方式和形式的不同,分為基于瀑布模型的漸增模型和基于原型的快速原型模型。圖1-5描述的是一般的增量模型。

圖1-5 一般增量模型
該模型具有較大的靈活性,適合于軟件需求不明確、設(shè)計方案有一定風(fēng)險的軟件項(xiàng)目。
增量模型和瀑布模型之間的本質(zhì)區(qū)別是:瀑布模型屬于整體開發(fā)模型,它規(guī)定在開始下一個階段的工作之前,必須完成前一階段的所有細(xì)節(jié)。而增量模型屬于非整體開發(fā)模型,它推遲某些階段或所有階段中的細(xì)節(jié),從而較早地產(chǎn)生工作軟件。
1.3.3 螺旋模型
對于大型軟件,只開發(fā)一個原型往往達(dá)不到要求。螺旋模型將瀑布模型和增量模型結(jié)合起來,并加入了風(fēng)險分析。它是由TRW公司的B.Boehm于1988年提出的。該模型將開發(fā)劃分為制定計劃、風(fēng)險分析、實(shí)施工程和客戶評估4類活動。如圖1-6所示,沿著螺旋線每轉(zhuǎn)一圈,表示開發(fā)出一個更完善的新的軟件版本。如果開發(fā)風(fēng)險過大,開發(fā)機(jī)構(gòu)和客戶無法接受,則項(xiàng)目有可能就此終止。在多數(shù)情況下,會沿著螺旋線繼續(xù)下去,自內(nèi)向外逐步延伸,最終得到滿意的軟件產(chǎn)品。

圖1-6 螺旋模型
螺旋模型將開發(fā)過程分為幾個螺旋周期,每個螺旋周期可分為4個工作步驟:
① 制定計劃:確定目標(biāo)、方案和限制條件。
② 風(fēng)險分析:評估方案、識別風(fēng)險和消除風(fēng)險。
③ 實(shí)施工程:開發(fā)驗(yàn)證下一級產(chǎn)品。
④ 客戶評估:計劃下一周期工作。
1.3.4 噴泉模型
噴泉模型是由B.H.Sollers和J.M.Edwards于1990年提出的一種新的開發(fā)模型,主要用于采用面向?qū)ο蠹夹g(shù)的軟件開發(fā)項(xiàng)目。它克服了瀑布模型不支持軟件重用和多項(xiàng)開發(fā)活動集成的局限性。噴泉模型使開發(fā)過程具有迭代性和無間隙性。軟件的某個部分常常被重復(fù)使用多次,相關(guān)對象在每次迭代中隨之加入漸進(jìn)的軟件成分,即迭代性;而分析和設(shè)計活動等各項(xiàng)活動之間沒有明顯的邊界,即無間隙性。
噴泉模型是以面向?qū)ο蟮能浖_發(fā)方法為基礎(chǔ),以用戶需求作為噴泉模型的源泉。如圖1-7所示,噴泉模型有如下特點(diǎn)。

圖1-7 噴泉模型
① 噴泉模型規(guī)定軟件開發(fā)過程有4個階段,即分析、系統(tǒng)設(shè)計、軟件設(shè)計和實(shí)現(xiàn)。
② 噴泉模型的各階段相互重疊,它反映了軟件過程并行性的特點(diǎn)。
③ 噴泉模型以分析為基礎(chǔ),資源消耗呈塔形,在分析階段消耗的資源最多。
④ 噴泉模型反映了軟件過程迭代性的自然特性,從高層返回低層無資源消耗。
⑤ 噴泉模型強(qiáng)調(diào)增量開發(fā),它依據(jù)“分析一點(diǎn),設(shè)計一點(diǎn)”的原則,并不要求一個階段的徹底完成,整個過程是一個迭代的逐步提煉的過程。
⑥ 噴泉模型是對象驅(qū)動的過程,對象是所有活動作用的實(shí)體,也是項(xiàng)目管理的基本內(nèi)容。
⑦ 噴泉模型在實(shí)現(xiàn)時,由于活動不同,可分為系統(tǒng)實(shí)現(xiàn)和對象實(shí)現(xiàn),這既反映了全系統(tǒng)的開發(fā)過程,也反映了對象的開發(fā)和重用過程。
1.3.5 智能模型
智能模型也稱為基于知識的軟件開發(fā)模型,是知識工程與軟件工程在開發(fā)模型上結(jié)合的產(chǎn)物,是以瀑布模型與專家系統(tǒng)的綜合應(yīng)用為基礎(chǔ)建立的模型。該模型通過應(yīng)用系統(tǒng)的知識和規(guī)則幫助設(shè)計者認(rèn)識一個特定的軟件的需求和設(shè)計,這些專家系統(tǒng)已成為開發(fā)過程的伙伴,并指導(dǎo)開發(fā)過程。
從圖1-8中可以清楚地看到,智能模型與其他模型不同,它的維護(hù)并不在程序一級上進(jìn)行,這樣大大地降低了問題的復(fù)雜性。

圖1-8 智能模型
智能模型的主要優(yōu)點(diǎn)有:
① 通過領(lǐng)域的專家系統(tǒng),可使需求說明更加完整、準(zhǔn)確和無二義性;
② 通過軟件工程的專家系統(tǒng),提供一個設(shè)計庫支持,在開發(fā)過程中成為設(shè)計者的助手;
③ 通過軟件工程知識和特定應(yīng)用領(lǐng)域的知識及規(guī)則的應(yīng)用來提供開發(fā)的幫助。
但是,要建立適合于軟件設(shè)計的專家系統(tǒng),或建立一個既適合軟件工程又適合應(yīng)用領(lǐng)域的知識庫都是非常困難的。目前,在軟件開發(fā)中正應(yīng)用AI技術(shù),在CASE工具系統(tǒng)中使用專家系統(tǒng),例如,使用專家系統(tǒng)來實(shí)現(xiàn)測試自動化,AI技術(shù)在軟件開發(fā)階段取得了局部進(jìn)展。
- 手機(jī)安全和可信應(yīng)用開發(fā)指南:TrustZone與OP-TEE技術(shù)詳解
- Spring Cloud Alibaba微服務(wù)架構(gòu)設(shè)計與開發(fā)實(shí)戰(zhàn)
- Power Up Your PowToon Studio Project
- 深入淺出WPF
- .NET 4.0面向?qū)ο缶幊搪劊夯A(chǔ)篇
- 微信小程序項(xiàng)目開發(fā)實(shí)戰(zhàn)
- SQL經(jīng)典實(shí)例(第2版)
- Unity 2D Game Development Cookbook
- Swift 4從零到精通iOS開發(fā)
- Joomla!Search Engine Optimization
- Neo4j Graph Data Modeling
- Oracle API Management 12c Implementation
- 自學(xué)Python:編程基礎(chǔ)、科學(xué)計算及數(shù)據(jù)分析
- SQL優(yōu)化核心思想
- 深度學(xué)習(xí)企業(yè)實(shí)戰(zhàn):基于R語言