軟件工程與建模

出版時間:2010-8  出版社:西安交通大學出版社  作者:王長元,趙莉,王淑蓉 編著  頁數(shù):259  

前言

  21世紀是信息社會高速發(fā)展的時代,軟件作為信息技術(shù)的核心起著至關(guān)重要的作用。面對計算機日益廣泛的應用需求,研究如何更快、更好、更經(jīng)濟地開發(fā)出相應的軟件,是軟件開發(fā)技術(shù)及軟件工程師所面臨的問題。為擺脫軟件危機,軟件工程學從60年代末期開始迅速發(fā)展起來,現(xiàn)在已成為計算機科學技術(shù)的一個重要分支。20世紀90年代以來,軟件工程不僅從方法論的角度為管理人員和開發(fā)人員提供可見的結(jié)構(gòu)和有序的思考,而且大量成功軟件總結(jié)出的設(shè)計經(jīng)驗,使軟件開發(fā)人員可以充分利用設(shè)計模式、框架和組件等?! ≤浖こ淌歉叩葘W校計算機教學計劃中的一門核心課程,所涉及的范圍非常廣泛,其主要內(nèi)容包括支持軟件開發(fā)和維護的理論、方法、技術(shù)、標準等。這些內(nèi)容對軟件研制人員、軟件項目管理人員都是十分重要的。本書通過對基本概念、基本原理、基本技術(shù)、基本方法的講解,使讀者能很快運用軟件工程方法和技術(shù)開發(fā)軟件?! ∮捎谠O(shè)計面向?qū)ο筌浖容^困難,設(shè)計可復用的面向?qū)ο筌浖透щy。而設(shè)計模式可使人們更加方便地復用成功的設(shè)計和體系結(jié)構(gòu)。設(shè)計模式幫助設(shè)計者作出有利于系統(tǒng)復用的選擇,避免設(shè)計損害了系統(tǒng)復用性。鑒于此目的,在面向?qū)ο蟛糠?,我們編寫了一些重要的設(shè)計模式。  軟件系統(tǒng)的開發(fā)方法經(jīng)歷了面向過程的開發(fā)方法、面向?qū)ο蟮拈_發(fā)方法、基于組件的開發(fā)方法和面向服務架構(gòu)的開發(fā)方法。從軟件系統(tǒng)開發(fā)的方法可以看出抽象思維的重要性。其中抽象角度與抽象層次是軟件建模中的關(guān)鍵思想。軟件工程通過建模處理復雜性,即通過在任何特定的時間關(guān)注本質(zhì)細節(jié),而忽視次要方面等細節(jié)進行建模。在開發(fā)中,軟件工程師構(gòu)造許多系統(tǒng)和應用領(lǐng)域的不同模型。在本教材中,對軟件建模的要求與目的,建模的方法與建模應用進行了介紹。體現(xiàn)軟件工程是一個建模活動的主題思想?! ∪珪彩徽隆5?章是對軟件工程的概述,第2章到第7章按照傳統(tǒng)軟件生命周期的過程對可行性研究、需求分析、總體設(shè)計、詳細設(shè)計、編碼和測試技術(shù)進行了介紹,并在第4章增加了軟件體系結(jié)構(gòu)基礎(chǔ)的介紹,第8章到第9章是對面向?qū)ο蟾拍罴懊嫦驅(qū)ο蟮姆治龊驮O(shè)計的介紹,第10章介紹軟件系統(tǒng)建模,第11章介紹目前的建模標準一一UML技術(shù)。與同類軟件工程教材的區(qū)別在于本教材把軟件系統(tǒng)建模的原理與方法、軟件體系結(jié)構(gòu)、設(shè)計模式有機的引入教學過程中。

內(nèi)容概要

本書全面系統(tǒng)地講述了軟件工程的概述、可行性研究、需求工程、軟件體系結(jié)構(gòu)基礎(chǔ)、軟件設(shè)計、軟件編碼、軟件測試、面向?qū)ο蠹夹g(shù)、軟件系統(tǒng)建模、統(tǒng)一建模語言(UML)等內(nèi)容。與同類軟件工程教材的區(qū)別在于本教材把軟件系統(tǒng)建模的原理與方法、軟件體系結(jié)構(gòu)、設(shè)計模式有機地引入教學內(nèi)容過程中。    本書可作為高等院校“軟件工程”課程的教材或教學參考書,也可供有一定實踐經(jīng)驗的軟件工作人員和需要開發(fā)應用軟件的廣大計算機用戶閱讀參考

書籍目錄

前言第1章  軟件工程概述  1.1  軟件概論    1.1.1  軟件的發(fā)展歷史    1.1.2  軟件的概念和特點    1.1.3  軟件的分類    1.1.4  軟件危機  1.2  軟件工程與軟件過程    1.2.1  軟件工程的概念    1.2.2  軟件工程項目的基本目標    1.2.3  軟件工程學的原則    1.2.4  軟件過程與軟件生存周期    1.2.5  常見的軟件開發(fā)模型  小結(jié)  習題1第2章  可行性研究  2.1  可行性研究的任務  2.2  可行性研究的具體步驟  2.3  系統(tǒng)流程圖    2.3.1  系統(tǒng)流程圖的作用    2.3.2  系統(tǒng)流程圖的符號    2.3.3  系統(tǒng)流程圖的例子  2.4  成本/效益分析  小結(jié)  習題2第3章  需求工程  3.1  軟件需求    3.1.1  軟件需求的定義    3.1.2  需求的層次    3.1.3  需求錯誤的原因  3.2  需求工程    3.2.1  需求工程的內(nèi)容    3.2.2  需求獲取    3.2.3  需求分析    3.2.4  需求傳遞    3.2.5  需求驗證    3.2.6需求管理  3.3  分析建模    3.3.1  分析模型    3.3.2  數(shù)據(jù)字典    3.3.3  結(jié)構(gòu)化分析過程  3.4  軟件原型    3.4.1  原型的定義和作用    3.4.2  拋棄式原型和演化式原型    3.4.3  為何要采用原型法  小結(jié)  習題3第4章  軟件體系結(jié)構(gòu)基礎(chǔ)  4.1  軟件體系結(jié)構(gòu)的概念    4.1.1  構(gòu)件與軟件重用    4.1.2  什么是軟件體系結(jié)構(gòu)    4.1.3  軟件體系結(jié)構(gòu)設(shè)計原則    4.1.4  軟件體系結(jié)構(gòu)的現(xiàn)狀及發(fā)展方向  4.2  通用的軟件體系結(jié)構(gòu)    4.2.1  主機/終端結(jié)構(gòu)    4.2.2  兩層結(jié)構(gòu)——客戶/服務器體系結(jié)構(gòu)    4.2.3  瀏覽器/服務器結(jié)構(gòu)    4.2.4  三層C/S結(jié)構(gòu)    4.2.5  三層C/S結(jié)構(gòu)應用實例  小結(jié)  習題4第5章  軟件設(shè)計  5.1  軟件概要設(shè)計的基本任務  5.2  軟件設(shè)計的過程    5.2.1  軟件設(shè)計在開發(fā)階段的重要性    5.2.2  軟件設(shè)計的過程  5.3  軟件設(shè)計的原則  5.4  有效的模塊設(shè)計  5.5  結(jié)構(gòu)化設(shè)計方法(structured design,SD)    5.5.1  在系統(tǒng)結(jié)構(gòu)圖(SC)中的模塊    5.5.2  變換流與變換型系統(tǒng)結(jié)構(gòu)    5.5.3  事務型系統(tǒng)結(jié)構(gòu)圖    5.5.4  變換映射    5.5.5  事務映射    5.5.6  注意“黑箱”技術(shù)的使用  5.6  數(shù)據(jù)設(shè)計和文件設(shè)計    5.6.1  數(shù)據(jù)設(shè)計的原則    5.6.2  文件設(shè)計的過程  5.7  設(shè)計規(guī)格說明與設(shè)計評審  5.8  詳細設(shè)計    5.8.1  詳細設(shè)計的任務和原則    5.8.2  詳細設(shè)計的描述工具    5.8.3  程序復雜程度的定量度量    5.8.4  設(shè)計復審  小結(jié)  習題5第6章  編碼  6.1  程序設(shè)計語言    6.1.1  程序設(shè)計語言分類    6.1.2  程序設(shè)計語言的特點    6.1.3  程序設(shè)計語言的選擇  6.2  編碼風格    6.2.1  源程序文檔化    6.2.2  數(shù)據(jù)說明    6.2.3  語句構(gòu)造    6.2.4  輸入/輸出  6.3  程序效率    6.3.1  算法對效率的影響    6.3.2  影響存儲器效率的因素    6.3.3  影響輸入/輸出的因素  小結(jié)  習題6第7章  測試  7.1  測試的基本概念和原則    7.1.1  測試的必要性    7.1.2  測試的概念    7.1.3  測試的目的    7.1.4  測試復雜性    7.1.5  測試的基本原則  7.2  測試步驟    7.2.1  測試過程    7.2.2  測試的步驟  7.3  設(shè)計測試方案    7.3.1  白盒法測試的基本技術(shù)    7.3.2  黑盒法測試的基本技術(shù)  7.4  單元測試    7.4.1  單元測試的內(nèi)容    7.4.2  單元測試步驟  7.5  集成測試    7.5.1  非增式組裝測試    7.5.2  增式組裝測試  7.6  確認測試    7.6.1  測試內(nèi)容    7.6.2  測試步驟  7.7  自動測試工具    7.7.1  測試數(shù)據(jù)生成程序    7.7.2  靜態(tài)生成程序    7.7.3  動態(tài)分析程序    7.7.4  文件比較程序  7.8  軟件可靠性    7.8.1  基本概念    7.8.2  估算MTTF的方法  小結(jié)  習題7第8章  面向?qū)ο蠹夹g(shù)  8.1  面向?qū)ο蟮母拍?   8.1.1  對象    8.1.2  類    8.1.3  封裝    8.1.4  繼承    8.1.5  接口    8.1.6  消息    8.1.7  結(jié)構(gòu)與連接    8.1.8  多態(tài)性  8.2  面向?qū)ο蟾拍钆e例    8.2.1  靜態(tài)字段和方法    8.2.2  屬性    8.2.3  類中的繼承和重載    8.2.4  接口    8.2.5  委托  小結(jié)  習題8第9章  面向?qū)ο蠓治雠c設(shè)計  9.1  面向?qū)ο蠓治?OOA)    9.1.1  論域分析    9.1.2  應用分析  9.2  對象模型技術(shù)    9.2.1  對象模型    9.2.2  動態(tài)模型    9.2.3  功能模型  9.3  面向?qū)ο笤O(shè)計(OOD)    9.3.1  類設(shè)計的目標和方針    9.3.2  通過復用設(shè)計類  9.4  設(shè)計模式    9.4.1  設(shè)計模式概述    9.4.2  設(shè)計模式實例    9.4.3  如何使用設(shè)計模式  小結(jié)  習題9第10章  信息系統(tǒng)建模  10.1  建模方法論    10.1.1  建模與仿真的基本概念    10.1.2  建模過程    10.1.3  建模方法    10.1.4  建模步驟  10.2  傳統(tǒng)的軟件開發(fā)所面臨的問題    10.2.1  傳統(tǒng)軟件開發(fā)面臨軟件危機的問題    10.2.2  軟件系統(tǒng)開發(fā)的方法思想發(fā)展  10.3  軟件建模    10.3.1  軟件建模的要求與目的    10.3.2  傳統(tǒng)建模方法的局限性    10.3.3  軟件工程與建模的關(guān)系    10.3.4  建模要素  10.4  軟件建模應用    10.4.1  從現(xiàn)實世界到業(yè)務模型    10.4.2  從業(yè)務模型到概念模型    10.4.3  從概念模型到設(shè)計模型  小結(jié)  習題10第11章  統(tǒng)一建模語言(UML)  11.1  UML簡介    11.1.1  UML的產(chǎn)生和成長    11.1.2  UML的定義及目標  11.2  UML語言概述    11.2.1  視圖(views)    11.2.2  圖(diagram)    11.2.3  模型元素    11.2.4  通用機制    11.2.5  UML建模工具  11.3  用例建模    11.3.1  用例圖    11.3.2  參與者    11.3.3  用例  11.4  類與對象建模    11.4.1  類和對象    11.4.2  類圖和對象圖    11.4.3  關(guān)系    11.4.4  約束和派生(規(guī)則)    11.4.5  包    11.4.6如何確定類  11.5  動態(tài)建模    11.5.1  消息(massage)    11.5.2  狀態(tài)圖(state diagram)    11.5.3  順序圖(sequence diagram)    11.5.4  協(xié)作圖(collaboration diagram)    11.5.5  活動圖(activity diagram)  11.6  物理體系結(jié)構(gòu)建模    11.6.1  邏輯體系結(jié)構(gòu)    11.6.2  物理體系結(jié)構(gòu)    11.6.3  構(gòu)件圖    11.6.4  部署圖  11.7  使用UML的過程    11.7.1  軟件工程的過程概念    11.7.2  Rational的統(tǒng)一過程  小結(jié)  習題11參考文獻

章節(jié)摘錄

  1.早期階段  在計算機發(fā)展的早期階段,人們認為計算機的主要用途是快速計算,軟件編程簡單,不存在什么系統(tǒng)化的方法,開發(fā)過程沒有任何管理,程序的質(zhì)量完全依賴于程序員個人的技巧?! ?.第二階段  計算機軟件發(fā)展的第二階段跨越了從60年代中期到70年代末期的十余年,多用戶系統(tǒng)引入了人機交互的新概念,實時系統(tǒng)能夠從多個源收集、分析和轉(zhuǎn)換數(shù)據(jù),從而使得進程的控制和輸出的產(chǎn)生是以毫秒而不是分鐘來進行,在線存儲的發(fā)展產(chǎn)生了第一代數(shù)據(jù)庫管理系統(tǒng)。  在這個時期,出現(xiàn)了軟件產(chǎn)品和“軟件作坊”的概念,設(shè)計人員開發(fā)程序不再像早期階段那樣只為自己的研究工作需要,而是為了用戶更好地使用計算機,人們開始采用“軟件工程”的方法來解決“軟件危機”問題?! ?.第三階段  計算機軟件發(fā)展的第三階段始于20世紀70年代中期,分布式系統(tǒng)極大地提高了計算機系統(tǒng)的復雜性,網(wǎng)絡(luò)的發(fā)展對軟件開發(fā)提出了更高的要求,特別是微處理器的出現(xiàn)和廣泛應用,孕育了一系列的智能產(chǎn)品。軟件開發(fā)技術(shù)的度量問題受到重視,最著名的有軟件工作量估計COCOM0模型、軟件過程改進模型CMM等。  4.第四階段  計算機軟件發(fā)展的第四階段是強大的桌面系統(tǒng)和計算機網(wǎng)絡(luò)迅速發(fā)展的時期,計算機體系結(jié)構(gòu)由中央主機控制方式變?yōu)榭蛻魴C/服務器方式,專家系統(tǒng)和人工智能軟件終于走出實驗室進人了實際應用,虛擬現(xiàn)實和多媒體系統(tǒng)改變了與最終用戶的通訊方式,出現(xiàn)了并行計算和網(wǎng)絡(luò)計算的研究,面向?qū)ο蠹夹g(shù)在許多領(lǐng)域迅速取代了傳統(tǒng)軟件開發(fā)方法,人們現(xiàn)在又向高層次邁進,開始研究服務計算與云計算的關(guān)鍵技術(shù)和方法?! ≡谲浖陌l(fā)展過程中,軟件從個性化的程序變?yōu)楣こ袒漠a(chǎn)品,人們對軟件的看法發(fā)生了根本性的變化,從“軟件-程序”發(fā)展為“軟件-程序+數(shù)據(jù)+文檔”及軟件變服務。軟件的需求成為軟件發(fā)展的動力,軟件的開發(fā)從自給自足模式發(fā)展為可以在市場中流通以滿足廣大用戶的需要。軟件工作的考慮范圍也發(fā)生了很大變化,人們不再只顧及程序的編寫,而是涉及到軟件的整個生命周期。

圖書封面

評論、評分、閱讀與下載


    軟件工程與建模 PDF格式下載


用戶評論 (總計0條)

 
 

 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7