軟件設計和體系結(jié)構(gòu)(第2版)-微課視頻版(高等學校軟件工程專業(yè)系列教材)
定 價:69.8 元
叢書名:高等學校軟件工程專業(yè)系列教材
- 作者:秦航 編
- 出版時間:2021/2/1
- ISBN:9787302564294
- 出 版 社:清華大學出版社
- 中圖法分類:TP311.5
- 頁碼:361
- 紙張:膠版紙
- 版次:2
- 開本:16開
《軟件設計和體系結(jié)構(gòu)(第2版)-微課視頻版(高等學校軟件工程專業(yè)系列教材)》全面、系統(tǒng)地講述軟件設計和體系結(jié)構(gòu)的思想、理論和方法,并提供了來自業(yè)界新的內(nèi)容和進展。全書共14章,第1章為引言,第2章~第14章分別講述軟件模型和描述、軟件體系結(jié)構(gòu)建模和UML、軟件設計過程、軟件體系結(jié)構(gòu)風格、面向?qū)ο蠓椒、面向?shù)據(jù)流的設計方法、用戶界面、設計模式、Web服務體系結(jié)構(gòu)、基于分布構(gòu)件的體系結(jié)構(gòu)、軟件體系結(jié)構(gòu)評估、軟件設計的進化、云計算和大數(shù)據(jù)系統(tǒng)體系結(jié)構(gòu)等內(nèi)容。
該書條理清晰、語言流暢、通俗易懂,在內(nèi)容組織上力求自然合理、循序漸進,并提供了豐富的實例和實踐要點,更好地把握了軟件工程學科的特點,使讀者更容易理解所學的理論知識,掌握軟件設計和體系結(jié)構(gòu)的應用之道。
《軟件設計和體系結(jié)構(gòu)(第2版)-微課視頻版(高等學校軟件工程專業(yè)系列教材)》可作為高等學校軟件工程專業(yè)、計算機應用專業(yè)和相關專業(yè)的教材,也可作為其他各類軟件工程技術人員的參考書。
軟件正在改變?nèi)藗兊纳睢W鳛?1世紀偉大的工程實踐,軟件已經(jīng)滲透到當今社會生活的方方面面。人們的生活離不開軟件,大多數(shù)人每天早晨起床后的第一件事,很可能就是打開某個手機App。計算機C++語言的發(fā)明人Bjarne Stroustrup所謂“人類的文明運行于軟件之上”,就道盡了此間情景。軟件技術是新一輪制造業(yè)革命的核心競爭力,我們正進入一個軟件定義的時代,“軟件無處不在、軟件定義一切、軟件使能一切”正是這個時代的特征。
軟件中的程序取自工業(yè)工程?v觀歷史,程序起源于工廠的操作列表,軟件工程則類似于工業(yè)工程,對于工業(yè)工程師來說,程序就是一天工作的規(guī)劃和操作。以前,軟件工程師操縱計算機,使其正確工作并求解問題,當時軟件的核心是數(shù)據(jù)的組織和算法的實現(xiàn)。直到今天,越來越多的底層工作,如內(nèi)存管理、網(wǎng)絡通信等都已實現(xiàn)自動化,或者可以實現(xiàn)代碼重用。這樣,軟件工程師無須直面機器代碼,而是使用高級語言、集成工具,把更多思考留給軟件問題本身。軟件制造復雜多變,其難度遠超傳統(tǒng)工業(yè)工程。隨著軟件的功能越來越強、使用越來越方便、規(guī)模越來越大、復雜程度越來越高,現(xiàn)在構(gòu)建軟件系統(tǒng)注定比以前更加困難。
在解決上述復雜、困難的問題過程中,出現(xiàn)了軟件設計和體系結(jié)構(gòu)。復雜性是軟件開發(fā)過程中固有的特質(zhì),而軟件設計在于幫助軟件工程師駕馭這種復雜性。
作為軟件開發(fā)的核心活動之一,軟件設計對開發(fā)出滿足需求的高質(zhì)量軟件起著關鍵作用。軟件設計需要綜合考慮軟件系統(tǒng)的各種約束條件,并給出最優(yōu)方案。設計方法的快速發(fā)展和應用程序的大量部署,使得現(xiàn)有計算機系統(tǒng)內(nèi)部的代碼構(gòu)成差異很大。隨著應用軟件市場競爭越來越激烈,用戶需求交付越來越快、系統(tǒng)功能越來越多、性能要求越來越可靠,結(jié)果就有了復用現(xiàn)有系統(tǒng)代碼、代碼外包、采購商品化構(gòu)件進行系統(tǒng)集成。在這種大環(huán)境下,軟件工程師不能僅憑一種程序設計方法,按照設計書逐步進行開發(fā),而是要從閱讀、維護、遷移各種已有的系統(tǒng)和外包代碼開始進行程序設計。程序設計方法隱藏在不同來源的代碼中,軟件工程師需要理解、復用、改造這些代碼,并應全面了解各種方法的優(yōu)缺點。這中間不存在一種放之四海而皆準的程序設計方法,各種方法都有其長處和短處。例如,相對抽象和高級的方法,在提高開發(fā)效率的同時,往往會導致執(zhí)行效率的降低;相對低級和離硬件近的方法,盡管可能學習時間較短,但是適應面卻受到了限制。適合的才是最好的,軟件工程師需要根據(jù)自己的情況,選擇適合的程序設計方法。
軟件如同建筑物,軟件設計不能脫離實用價值。今天,“軟件架構(gòu)師”這個在軟件領域負責軟件設計、分析、處理來自不同涉眾、不同關注點和需求關系的職位,已經(jīng)被普遍認為是軟件開發(fā)團隊的核心。在軟件工程方法中,軟件需求與軟件設計之間存在著一道很難逾越的鴻溝,從而很難有效地將需求轉(zhuǎn)換為相應的設計,而軟件體系結(jié)構(gòu)的出現(xiàn),恰好在需求與設計之間架起一座“橋梁”,由此實現(xiàn)了軟件系統(tǒng)的需求向?qū)崿F(xiàn)的平坦過渡。軟件體系結(jié)構(gòu)是軟件架構(gòu)師洞見系統(tǒng)內(nèi)部結(jié)構(gòu)、規(guī)律、原則、邏輯的過程,并對軟件開發(fā)的各種外在因素、內(nèi)在動力、人本屬性進行集中關注和深入剖析。作為整體設計的刻畫,軟件體系結(jié)構(gòu)包括全局組織和控制結(jié)構(gòu),有關通信、同步、數(shù)據(jù)存取的協(xié)議,設計構(gòu)件功能定義和物理分布,設計方案的選擇、評估、實現(xiàn)等。軟件設計的成功,在于有一個健壯、優(yōu)雅、靈活、易維護的軟件體系結(jié)構(gòu)。圍繞著比“類”更大的粒度、更高的抽象,軟件體系結(jié)構(gòu)刻畫了系統(tǒng)的構(gòu)件組成、構(gòu)件的關聯(lián)結(jié)構(gòu)、構(gòu)件的交互行為,并給出軟件設計的動機,即其在功能目標、非功能目標、制約因素之間的權衡取舍。
智能制造業(yè)需要硬件、工藝、流程、知識的軟件化,進而實現(xiàn)軟件的平臺化。伴隨“軟件定義”的挑戰(zhàn),不得不說,軟件系統(tǒng)無處不在,需要設計出在應用形態(tài)上滿足新要求的軟件體系結(jié)構(gòu)來,這就是軟件給未來世界達成的目標,也是軟件架構(gòu)師的機遇所在。
本書由秦航任主編,第1章、第14章由秦航編寫,第2章由包小軍編寫,第3章、第9章由夏浩波編寫,第4章、第6章由邱林編寫,第5章、第7章、第11章由張健編寫,第8章、第10章由徐杏芳編寫,第12章、第13章由胡森森編寫,全書由秦航負責統(tǒng)稿,由王同喜任主審。借此機會,編者謹向為本書付出辛勤勞動和智慧的老師及全體同仁表示誠摯的謝意。
本書可作為高等院!败浖O計與體系結(jié)構(gòu)”課程的教材或教學參考書,也可供有一定實際經(jīng)驗的軟件工程人員和需要開發(fā)應用軟件的廣大計算機用戶閱讀參考。
由于作者水平有限,書中不當之處在所難免,敬請廣大讀者和專家提出寶貴意見,以幫助作者不斷地改進和完善。
第1章 引言
1.1 軟件
1.1.1 軟件本質(zhì)
1.1.2 軟件神話
1.2 軟件工程
1.2.1 工程師文化
1.2.2 軟件過程和工程實踐
1.2.3 網(wǎng)絡環(huán)境帶來的影響
1.3 軟件設計
1.3.1 從分析到設計
1.3.2 設計過程和設計質(zhì)量
1.3.3 軟件設計的基本原則
1.4 軟件體系結(jié)構(gòu)
1.4.1 軟件體系結(jié)構(gòu)概述
1.4.2 軟件體系結(jié)構(gòu)的內(nèi)容
1.4.3 設計階段的體系結(jié)構(gòu)
1.5 小結(jié)
1.6 思考題
第2章 軟件模型和描述
2.1 軟件模型概述
2.2 軟件模型的發(fā)展脈絡
2.3 軟件模型解析
2.3.1 功能模型
2.3.2 對象模型
2.3.3 組件模型
2.3.4 配置型組件模型
2.3.5 服務模型
2.3.6 抽象模型
2.4 軟件模型的深入認識
2.4.1 軟件體系結(jié)構(gòu)的描述
2.4.2 軟件體系結(jié)構(gòu)的設計
2.5 體系結(jié)構(gòu)描述語言
2.5.1 ADL簡介
2.5.2 典型ADL的比較
2.5.3 體系結(jié)構(gòu)行為的描述
2.6 小結(jié)
2.7 思考題
第3章 軟件體系結(jié)構(gòu)建模和UML
3.1 軟件體系結(jié)構(gòu)建模概述
3.2 基于軟件體系結(jié)構(gòu)的開發(fā)
3.3 UML概述
3.3.1 UML的發(fā)展歷程
3.3.2 UML的特點
3.3.3 UML 2.5分類
3.4 面向?qū)ο蟾攀?br>3.4.1 基本概念
3.4.2 面向?qū)ο蠓椒ǖ膬?yōu)勢
3.5 UML中的結(jié)構(gòu)建模
3.5.1 類圖
3.5.2 對象圖
3.5.3 構(gòu)件圖
3.5.4 部署圖
3.6 UML中的行為建模
3.6.1 用例圖
3.6.2 順序圖
3.6.3 通信圖
3.6.4 交互概覽圖
3.6.5 時序圖
3.6.6 狀態(tài)圖
3.6.7 活動圖
3.7 UML工具
3.8 小結(jié)
3.9 思考題
第4章 軟件設計過程
4.1 軟件設計基礎
4.2 軟件體系結(jié)構(gòu)設計方法
4.3 高可信軟件設計
……
第5章 軟件體系結(jié)構(gòu)風格
第6章 面向?qū)ο蠓椒?br>第7章 面向數(shù)據(jù)流的設計方法
第8章 用戶界面
第9章 設計模式
第10章 Web服務體系結(jié)構(gòu)
第11章 基于分布構(gòu)件的體系結(jié)構(gòu)
第12章 軟件體系結(jié)構(gòu)評估
第13章 軟件設計的進化
第14章 云計算和大數(shù)據(jù)系統(tǒng)體系結(jié)構(gòu)
參考文獻