本書全面系統地介紹了軟件工程的概念、原理和技術。全書分3篇,第1篇(第1~8章)“面向過程的軟件工程”,以傳統的軟件生存周期為主線,介紹軟件工程的原理和方法,講述了軟件生存周期各階段的任務、過程和方法。第2篇(第9~16章)“面向對象的軟件工程”,以UML語言為主線,結合當前流行的軟件工程工具Rational Rose,介紹面向對象軟件工程的原理和方法。第3篇(第17章)“軟件工程實驗”,是在前兩篇的理論知識基礎上,介紹圖書館圖書管理系統和瀏覽器系統實驗。
本書的特色是將軟件工程理論與軟件工程實際緊密結合,便于教學與應用,既可以作為高等院校計算機專業和軟件工程專業本科生的教材,也可作為工程技術人員的參考書。
前言
第1篇 面向過程的軟件工程
第1章 軟件危機、軟件工程
1.1 軟件工程的發展史
1.1.1 程序設計時代
1.1.2 程序系統時代
1.1.3 軟件工程時代
1.2 軟件危機主要表現形式
1.3 產生軟件危機的原因及解決途徑
1.3.1 產生軟件危機的原因
1.3.2 解決軟件危機的途徑
1.4 軟件和軟件工程
1.4.1 軟件
1.4.2 軟件工程
1.5 軟件質量
1.6 軟件的生存周期及開發模型
1.6.1 軟件生存周期
1.6.2 軟件開發模型
1.7 習題
第2章 可行性研究
2.1 可行性研究的目的與任務
2.2 可行性研究的步驟
2.3 系統流程圖
2.3.1 系統流程圖的符號
2.3.2 系統流程圖示例
2.4 成本一效益分析
2.4.1 貨幣的時間價值
2.4.2 投資回收期
2.4.3 純收入
2.5 可行性研究報告的主要內容
2.6 習題
第3章 軟件需求分析
3.1 需求分析的任務和步驟
3.1.1 需求分析的任務
3.1.2 需求分析的步驟
3.2 需求獲取的常用方法
3.2.1 常規的需求獲取方法
3.2.2 快速建立軟件原型來獲取需求
3.3 需求分析的方法
3.3.1 功能分解方法
3.3.2 結構化分析方法
3.3.3 信息建模方法
3.3.4 面向對象的分析
3.4 結構化分析方法
3.4.1 自頂向下逐層分解的分析策略
3.4.2 結構化分析描述工具
3.4.3 數據流圖
3.4.4 數據字典
3.4.5 加工邏輯的描述
3.5 需求分析圖形工具
3.5.1 層次方框圖
3.5.2 Wamier圖
3.5.3 IPO圖
3.6 SA方法的應用
3.7 習題
第4章 軟件總體設計
4.1 軟件總體設計的目標和任務
4.2 軟件設計的概念和原理
4.2.1 模塊和模塊化
4.2.2 抽象
4.2.3 信息隱蔽和局部化
4.2.4 模塊獨立性及其度量
4.3 軟件結構設計準則
4.4 軟件結構設計的圖形工具
4.4.1 軟件結構圖
4.4.2 層次圖
4.4.3 HIPO圖
4.5 結構化設計方法
4.5.1 數據流圖的類型
4.5.2 結構化設計方法的步驟
4.5.3 變換型分析設計
4.5.4 事務型分析設計
4.6 習題
第5章 軟件詳細設計
第6章 軟件編碼
第7章 軟件測試
第8章 軟件維護
第2篇 UML與面向對象的軟件工程
第9章 UML簡介
第10章 面向對象的概念
第11章 對象設計模式
第12章 面向對象的軟件開發過程
第13章 軟件開發工具Rose
第14章 Rose及其應用
第15章 面向對象的軟件體系結構
第16章 軟件工程新技術
第3篇 軟件工程實驗
第17章 軟件工程實驗大綱
附錄
第1篇 面向過程的軟件工程
第1章 軟件危機、軟件工程
“軟件工程”一詞是由北大西洋公約組織(North Atlantic Treaty Organization,NlATO)的計算機科學家在聯邦德國召開的國際會議上首次提出來的。產生軟件工程這門學科的時代背景是“軟件危機”。軟件工程的發展和應用不僅緩和了軟件危機,而且促使一門新興的工程學科誕生了。
1.1 軟件工程的發展史
軟件工程是隨著計算機系統的發展而逐步形成的計算機科學領域中一門新興的學科。軟件工程的發展經過了三個時代。
1.1.1 程序設計時代
1946年到1956年為程序設計時代,在這個時代,人們用很大力氣研究和發展計算機硬件,經歷了從電子管計算機到晶體管計算機的變革,然而對計算機軟件的研究和發展卻不夠重視。當時,由于硬件的價格昂貴,運行速度低,內存容量小,所以,當時的程序員非常強調“程序設計技巧”,把縮短每一一個微秒的CPU時間和節省每一個二進制存儲單元,作為程序設計的重要目標。但設計的程序難讀、難懂、難修改。
1.1.2 程序系統時代
1956年到1968年為程序系統時代,或者稱為“程序+說明”時代。在這個時代,硬件經歷了從晶體管計算機到集成電路計算機的變革,CPu速度和內存容量都有了很大的提高,從而為計算機在眾多領域中的應用提供了潛在的可能性。這個時代的另一個重要特征是出現了“軟件作坊”。這是因為隨著計算機應用的普及和深化,需要的軟件往往規模相當龐大,以致單個用戶無法開發,此外,許多不同的部門和企業往往需要相同或者類似的軟件,各自開發就會浪費很大的人力。在這種形勢下,“軟件作坊”就應運而生了。不過這個時代的開發方法基本上沿用了程序設計時代的開發方法,但開始提出了結構化的方法。隨著計算機應用的日益普及,軟件需求量急劇增長,用戶的需求和使用環境發生變化時,軟件可修改性很差,往往需要重新編制程序,其研制時間很長,不能及時滿足用戶要求,質量得不到保證,開發人員的素質和落后的開發技術不適應規模大、結構復雜的軟件開發,因此,產生了尖銳的矛盾,所謂的“軟件危機”便由此產生了。
……