【正文】
在第一個螺旋周期,確定目標、選擇對象、分析約束,通過風險分析制定消除風險的方法,初步開發(fā)原型1,制定系統(tǒng)開發(fā)計劃。在第二個螺旋周期,進一步明確系統(tǒng)的目標、開發(fā)方案及約束條件,通過風險分析制定消除風險的方法,在原型1的基礎上開發(fā)原型2。進一步明確軟件需求,進行需求確認,修改開發(fā)計劃。在第三個螺旋周期,再進一步確認系統(tǒng)目標、開發(fā)方案及約束條件,進行風險分析,制定進一步消除風險的方法,在原型2的基礎上開發(fā)原型3。此時可進行產(chǎn)品設計,再對設計進行驗證和確認,制定集成測試計劃。在第四個螺旋周期,軟件開發(fā)方案、系統(tǒng)目標和約束條件得到確定,在風險分析的基礎上,開發(fā)具有實用價值的可操作原型,此時可對產(chǎn)品進行詳細設計,進入編碼、單元測試、集成測試階段,最后進入驗收測試階段,驗收合格后交付用戶使用,進入運行、維護階段。 統(tǒng)一過程統(tǒng)一過程是經(jīng)過30多年的發(fā)展形成的,它是汲取了各種生存周期模型的先進思想和豐富的實踐經(jīng)驗而產(chǎn)生的。統(tǒng)一過程將成為軟件開發(fā)的主流過程。統(tǒng)一過程(Rational Unified Process,RUP)使用統(tǒng)一建模語言(Unified Modeling Language,UML),采取用例驅(qū)動和架構優(yōu)先的策略,采用迭代增量建造方法。UML采用了面向?qū)ο蟮母拍?,引入了各種獨立于語言的表示符號。UML建立用例模型、靜態(tài)模型和動態(tài)模型完成對整個系統(tǒng)的建模,所定義的概念和符號可用于軟件開發(fā)過程的分析、設計和實現(xiàn)的全過程。軟件開發(fā)人員不必在開發(fā)過程的不同階段進行概念和符號的轉(zhuǎn)換。用例(use case)代表某些用戶可見的功能,實現(xiàn)一個具體的用戶目標。用例代表一類功能而不是使用該功能的某一具體實例。用例是精確描述需求的重要工具。統(tǒng)一過程所構造的軟件系統(tǒng),是由軟件構件建造而成的。這些軟件構件定義了明確的接口,相互連接成整個系統(tǒng)。在構造軟件系統(tǒng)時統(tǒng)一過程采用架構優(yōu)先的策略。軟件構架概念包含了系統(tǒng)中最重要的靜態(tài)結構和動態(tài)特征,構架體現(xiàn)了系統(tǒng)的整體設計。構架優(yōu)先開發(fā)的原則是RUP開發(fā)過程中至關重要的主題。為了管理軟件開發(fā)過程和監(jiān)控軟件開發(fā)過程,RUP把軟件開發(fā)過程劃分為多個循環(huán),每個循環(huán)生成產(chǎn)品的一個新版本。每個循環(huán)都由初始階段、細化階段、構造階段和提交階段等四個階段組成。每個階段是一個小的瀑布模型,要經(jīng)過分析、設計、編碼、集成和測試等步驟。統(tǒng)一過程通過反復多次的循環(huán)迭代,來達到預定的目的或完成確定的任務。每次迭代增加尚未實現(xiàn)的用例,所有用例建造完成后,系統(tǒng)也就建造完成了。關于統(tǒng)一過程和UML將在后面的章節(jié)做進一步介紹。 在具體的軟件項目開發(fā)過程中,可以選用某種生存周期模型,按照某種開發(fā)方法,使用相應的工具進行系統(tǒng)開發(fā)。通常,結構化方法可使用瀑布模型、增量模型和螺旋模型進行開發(fā);面向?qū)ο蠓椒刹捎每焖僭?、增量模型、噴泉模型和統(tǒng)一過程進行開發(fā)。小 結軟件開發(fā)的各個階段必須完成的各種規(guī)格書、說明書、用戶手冊等稱為“文檔”(document)。軟件是計算機程序及其有關的數(shù)據(jù)和文檔的結合。軟件危機是指在計算機軟件開發(fā)和維護時所遇到的一系列問題。軟件危機主要包含兩方面的問題:一是如何開發(fā)軟件以滿足對軟件日益增長的需求;二是如何維護數(shù)量不斷增長的已有軟件。軟件工程是軟件開發(fā)、運行、維護和引退的系統(tǒng)方法。軟件工程是指導計算機軟件開發(fā)和維護的工程學科。軟件工程采用工程的概念、原理、技術和方法來開發(fā)與維護軟件。軟件工程的目標是實現(xiàn)軟件的優(yōu)質(zhì)高產(chǎn)。軟件工程學的主要內(nèi)容是軟件開發(fā)技術和軟件工程管理。軟件開發(fā)方法學是編制軟件的系統(tǒng)方法,它確定軟件開發(fā)的各個階段,規(guī)定每一階段的活動、產(chǎn)品、驗收的步驟和完成準則。常用的軟件開發(fā)方法有結構化方法、面向數(shù)據(jù)結構方法和面向?qū)ο蠓椒ǖ取\浖^程是為了獲得高質(zhì)量軟件所需要完成的一系列任務的框架,它規(guī)定了完成各項任務的工作步驟。ISO 9000把軟件過程定義為:“把輸入轉(zhuǎn)化為輸出的一組彼此相關的資源和活動”。軟件過程定義了運用方法的順序、應該交付的文檔、開發(fā)軟件的管理措施、各階段任務完成的標志。軟件過程必須科學、合理,才能獲得高質(zhì)量的軟件產(chǎn)品。軟件產(chǎn)品從問題定義開始,經(jīng)過開發(fā)、使用和維護,直到最后被淘汰的整個過程稱為軟件生命周期。根據(jù)軟件生產(chǎn)工程化的需要,生存周期的劃分有所不同,從而形成了不同的軟件生命周期模型(SW life cycle model),或稱軟件開發(fā)模型。軟件開發(fā)模型有以下幾種。 瀑布模型:規(guī)范的、文檔驅(qū)動的方法。開發(fā)階段按順序進行,適用于需求分析較明確、開發(fā)技術較成熟的情況。 快速原型模型:構建原型系統(tǒng)讓用戶試用并收集用戶意見,獲取用戶真實需求。 增量模型:優(yōu)點是能在早期向用戶提交部分產(chǎn)品和易于維護,缺點是軟件的體系結構必須是開放的。 噴泉模型:適用于面向?qū)ο蠓椒ā?螺旋模型:適用于大規(guī)模內(nèi)部開發(fā)項目,有利于分析風險和排除風險。 統(tǒng)一過程:適用于面向?qū)ο蠓椒ǎ褂媒y(tǒng)一建模語言UML,采取用例驅(qū)動和架構優(yōu)先的策略,采用迭代增量的建造方法。進行軟件開發(fā)時可把各種模型的特點結合起來,充分利用優(yōu)點,減少缺點。習 題 11.什么是軟件,軟件和程序的區(qū)別是什么?2.什么是軟件危機,軟件危機的主要表現(xiàn)是什么,怎樣消除軟件危機?3.什么是軟件工程,什么是軟件過程,軟件過程與軟件工程方法學有何關系?4.軟件工程學的主要內(nèi)容是什么?5.軟件工程學的基本原理是什么?6.什么是軟件生命周期,軟件生命周期為什么要劃分階段,劃分階段的原則是什么?7.什么是軟件開發(fā)方法,有哪些主要方法? 8.比較各種軟件開發(fā)模型的特點。9.選擇填空快速原型方法是用戶和設計者之間的一種交互過程,適用于 A 系統(tǒng)。它從設計用戶界面開始,首先形成 B ,然后用戶 C 并就 D 提出意見。它是一種 E 型設計 過程。供選擇的答案:A:① 需求不確定性較高的 ② 需求確定的A:③ 管理信息 ④ 決策支持B:① 用戶使用手冊 ② 系統(tǒng)界面原型B:③ 界面需求分析說明書 ④ 完善用戶界面C:① 閱讀文檔資料 ② 改進界面的設計C:③ 模擬界面的運行 ④ 運行界面的原型D:① 使用哪種編程語言 ② 程序的結構D:③ 同意什么和不同意什么 ④ 執(zhí)行速度是否滿足要求 E:① 自外向內(nèi) ② 自底向上E:③ 自頂向下 ④ 自內(nèi)向外10.選擇填空 A 是將軟件生命周期的各個階段,依線性順序連接,用文檔驅(qū)動的模型。在 B 中是采取用例驅(qū)動和架構優(yōu)先的策略,并采用迭代增量建造方法,使軟件“逐漸”被開發(fā)出來。 C 是一種以用戶需求為動力,以對象作為驅(qū)動的模型,適合于面向?qū)ο蟮拈_發(fā) 方法。噴泉模型克服了瀑布模型不支持軟件重用和多項開發(fā)活動集成的局限性。噴泉模型的開發(fā)過程具有 D 和 E 。供選擇的答案:A,B,C:① 統(tǒng)一過程 ② 瀑布模型 ③ 螺旋模型 ④ 噴泉模型D,E:C:① 迭代性 ② 無間隙 ③ 風險性 ④ 需求確定性11.假設你要開發(fā)一個軟件,所得到的結果精確到小數(shù)點后4位。一旦實現(xiàn)并測試完之后,該產(chǎn)品將被拋棄。你打算選用哪種軟件生命周期模型?請說明你做這樣選擇的理由。12.假設你要為一家生產(chǎn)和銷售長筒靴的公司開發(fā)一個軟件,使用此軟件來監(jiān)控該公司的存貨,并跟蹤從購買橡膠開始,到生產(chǎn)長筒靴、發(fā)貨給各個連鎖店,直至賣給顧客的全部過程。以保證生產(chǎn)、銷售過程的各個環(huán)節(jié)供需平衡,既不會有停工待料現(xiàn)象,也不會有供不應求現(xiàn)象。你在為這個項目選擇生命周期模型時使用什么準則? 13.假設第12題中為靴類連鎖店開發(fā)的存貨監(jiān)控軟件很受用戶歡迎,現(xiàn)在軟件開發(fā)公司決定把它重新寫成一個通用軟件包,以賣給各種生產(chǎn)并通過自己的連鎖店銷售產(chǎn)品的公司。因此,這個新的軟件產(chǎn)品必須是可移植的,并且應該能夠很容易地適應新的運行環(huán)境(硬件或操作系統(tǒng)),以滿足不同用戶的需求。你在為本題中的軟件選擇生命周期模型時,使用的準則與在第12題中使用的準則有哪些不同?17 / 18