本書是普通高等教育“十二五”國家級規(guī)劃教材。本書對軟件設(shè)計以及軟件體系結(jié)構(gòu)的相關(guān)思想、理論與方法進行了系統(tǒng)的介紹,包括軟件設(shè)計與軟件體系結(jié)構(gòu)在軟件工程中的地位和作用、軟件設(shè)計的基本方法與原則、統(tǒng)一建模語言UML 2.0、面向?qū)ο蟮能浖O(shè)計方法、面向數(shù)據(jù)流的軟件設(shè)計方法、人機界面設(shè)計、軟件體系結(jié)構(gòu)風(fēng)格與設(shè)計模式、基于構(gòu)件的軟件體系結(jié)構(gòu)、軟件體系結(jié)構(gòu)評估、軟件設(shè)計的進化等內(nèi)容。本書包含了作者多年來在軟件開發(fā)實踐、軟件工程教學(xué)和科研活動中的認識與體會,并結(jié)合大量的案例分析,力求全書內(nèi)容與組織結(jié)構(gòu)的系統(tǒng)性、先進性、基礎(chǔ)性和實用性。本書可作為高等院校計算機科學(xué)與技術(shù)專業(yè)、軟件工程專業(yè)以及信息類相關(guān)專業(yè)的本科生和研究生教材,培養(yǎng)學(xué)生的軟件設(shè)計思維能力以及方法和技術(shù)的運用能力,同時也適用于開發(fā)人員和項目管理人員在軟件開發(fā)實踐中進行參考。
隨著計算機技術(shù)、微電子技術(shù)、網(wǎng)絡(luò)技術(shù)和多媒體技術(shù)的迅速發(fā)展和廣泛應(yīng)用,今天的社會進入了以計算機為核心的信息社會。軟件被認為是信息化的靈魂,已被用于政治、經(jīng)濟、文化、科技、教育、國防、生活等各個領(lǐng)域。隨著軟件在社會中的地位和作用越來越顯著,人們對軟件的質(zhì)量、成本和開發(fā)周期等方面提出的要求也越來越高。軟件工程強調(diào)以工程化思想和方法開發(fā)軟件,而軟件設(shè)計作為軟件開發(fā)過程中的核心活動之一,對開發(fā)出滿足需要的高質(zhì)量軟件起關(guān)鍵作用。軟件設(shè)計在軟件工程中所體現(xiàn)的重要性包括:軟件設(shè)計是對軟件需求的直接體現(xiàn);軟件設(shè)計為軟件實現(xiàn)提供直接依據(jù);軟件設(shè)計將綜合考慮軟件系統(tǒng)的各種約束條件并給出相應(yīng)方案;軟件設(shè)計的質(zhì)量很大程度上將決定最終軟件系統(tǒng)的質(zhì)量;及早發(fā)現(xiàn)軟件設(shè)計中存在的錯誤將極大地減少軟件修復(fù)和維護所需的成本;等等。在軟件工程的發(fā)展過程中,出現(xiàn)了大量與軟件設(shè)計相關(guān)的方法與技術(shù),而軟件體系結(jié)構(gòu)作為軟件設(shè)計過程中控制軟件復(fù)雜性、提高軟件系統(tǒng)質(zhì)量、支持軟件開發(fā)和復(fù)用的重要手段之一,自提出以來日益受到軟件研究者和實踐者的關(guān)注。
在當(dāng)前我國軟件產(chǎn)業(yè)的發(fā)展過程中,基礎(chǔ)扎實、知識全面、經(jīng)驗豐富的高水平軟件設(shè)計人員仍然非常缺乏,這成為我國軟件產(chǎn)業(yè)發(fā)展的制約因素。在當(dāng)前軟件工程專業(yè)方向的教育中,把軟件設(shè)計和軟件體系結(jié)構(gòu)相關(guān)理論與方法作為單獨一門課程進行系統(tǒng)地講述,對培養(yǎng)大量所需的高水平軟件設(shè)計人員至關(guān)重要。而在教育部高等學(xué)校計算機科學(xué)與技術(shù)教學(xué)指導(dǎo)委員會制定的《軟件工程專業(yè)規(guī)范》中,“軟件設(shè)計與體系結(jié)構(gòu)”已經(jīng)作為一門核心課程單獨列出,并有相應(yīng)的知識單元和知識點,但亟需相應(yīng)的教材以便于高等院校教學(xué)實施。針對以上背景和需求,本書對軟件設(shè)計以及軟件體系結(jié)構(gòu)的相關(guān)思想、理論與方法進行了系統(tǒng)的介紹,包括軟件設(shè)計與軟件體系結(jié)構(gòu)在軟件工程中的地位和作用、軟件設(shè)計的基本方法與原則、統(tǒng)一建模語言UML2.0、面向?qū)ο蟮能浖O(shè)計方法、面向數(shù)據(jù)流的軟件設(shè)計方法、人機界面設(shè)計、軟件體系結(jié)構(gòu)風(fēng)格與設(shè)計模式、基于構(gòu)件的軟件體系結(jié)構(gòu)、軟件體系結(jié)構(gòu)評估、軟件設(shè)計的進化等內(nèi)容。本書包含了作者多年來在軟件開發(fā)實踐、軟件工程教學(xué)和科研活動中的認識與體會,融入大量的案例分析,力求全書內(nèi)容與組織結(jié)構(gòu)的系統(tǒng)性、先進性、基礎(chǔ)性和實用性。
第1章 軟件工程與軟件設(shè)計
1.1 軟件工程
1.1.1 軟件概述
1.1.2 軟件危機
1.1.3 軟件工程的概念
1.1.4 軟件工程的目標與原則
1.2 軟件的生存周期
1.3 軟件開發(fā)過程模型
1.3.1 瀑布模型
1.3.2 快速原型模型
1.3.3 螺旋模型
1.3.4 統(tǒng)一軟件開發(fā)過程
1.4 軟件設(shè)計
1.4.1 軟件設(shè)計的重要性
1.4.2 軟件設(shè)計的特征
1.4.3 軟件設(shè)計的要素
1.4.4 軟件設(shè)計的知識體
1.5 軟件體系結(jié)構(gòu)
1.5.1 軟件體系結(jié)構(gòu)的定義
1.5.2 軟件體系結(jié)構(gòu)的發(fā)展歷程
1.5.3 軟件體系結(jié)構(gòu)的內(nèi)容
小結(jié)
習(xí)題1
參考文獻
第2章 統(tǒng)一建模語言UML
2.1 UML概述
2.1.1 UML的發(fā)展歷程
2.1.2 UML的特點和用途
2.1.3 UML2.0的建模機制
2.2 面向?qū)ο箝_發(fā)方法
2.2.1 基本概念
2.2.2 面向?qū)ο蠓椒ǖ膬?yōu)勢
2.3 UML2.0結(jié)構(gòu)建模
2.3.1 類圖
2.3.2 包圖
2.3.3 對象圖
2.3.4 構(gòu)件圖
2.3.5 組合結(jié)構(gòu)圖
2.3.6 部署圖
2.4 UML2.0行為建模
2.4.1 活動圖
2.4.2 順序圖
2.4.3 通信圖
2.4.4 交互概覽圖
2.4.5 時序圖
2.4.6 狀態(tài)圖
2.4.7 用例圖
小結(jié)
習(xí)題2
參考文獻
第3章 軟件設(shè)計基礎(chǔ)
3.1 軟件設(shè)計的基本概念
3.1.1 抽象與逐步求精
3.1.2 模塊化與信息隱藏
3.1.3 內(nèi)聚與耦合
3.2 軟件設(shè)計過程
3.2.1 軟件設(shè)計的一般過程
3.2.2 軟件設(shè)計的主要活動
3.3 軟件設(shè)計的質(zhì)量
3.4 軟件體系結(jié)構(gòu)設(shè)計
3.4.1 軟件體系結(jié)構(gòu)設(shè)計方法概述
3.4.2 軟件體系結(jié)構(gòu)設(shè)計的步驟
3.5 高可信軟件設(shè)計
3.5.1 可信軟件的特點
3.5.2 容錯設(shè)計
3.5.3 軟件失效模式和影響分析
3.5.4 軟件故障樹分析
3.5.5 形式化方法
3.5.6 凈室方法
3.5.7 嵌入式和實時軟件設(shè)計
3.6 軟件設(shè)計規(guī)格說明
3.7 軟件設(shè)計評審
小結(jié)
習(xí)題3
參考文獻
第4章 面向?qū)ο蟮能浖O(shè)計方法
4.1 基于UML的分析與設(shè)計過程
4.2 用例分析與設(shè)計
4.2.1 確定用例
4.2.2 生成用例圖
4.2.3 用例設(shè)計描述
4.3 概念模型與頂層架構(gòu)設(shè)計
4.3.1 概念模型設(shè)計
4.3.2 頂層架構(gòu)設(shè)計
4.4 用戶界面設(shè)計
4.5 數(shù)據(jù)模型設(shè)計
4.6 設(shè)計精化
4.6.1 精化軟件架構(gòu)
4.6.2 調(diào)整軟件構(gòu)成類
4.6.3 精化交互模型
4.6.4 精化類之間的關(guān)系
4.7 類設(shè)計
4.7.1 精化類的屬性與操作
4.7.2 類的行為模型設(shè)計
4.8 部署模型設(shè)計
小結(jié)
習(xí)題4
參考文獻
第5章 面向數(shù)據(jù)流的軟件設(shè)計方法
5.1 數(shù)據(jù)流圖與數(shù)據(jù)字典
5.2 實體關(guān)系圖
5.3 面向數(shù)據(jù)流的分析過程
5.3.1 建立數(shù)據(jù)流模型
5.3.2 過程規(guī)格說明
5.4 面向數(shù)據(jù)流的設(shè)計過程
5.4.1 變換流與事務(wù)流
5.4.2 變換分析
5.4.3 事務(wù)分析
5.5 啟發(fā)式設(shè)計策略
小結(jié)
習(xí)題5
參考文獻
第6章 用戶界面設(shè)計
6.1 界面設(shè)計的基本原則
6.2 設(shè)計良好界面的
主要途徑
……
第7章 軟件體系結(jié)構(gòu)風(fēng)格與設(shè)計模式
第8章 基于分布構(gòu)件的體系結(jié)構(gòu)
第9章 軟件體系結(jié)構(gòu)評估
第10章 軟件設(shè)計的進化