面對無窮無盡的計算機應(yīng)用需求,軟件開發(fā)已成為軟件開發(fā)人員面臨的主要任務(wù)!败浖こ獭币殉蔀橛嬎銠C教學一門重要的專業(yè)課。由宋廣軍編著的《高等學校教材·計算機教學叢書:軟件工程》以軟件的生命周期為主線,重點討論結(jié)構(gòu)化的軟件開發(fā)方法,包括結(jié)構(gòu)化分析、結(jié)構(gòu)化設(shè)計、編碼、測試。通過對基本概念、基本原理、基本技術(shù)、基本方法的學習,使讀者能很快運用工程的方法與技術(shù)開發(fā)軟件。近些年來面向?qū)ο筌浖_發(fā)方法和技術(shù)不斷普及,用最后兩章的篇幅介紹面向?qū)ο蟮幕靖拍,面向(qū)ο蟮姆治龊驮O(shè)計方法!陡叩葘W校教材·計算機教學叢書:軟件工程》內(nèi)容盡量做到通俗易懂,圖文并茂,原理、方法與實例相結(jié)合。可作為高等學校計算機專業(yè)教材,也可供計算機軟件人員和計算機用戶參考。
軟件工程是計算機學科中指導計算機軟件開發(fā)的工程科學,然而長期以來,隨著微電子技術(shù)的發(fā)展,計算機硬件性能不斷提高,人們開發(fā)優(yōu)質(zhì)軟件的能力遠遠落后于硬件技術(shù)的發(fā)展和應(yīng)用計算機軟件的需求。 由宋廣軍編著的《高等學校教材·計算機教學叢書:軟件工程》共分11章:第l章軟件工程概述;第2章軟件計劃;第3章軟件需求分析;第4章總體設(shè)計;第5章詳細設(shè)計;第6章程序編碼;第7章軟件測試;第8章軟件實施與維護;第9章軟件項目管理;第10章面向?qū)ο蠓椒▽W與建模;第11章面向?qū)ο笤O(shè)計與實現(xiàn)。
第1章 軟件工程概述
1.1 軟件工程與軟件危機
1.1.1 軟件的發(fā)展階段
1.1.2 軟件危機
1.1.3 軟件工程
1.2 軟件開發(fā)模型
1.2.1 軟件生命周期
1.2.2 軟件開發(fā)的瀑布模型
1.2.3 原型化開發(fā)模型
1.2.4 螺旋模型
1.2.5 增量模型
1.2.6 面向?qū)ο笊嫫谀P?br>1.2.7 噴泉模型
1.2.8 基于四代技術(shù)的模型
習題1
第2章 軟件計劃
2.1 問題定義
2.2 可行性研究
2.2.1 可行性研究的任務(wù)
2.2.2 可行性研究過程
2.2.3 系統(tǒng)流程圖
2.2.4 可行性論證報告
2.3 成本效益分析
2.4 項目開發(fā)計劃
2.5 系統(tǒng)規(guī)格說明及評審
習題2
第3章 軟件需求分析
3.1 需求分析概述
3.1.1 需求分析的基本原則
3.1.2 需求分析的任務(wù)
3.1.3 需求分析的步驟
3.1.4 需求規(guī)格說明與驗證
3.2 數(shù)據(jù)流圖(dfd)
3.2.1 符號
3.2.2 命名
3.2.3 特點和用途
3.2.4 數(shù)據(jù)流圖的畫法
3.3 數(shù)據(jù)字典
3.3.1 數(shù)據(jù)字典的內(nèi)容
3.3.2 定義數(shù)據(jù)的方法
3.3.3 數(shù)據(jù)字典的實現(xiàn)
3.4 實體-聯(lián)系圖
3.5 結(jié)構(gòu)化分析方法
3.5.1 實現(xiàn)的步驟
3.5.2 畫分層dfd圖的指導原則
3.5.3 結(jié)構(gòu)化分析方法的局限
3.6 結(jié)構(gòu)化分析示例
習題3
第4章 總體設(shè)計
4.1 總體設(shè)計的任務(wù)和過程
4.2 軟件設(shè)計的基本原理
4.2.1 問題分解
4.2.2 模塊化
4.2.3 抽象與逐步求精
4.2.4 信息隱蔽
4.2.5 模塊獨立性
4.3 總體設(shè)計的工具
4.3.1 層次圖
4.3.2 ipo圖
4.3.3 hipo圖
4.4 結(jié)構(gòu)化設(shè)計方法
4.4.1 信息流分類
4.4.2 結(jié)構(gòu)圖
4.4.3 變換分析
4.4.4 事務(wù)分析
4.4.5 混合型分析
習題4
第5章 詳細設(shè)計
5.1 詳細設(shè)計的任務(wù)和過程
5.2 結(jié)構(gòu)化程序設(shè)計思想
5.2.1 對goto語句使用的不同看法
5.2.2 結(jié)構(gòu)化的控制結(jié)構(gòu)
5.3.3 逐步細化的實現(xiàn)方法
5.3 詳細設(shè)計的工具
5.3.1 程序流程圖
5.3.2 盒圖(n-s圖)
5.3.3 pad圖
5.3.4 偽代碼和pdl語言
5.3.5 判定表與判定樹
5.4 jackson程序設(shè)計方法
5.4.1 jackson圖
5.4.2 jackson方法
5.5 程序結(jié)構(gòu)復(fù)雜度的定量度量
5.5.1 mccabe方法
5.5.2 halstead方法
5.6 人-機界面設(shè)計
5.6.1 用戶的使用需求分析
5.6.2 人-機界面的設(shè)計原則
5.6.3 人-機界面實現(xiàn)的原則
5.7 軟件安全問題
5.7.1 軟件安全控制的目的
5.7.2 軟件錯誤的典型表現(xiàn)
5.7.3 軟件系統(tǒng)安全控制的基本方法
5.7.4 軟件的安全控制設(shè)計
5.8 軟件設(shè)計復(fù)審
習題5
第6章 程序編碼
6.1 編碼的目酌
6.2 程序設(shè)計語言
6.2.1 程序設(shè)計語言分類
6.2.2 程序設(shè)計語言的特征屬性
6.2.3 程序設(shè)計語言的使用準則
6.3 程序設(shè)計風格
6.3.1 使用程序內(nèi)部的文檔
6.3.2 數(shù)據(jù)說明原則
6.3.3 語句構(gòu)造規(guī)則
6.3.4 輸入輸出準則
6.4 提高效率的準則
6.5 防止編碼錯誤
習題6
第7章 軟件的測試
7.1 基本概念
7.1.1 軟件測試目標
7.1.2 軟件測試的原則
7.1.3 軟件測試的方法
7.1.4 軟件測試的過程
7.2 軟件測試技術(shù)
7.2.1 白盒測試
7.2.2 黑盒測試
7.2.3 實用綜合測試策略
7.3 軟件測試策略
7.3.1 單元測試
7.3.2 集成測試
7.3.3 驗收測試
7.3.4 系統(tǒng)測試
7.3.5 軟件測試過程
7.4 調(diào)試技術(shù)
7.4.1 調(diào)試過程
7.4.2 調(diào)試技術(shù)
7.4.3 調(diào)試原則
習題7
第8章 軟件實施與維護
8.1 軟件維護的種類
8.2 軟件維護的特點
8.2.1 軟件工程與軟件維護的關(guān)系
8.2.2 影響維護工作量的因素
8.2.3 軟件維護的策略
8.2.4 維護的成本
8.2.5 可能存在的問題
8.3 維護任務(wù)的實施
8.3.1 維護組織
8.3.2 維護報告
8.3.3 維護過程
8.3.4 維護記錄的保存
8.3.5 對維護的評價
8.4 軟件的可維護性
8.4.1 軟件可維護性定義
8.4.2 影響軟件可維護性的因素
8.4.3 提高軟件的可維護性方法
8.5 軟件維護的副作用
8.5.1 修改代碼的副作用
8.5.2 修改數(shù)據(jù)的副作用
8.5.3 修改文檔的副作用
8.6 逆向工程和再工程
8.6.1 預(yù)防性維護
8.6.2 逆向工程的元素
習題8
第9章 軟件項目管理
9.1 軟件工程管理概述
9.1.1 軟件工程管理的重要性
9.1.2 管理的目的與內(nèi)容
9.2 軟件工作量估算
9.2.1 軟件開發(fā)成本估算方法
9.2.2 算法模型估算
9.3 風險管理
9.3.1 風險分析
9.3.2 風險識別
9.3.3 風險估算
9.3.4 風險評估
9.3.5 風險監(jiān)控
9.4 進度計劃
9.4.1 任務(wù)的確定與進度計劃
9.4.2 gantt圖
9.4.3 工程網(wǎng)絡(luò)技術(shù)
9.4.4 項目的追蹤和控制
9.5 軟件配置管理
9.5.1 軟件配置
9.5.2 軟件配置管理任務(wù)
9.6 軟件質(zhì)量保證與cmm
9.6.1 軟件質(zhì)量
9.6.2 軟件指令保證措施
9.6.3 能力成熟度模型cmm
9.6.4 能力成熟度模式整合(cmmi)
習題9
第10章 面向?qū)ο蠓椒▽W與建模
10.1 面向?qū)ο蠓椒▽W的基本概念
10.1.1 傳統(tǒng)方法學存在的問題
10.1.2 面向?qū)ο蠓椒▽W的發(fā)展狀況
10.1.3 面向?qū)ο蠓椒▽W的要素和優(yōu)點
10.2 統(tǒng)一建模語言
10.2.1 模型的建立
10.2.2 uml概述
10.2.3 uml的特點與應(yīng)用
10.3 面向?qū)ο蠓治?br>10.3.1 面向?qū)ο蠓治?br>10.3.2 建立對象模型
10.3.3 建立動態(tài)模型
10.3.4 功能模型
習題10
第11章 面向?qū)ο笤O(shè)計與實現(xiàn)
11.1 面向?qū)ο笤O(shè)計
11.1.1 面向?qū)ο笤O(shè)計準則及啟發(fā)規(guī)則
11.1.2 軟件重用
11.1.3 對象設(shè)計
11.1.4 系統(tǒng)設(shè)計
11.2 面向?qū)ο蟮膶崿F(xiàn)
11.2.1 面向?qū)ο蟪绦蛟O(shè)計語言
11.2.2 面向?qū)ο蟪绦蛟O(shè)計方法
11.2.3 面向?qū)ο蟪绦蛟O(shè)計風格
11.2.4 面向?qū)ο蟮能浖䴗y試
習題11
參考文獻
3.運行時期
運行時期是軟件生命周期的最后一個時期。其主要工作是作好軟件維護。維護的目的是使軟件在整個生命周期內(nèi)保證滿足用戶的需求和延長軟件的使用壽命。軟件維護的具體活動包括糾錯維護、適應(yīng)性維護、功能性維護和預(yù)防性維護。所謂糾錯性維護就是改正在軟件運行過程中暴露出來的系統(tǒng)遺留的各種錯誤。這種維護活動在系統(tǒng)交付初期比較頻繁,但當系統(tǒng)進入穩(wěn)定運行期后應(yīng)該很少發(fā)生。適應(yīng)性維護是指當系統(tǒng)運行環(huán)境發(fā)生變化以后,為適應(yīng)這種改變必須對軟件進行的修改。功能性維護是指在軟件過程中為滿足用戶需求的變化與擴充對軟件所做的修改。預(yù)防性維護則是指為改善軟件將來的可維護性所做的準備丁作。軟件運行穩(wěn)定以后,維護的主要活動應(yīng)該是適應(yīng)性和功能性維護。
雖然沒有把維護階段進一步劃分成更小的階段,但是實際上每一項維護活動都應(yīng)該經(jīng)過提出維護要求、分析維護要求、提出維護方案、審批維護方案、確定維護計劃、修改軟件設(shè)計、修改程序、測試程序、復(fù)查驗收等一系列步驟,因此實質(zhì)上是經(jīng)歷了一次壓縮和簡化了的軟件定義和開發(fā)的全過程。
1.2.2軟件開發(fā)的瀑布模型
瀑布模型也稱軟件生存周期模型,由W.Royce于1970年首先提出。根據(jù)軟件生存周期各個階段的任務(wù),瀑布模型從可行性研究(或稱系統(tǒng)分析),逐步進行階段性變換,直至通過確認測試,并得到用戶確認的軟件產(chǎn)品為止。瀑布模型上一階段的變換結(jié)果是下一階段變換的輸入,相鄰兩個階段具有因果關(guān)系,緊密相連。一個階段工作的失誤將蔓延到以后的各個階段。為了保障軟件開發(fā)的正確性,每個階段任務(wù)完成后,都必須對它的階段性產(chǎn)品進行評審,確認之后再轉(zhuǎn)入下一階段的工作。評審過程發(fā)現(xiàn)錯誤和疏漏后,應(yīng)該反饋到前面的有關(guān)階段修正錯誤、彌補疏漏,然后再重復(fù)前面的工作,直至某一階段通過評審后再進入下一階段。這種形式的瀑布模型是帶有反饋的瀑布模型。
嚴格按照軟件生命周期的階段劃分,順序執(zhí)行各階段構(gòu)成軟件開發(fā)的瀑布型模型。它是傳統(tǒng)的軟件工程生存期模式。
……