本書為普通高等教育“十五”國家級規(guī)劃教材。由作者結合多年軟件開發(fā)實踐和近年講授軟件工程課程的教學經驗編寫而成,強調理論與實踐的有機結合。全書共ll章,第1章概括介紹軟件工程的歷史發(fā)展和基本原理,討論IEEE和ACM最新提出的軟件工程知識體系和軟件工程職業(yè)道德規(guī)范:第2章討論軟件過程的基本思想和活動,介紹常見的軟件過程模型和微軟開發(fā)過程的實際案例;第3章討論軟件工程的管理技術,主要涉及人員管理、溝通管理、項目規(guī)劃和風險管理等內容:第4章、第6章至第10章以面向對象技術為核心,全面、深入、系統(tǒng)地介紹軟件開發(fā)各個階段的任務、過程、方法和工具:第5章介紹軟件工程中的形式化方法,包括時序邏輯、Z語言、Petri網等;第ll章介紹軟件進化的概念和方法,包括軟件進化的特性、軟件維護活動、逆向工程與再工程等內容。
全書注重內容的新穎性、條理性、系統(tǒng)性和實用性,始終以大量的開發(fā)實例貫穿全書,可作為計算機專業(yè)有關高年級本科生和低年級研究生學習軟件工程課程的教材,也可供軟件從業(yè)人員參考使用。本書配套的電子教案可從高等教育出版社高等理工教學資源網下載,網址為http://www.hep.st.com.CN。
第1章 概述
1.1 軟件
1.1.1 軟件的特性
1.1.2 軟件的發(fā)展
1.1.3 軟件危機
1.2 軟件工程
1.2.1 軟件工程的概念
1.2.2 軟件工程的三要素
1.2.3 軟件質量的特性
1.2.4 軟件工程方法
1.2.5 計算機輔助軟件工程CASE
1.2.6 當前面臨的主要挑戰(zhàn)
1.3 軟件工程知識體系(SWEBOK)
1.3.1 SWEBOK項目介紹
1.3.2 SWEBOK的組成 第1章 概述
1.1 軟件
1.1.1 軟件的特性
1.1.2 軟件的發(fā)展
1.1.3 軟件危機
1.2 軟件工程
1.2.1 軟件工程的概念
1.2.2 軟件工程的三要素
1.2.3 軟件質量的特性
1.2.4 軟件工程方法
1.2.5 計算機輔助軟件工程CASE
1.2.6 當前面臨的主要挑戰(zhàn)
1.3 軟件工程知識體系(SWEBOK)
1.3.1 SWEBOK項目介紹
1.3.2 SWEBOK的組成
1.3.3 軟件工程與其他相關學科的關系
1.4軟件工程職業(yè)道德規(guī)范
1.4.1 IEEE/ACM職業(yè)道德準則
1.4.2 軟件工程人員的職業(yè)道德建設
習題
第2章 軟件過程
2.1 軟件過程的概念
2.1.1 任務思維與過程思維
2.1.2 軟件過程的定義
2.1.3 軟件過程的基本活動
2.1.4 軟件過程的制品
2.2 軟件過程模型
2.2.1 瀑布模型
2.2.2 快速原型模型
2.2.3 增量模型
2.2.4 螺旋模型
2.2.5 形式化方法模型
2.2.6 基于組件的開發(fā)模型
2.3 案例:微軟公司的軟件開發(fā)過程
2.3.1 微軟公司的開發(fā)管理原則
2.3.2 微軟公司的軟件過程模型
2.3.3 遞進式的軟件開發(fā)策略
習題
第3章 軟件項目管理
3.1 軟件項目管理概述
3.1.1 軟件項目的特征
3.1.2 軟件項目管理的“4P”
3.1.3 軟件項目管理活動
3.2 人員組織與管理
3.2.1 軟件項目組織
3.2.2 案例:微軟公司的軟件開發(fā)組織
3.2.3 軟件團隊的建設
3.3 項目溝通管理
3.3.1 項目溝通復雜性
3.3.2 項目溝通方式
3.3.3 項目溝通活動
3.4 軟件項目規(guī)劃
3.4.1 軟件規(guī)模估算
3.4.2 軟件成本估算
3.4.3 軟件項目計劃
3.5 軟件風險管理
3.5.1 風險識別
3.5.2 風險分析
3.5.3 風險規(guī)劃
3.5.4 風險監(jiān)控
3.6 軟件配置管理
……
第4章 需求工程
第5章 軟件工程中的形式化方法
第6章 面向對象基礎
第7章 面向對象分析
第8章 面向對象設計
第9章 軟件實現
第10章 軟件測試
第11章 軟件演化
參考文獻
第1章 概述
軟件是人類思維創(chuàng)造的杰作,并成為人類現代生活的催化劑。今天,軟件遍布整個世界,在生物工程、現代通信、宇宙探索、商務處理、工業(yè)控制等方面發(fā)揮出巨大的威力,推動了商業(yè)、科學和工程領域的跨越式發(fā)展,對整個社會的經濟和文化產生了深遠的影響。
在計算機誕生的初期,軟件僅僅是計算機硬件的附屬品,其作用和成本微乎其微。如今,軟件以各種形式嵌入在越來越多的產品中,不僅成為影響系統(tǒng)功能和性能的關鍵因素,而且在整個系統(tǒng)的成本中占據著越來越大的比重。因此,如何以經濟有效的方法開發(fā)高質量的軟件是人們長期以來一直努力研究的主要問題。
軟件工程是為了解決開發(fā)成本效益和軟件質量的問題而產生的。從1968年NATO(North Atlantic Treaty Organization,北大西洋公約組織)會議首次提出“軟件工程”概念至今,雖然人們并沒有徹底解決軟件危機的問題,然而正是軟件工程的發(fā)展促使軟件取得了如此令人矚目的成就。三十多年以來,人們更好地認識了軟件開發(fā)過程,在軟件的需求、設計、實現、測試和維護等方面提出了許多有效的方法,新的開發(fā)方法和開發(fā)工具在大型復雜軟件系統(tǒng)的開發(fā)過程中起到了事半功倍的作用。如果沒有這些復雜的軟件,人們就不可能探索宇宙空間,也不可能擁有網絡和現代化的通信技術,更不可能揭開人類基因的奧秘。
當前,軟件工程仍然是一個正在迅速興起的年輕學科,尚未形成完整的理論知識體系,需要大量的理論研究和工程實踐。我們相信,隨著該學科的日益成熟,軟件工程必將對未來的軟件開發(fā)產生更大的推動力。
1.1 軟件
在軟件的發(fā)展過程中,軟件從個性化的程序演變?yōu)楣こ袒漠a品,人們對軟件的看法發(fā)生了根本性的變化!败浖=程序”顯然不能涵蓋軟件的完整內容,除了程序之外,軟件還包括與之相關的文檔和配置數據,以保證這些程序的正確運行。
《IEEE Standard Glossary of Software Engineering Terminology}給出了有關軟件的如下定義:
……