計(jì)算機(jī)科學(xué)與技術(shù)學(xué)科研究生系列教材:高級(jí)軟件工程(中文版)
定 價(jià):39 元
叢書名:計(jì)算機(jī)科學(xué)與技術(shù)學(xué)科前沿叢書
- 作者:方木云 ,劉輝 著
- 出版時(shí)間:2011/6/1
- ISBN:9787302257202
- 出 版 社:清華大學(xué)出版社
- 中圖法分類:TP311.5
- 頁(yè)碼:391
- 紙張:膠版紙
- 版次:1
- 開本:16開
《計(jì)算機(jī)科學(xué)與技術(shù)學(xué)科研究生系列教材:高級(jí)軟件工程(中文版)》介紹:20世紀(jì)90年代中期以后軟件工程領(lǐng)域新的理論和技術(shù),圍繞如何提高軟件的生產(chǎn)效率和質(zhì)量來(lái)選取和組織材料。前11章為理論部分,內(nèi)容包括軟件體系結(jié)構(gòu)、中間件技術(shù)、在線演化技術(shù)、網(wǎng)構(gòu)軟件、仿生學(xué)、面向Agent的軟件工程、面向服務(wù)架構(gòu)技術(shù)、柔性工作流、統(tǒng)一建模語(yǔ)言、云計(jì)算;后6章為實(shí)驗(yàn)部分,內(nèi)容包括用VB實(shí)現(xiàn)的UDP通信、WindowsAPI函數(shù)、端口的禁用、用VB寫DLL文件、用VB寫OCX控件以及COM、COM+和DCOM。
《計(jì)算機(jī)科學(xué)與技術(shù)學(xué)科研究生系列教材:高級(jí)軟件工程(中文版)》可作為高校研究生的教材,也可以作為教師和廣大高級(jí)編程人員的參考書。
隨著軟件工程技術(shù)的發(fā)展,軟件的形態(tài)、規(guī)模、方法、架構(gòu)、工具和環(huán)境等都在變化。由于Internet的普及,人們了解和掌握國(guó)內(nèi)外新技術(shù)越來(lái)越容易?墒亲鳛閷W(xué)生,系統(tǒng)地獲取知識(shí)的軟件工程教材并沒有跟上軟件工程技術(shù)發(fā)展的步伐,導(dǎo)致培養(yǎng)出來(lái)的學(xué)生不能很快地適應(yīng)社會(huì)的需要。
國(guó)內(nèi)本科生的軟件工程教材仍然以瀑布型模型的生命周期為主線來(lái)組織,大部分教材的內(nèi)容只跟進(jìn)到20世紀(jì)90年代的面向?qū)ο箝_發(fā)方法,新的內(nèi)容如軟件體系結(jié)構(gòu)、中間件、SOA、網(wǎng)構(gòu)軟件、面向Agent的軟件工程和云計(jì)算等都沒有涉及,使得軟件工程的教學(xué)內(nèi)容與當(dāng)今主流技術(shù)之間的脫節(jié)越來(lái)越大。
國(guó)內(nèi)研究生的軟件工程教材幾乎是一片空白,不少高校沿用本科階段的教材,或是各自做些零散的PPT講稿,這種現(xiàn)狀可能與我國(guó)研究生教育相對(duì)寬松的要求有關(guān)。隨著高校研究生數(shù)量的不斷增多,教學(xué)質(zhì)量要求越來(lái)越高,教材用量在不斷增長(zhǎng),我們深感有必要整理一本合適的教材,以便把最新的成果較為系統(tǒng)地傳授給學(xué)生。編寫本書的目的之一是拋磚引玉,希望以后有更多優(yōu)秀的軟件工程教材涌現(xiàn)出來(lái)。
軟件工程是指導(dǎo)計(jì)算機(jī)軟件開發(fā)和維護(hù)的工程學(xué)科,研究如何提高軟件生產(chǎn)效率和質(zhì)量是該學(xué)科的核心問(wèn)題。開發(fā)和維護(hù)或者說(shuō)構(gòu)造和演化是軟件工程活動(dòng)的兩個(gè)重要環(huán)節(jié)。要提高生產(chǎn)效率必須減少開發(fā)和維護(hù)的工作量,縮短開發(fā)和維護(hù)的時(shí)間。要提高軟件的質(zhì)量必須構(gòu)造良好的體系結(jié)構(gòu)和復(fù)用以往成熟的部分。
軟件復(fù)用一直是軟件工程界所追求的夢(mèng)想,復(fù)用技術(shù)是提高軟件生產(chǎn)效率和質(zhì)量的重要途徑之一。
軟件體系結(jié)構(gòu)可幫助解決軟件復(fù)用所遇到的障礙,對(duì)系統(tǒng)部件約束最小的地方復(fù)用性最大,而作為系統(tǒng)早期設(shè)計(jì)的體系結(jié)構(gòu)對(duì)部件的約束最小,因此,基于軟件體系結(jié)構(gòu)的復(fù)用為軟件復(fù)用開拓了一條新的道路,使軟件復(fù)用從代碼復(fù)用發(fā)展到設(shè)計(jì)復(fù)用和過(guò)程復(fù)用,實(shí)現(xiàn)多層次的軟件復(fù)用。軟件體系結(jié)構(gòu)研究的最大貢獻(xiàn)在于對(duì)軟件生產(chǎn)率的提高和維護(hù)的簡(jiǎn)化。
在中間件產(chǎn)生以前,應(yīng)用軟件直接利用操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議和數(shù)據(jù)庫(kù)等開發(fā),這些都是計(jì)算機(jī)最底層的東西,越底層越復(fù)雜,開發(fā)者不得不面臨許多很棘手的問(wèn)題,如操作系統(tǒng)的多樣性、網(wǎng)絡(luò)環(huán)境的復(fù)雜多變性、網(wǎng)絡(luò)程序設(shè)計(jì)的繁雜性、數(shù)據(jù)分散處理的不一致性以及程序的性能、效率和安全等問(wèn)題。這些與用戶的業(yè)務(wù)沒有直接關(guān)系,但又必須解決,耗費(fèi)了開發(fā)者大量寶貴的時(shí)間和精力。能不能將應(yīng)用軟件所要面臨的共性問(wèn)題進(jìn)行提煉和抽象,在操作系統(tǒng)之上再形成一個(gè)可復(fù)用的部分,供成千上萬(wàn)的應(yīng)用軟件重復(fù)使用?這就是中間件技術(shù)。中間件技術(shù)使軟件復(fù)用了網(wǎng)絡(luò)和系統(tǒng)軟件之上、應(yīng)用系統(tǒng)之下的廣袤疆域,為應(yīng)用軟件提供了應(yīng)用支撐平臺(tái)。
概括來(lái)說(shuō),面向?qū)ο蠹夹g(shù)通過(guò)類的封裝,在同種編程語(yǔ)言中實(shí)現(xiàn)了代碼級(jí)別的復(fù)用;構(gòu)件技術(shù)在二進(jìn)制級(jí)別共享,使復(fù)用跨越了編程語(yǔ)言的限制;SOA利用Web Service等技術(shù),使復(fù)用跨越了操作系統(tǒng)平臺(tái)的限制;軟件體系結(jié)構(gòu)使復(fù)用擴(kuò)展到軟件生命周期的各個(gè)階段;中間件技術(shù)使應(yīng)用軟件的開發(fā)者復(fù)用了底層的大量技術(shù)?梢娷浖䦶(fù)用的粒度和范圍在不斷擴(kuò)大。
前言高級(jí)軟件工程軟件自動(dòng)化是軟件工程界所追求的又一個(gè)夢(mèng)想,CASE技術(shù)是為實(shí)現(xiàn)軟件自動(dòng)化作支撐的工具。CASE作為計(jì)算機(jī)軟件工程的一種技術(shù)和環(huán)境,其目的是通過(guò)統(tǒng)一的數(shù)據(jù)操縱手段和方法,從多個(gè)角度和多個(gè)階段輔助軟件開發(fā)人員。CASE是集成化的軟件開發(fā)環(huán)境,覆蓋軟件生命周期的各個(gè)階段。一般來(lái)講,CASE工具包括需求分析工具、軟件設(shè)計(jì)工具、軟件測(cè)試工具、軟件文檔編制與生成工具、逆向工程工具等。CASE技術(shù)也是提高軟件生產(chǎn)效率和質(zhì)量的重要途徑之一。
智能化是軟件自動(dòng)化的重要提升,軟件具有自適應(yīng)的能力,必然會(huì)減少維護(hù)的工作量。Agent系統(tǒng)和多Agent系統(tǒng)已經(jīng)成為一種應(yīng)對(duì)各種復(fù)雜IT情景的強(qiáng)大技術(shù)。Agent是自治的應(yīng)用組件,反映了現(xiàn)代分布式系統(tǒng)內(nèi)在的分散性,并且可視為系統(tǒng)被不同的利益相關(guān)者所擁有,在模塊化和封裝概念上進(jìn)行了自然延伸;Agent運(yùn)行和交互所采取的靈活方式適應(yīng)于現(xiàn)代軟件在動(dòng)態(tài)和不可預(yù)知的情況下運(yùn)行;Agent的概念為人工智能的成果提供了一個(gè)統(tǒng)一的觀點(diǎn),通過(guò)使用Agent和多Agent作為存放智能行為的、可靠的和易管理的知識(shí)庫(kù),從而利用人工智能的成果解決現(xiàn)實(shí)世界中的問(wèn)題。網(wǎng)構(gòu)軟件具有自主性、協(xié)同性、反應(yīng)性、演化性和多態(tài)性等特征,是基于開放的Internet計(jì)算平臺(tái)而提出的一種新的軟件形態(tài)。Agent技術(shù)和網(wǎng)構(gòu)軟件都是從仿生學(xué)的角度來(lái)研究軟件開發(fā)技術(shù),也是提高軟件生產(chǎn)效率和質(zhì)量的重要途徑之一。
零維護(hù)是軟件工程界所追求的另一個(gè)夢(mèng)想,維護(hù)是軟件生命周期中最耗時(shí)的一個(gè)階段,如何降低維護(hù)成本一直是一個(gè)重要課題。在線演化技術(shù)在許多重要的應(yīng)用領(lǐng)域中(如醫(yī)療、金融、電力、電信、銀行及空中交通管制等)對(duì)于系統(tǒng)的持續(xù)可用性是一個(gè)關(guān)鍵性的要求,運(yùn)行時(shí)刻的系統(tǒng)演化可減少因關(guān)機(jī)和重啟帶來(lái)的損失和風(fēng)險(xiǎn)。柔性工作流是工作流技術(shù)研究領(lǐng)域中的一個(gè)重點(diǎn),“柔性”概念是針對(duì)系統(tǒng)在模型定義和執(zhí)行中所表現(xiàn)出來(lái)的僵化和死板而提出的。簡(jiǎn)單來(lái)說(shuō),系統(tǒng)的柔性就是指系統(tǒng)適應(yīng)新情況、新環(huán)境、新任務(wù)的能力;具體來(lái)說(shuō),是指系統(tǒng)在其所處的環(huán)境、條件或者過(guò)程狀態(tài)發(fā)生改變時(shí),是否能夠快速響應(yīng)和跟隨變化的能力。因此,在線演化技術(shù)和柔性工作流技術(shù)是減少維護(hù)的兩個(gè)重要途徑。
云計(jì)算是現(xiàn)代軟件工程思想和技術(shù)大規(guī)模應(yīng)用的結(jié)果。云計(jì)算通過(guò)虛擬化技術(shù)將資源進(jìn)行整合而形成龐大的計(jì)算與存儲(chǔ)網(wǎng)絡(luò),用戶只需要一臺(tái)接入網(wǎng)絡(luò)的終端就能夠以相對(duì)低廉的價(jià)格獲得所需的資源和服務(wù)而無(wú)須考慮其來(lái)源。云計(jì)算實(shí)現(xiàn)了資源和計(jì)算能力的分布式共享,能夠很好地應(yīng)對(duì)當(dāng)前互聯(lián)網(wǎng)數(shù)據(jù)量高速增長(zhǎng)的勢(shì)頭。
構(gòu)件技術(shù)是受大工業(yè)生產(chǎn)的啟發(fā)而產(chǎn)生的,是軟件技術(shù)跨世紀(jì)的一個(gè)發(fā)展趨勢(shì),其目的是徹底改變軟件生產(chǎn)方式,從根本上提高軟件生產(chǎn)的效率和質(zhì)量,提高開發(fā)大型軟件系統(tǒng)尤其是商用系統(tǒng)的成功率。構(gòu)件是現(xiàn)代軟件工程的基礎(chǔ)概念,是構(gòu)造軟件的“細(xì)胞”,本書第1~11章的所有理論和技術(shù)都是以構(gòu)件為基礎(chǔ),第12~17章的6個(gè)實(shí)驗(yàn)中有4個(gè)是關(guān)于構(gòu)件技術(shù),有兩個(gè)雖然是關(guān)于網(wǎng)絡(luò)通信的編程,但仍然是以構(gòu)件技術(shù)為支撐的。
本書出版的另一個(gè)目的是將軟件工程的新技術(shù)成果以教材內(nèi)容的形式傳授給高校研究生,為他們今后的學(xué)習(xí)和工作奠定扎實(shí)的基礎(chǔ),因此撰寫過(guò)程中直接或間接地引用了許多專家和學(xué)者的文獻(xiàn),作者向他們深表謝意。
在本書的撰寫過(guò)程中,杭婷婷參與了第1、3、5、6、12、13章的編寫,吳愛清參與了第2、3、11、14、15章的編寫,侯海金參與了第2、7、15、16、17章的編寫,謝啟宇參與了第12、14、16、17章的編寫,李申莉編寫了第4章,秦飛編寫了第8章,劉明編寫了第9章,黃明星編寫了第10章,蘇昌亞、姚佳岷等同學(xué)協(xié)助了書稿的整理,劉輝參編了第11章和審核了部分章節(jié),方木云組織編寫和審核了全書。中國(guó)科學(xué)技術(shù)大學(xué)的趙保華和屈玉貴兩位教授對(duì)本書提出了許多寶貴的建議,在此表示感謝。
在本書的編寫過(guò)程中,內(nèi)容反復(fù)斟酌,力求完美。但是限于作者的水平,書中必有許多不完善的地方,懇請(qǐng)讀者批評(píng)指正。
作 者2011年5月
理論篇
第1章 軟件工程新技術(shù)
1.1 新的構(gòu)建技術(shù)
1.2 新的軟件形態(tài)
1.3 新的開發(fā)工具
1.4 大規(guī)模的應(yīng)用
第2章 軟件體系結(jié)構(gòu)
2.1 軟件體系結(jié)構(gòu)的形成
2.1.1 無(wú)體系結(jié)構(gòu)階段
2.1.2 萌芽階段
2.1.3 初級(jí)階段
2.1.4 高級(jí)階段
2.2 軟件體系結(jié)構(gòu)的概念
2.3 軟件體系結(jié)構(gòu)的要素
2.3.1 構(gòu)件
2.3.2 連接件
2.3.3 約束
2.4 軟件體系結(jié)構(gòu)的作用
2.5 軟件體系結(jié)構(gòu)描述語(yǔ)言
2.5.1 ACME
2.5.2 Wright
2.5.3 C2
2.5.4 UniCon
2.5.5 其他比較有影響的ADL
2.5.6 ADL分類與比較框架
2.5.7 ADL之間的比較
2.6 軟件體系結(jié)構(gòu)描述方法
2.7 軟件體系結(jié)構(gòu)風(fēng)格
2.7.1 軟件體系結(jié)構(gòu)風(fēng)格的概念
2.7.2 軟件體系結(jié)構(gòu)風(fēng)格的研究?jī)?nèi)容
2.7.3 幾種常見的軟件體系結(jié)構(gòu)風(fēng)格
2.7.4 新的軟件體系結(jié)構(gòu)風(fēng)格的提出
2.7.5 討論軟件體系結(jié)構(gòu)風(fēng)格時(shí)常見的問(wèn)題
2.8 軟件體系結(jié)構(gòu)評(píng)估
2.8.1 軟件體系結(jié)構(gòu)評(píng)估的目的
2.8.2 軟件體系結(jié)構(gòu)評(píng)估的方法與工具
2.8.3 軟件體系結(jié)構(gòu)評(píng)估存在的問(wèn)題
2.9 基于體系結(jié)構(gòu)的軟件開發(fā)過(guò)程
2.10 Windows體系結(jié)構(gòu)介紹
2.10.1 Windows系統(tǒng)的發(fā)展歷史
2.10.2 Windows系統(tǒng)的描述語(yǔ)言
2.10.3 Windows NT體系結(jié)構(gòu)簡(jiǎn)介
思考題
第3章 中間件技術(shù)
3.1 中間件技術(shù)的形成
3.2 中間件的基本概念
3.2.1 中間件的定義
3.2.2 中間件的分類
3.2.3 中間件的新類型
3.2.4 中間件的作用
3.2.5 中間件面臨的問(wèn)題
3.3 典型中間件
3.3.1 消息中間件
3.3.2 交易中間件
3.3.3 對(duì)象中間件
3.3.4 應(yīng)用服務(wù)器
3.3.5 安全中間件
3.4 基于中間件的應(yīng)用開發(fā)
3.4.1 中間件基礎(chǔ)技術(shù)
3.4.2 基于中間件的軟件開發(fā)過(guò)程
3.5 中間件的現(xiàn)狀
3.6 中間件的發(fā)展趨勢(shì)
思考題
……
實(shí)驗(yàn)篇
參考文獻(xiàn)