關于我們
書單推薦
新書推薦
|
軟件工程
本書是在《軟件工程》(第3版) 的基礎上, 根據(jù)使用該教材的教師和讀者的意見, 對原書內(nèi)容上做了很多調(diào)整和修改。增強了方法論。針對軟件工程的基本理論、可行性研究、軟件需求分析、總體設計、詳細設計、面向?qū)ο蠓治雠c設計、接口設計、軟件實現(xiàn)、軟件質(zhì)量、軟件測試、軟件維護、軟件項目管理與計劃等知識進行了嚴格的論述, 實例配合解釋概念。同時每章都配有習題。
1. 本書針對軟件工程的基本理論、可行性研究、軟件需求分析、總體設計、詳細設計、面向?qū)ο蠓治雠c設計、接口設計、軟件實現(xiàn)、軟件質(zhì)量、軟件測試、軟件維護、軟件項目管理與計劃等知識進行嚴格論述,以實例配合解釋概念。配有豐富習題。
2. 本書與《軟件工程習題解答(第4版)》(ISBN9787302473350)和《軟件工程實踐與課程設計》(ISBN9787302478676)配套使用,學習效果*佳。
1. 寫作背景
在計算機軟件開發(fā)的工程科學技術中,軟件工程的概念、原理、技術與方法已成為計算機科學與技術范疇的一項重要內(nèi)容,在計算機科學技術領域占據(jù)無可爭議的主流地位。作為軟件技術人員,接受軟件工程的概念并不難,但是要真正理解、掌握和運用這門先進的技術并完整地進行系統(tǒng)開發(fā),是有一定難度的。鑒于此,編者編寫了這本關于軟件工程系統(tǒng)分析、設計和實施的教材,以使更多同行受益。
幾年前,編者編寫的《軟件工程(第3版)》備受老師和其他讀者歡迎。這本書對于應用型本科學校的讀者而言,有些內(nèi)容顯得深了些。為更好地反映最近幾年軟件工程領域的發(fā)展現(xiàn)狀,編者根據(jù)普通高等教育“十二五”國家級規(guī)劃教材的指導精神,總結(jié)近年來教學和科研的經(jīng)驗,在第3版基礎上進行了調(diào)整和增刪,形成了這本第4版教材。為了方便學校教學,編者還編寫了配套的《軟件工程習題解答(第4版)》(ISBN 9787302473336)和《軟件工程實踐與課程設計》(ISBN 9787302478676)。
2. 本書結(jié)構(gòu)
本書由以下四部分組成:
第一部分基礎理論,包括第1~3章。
第二部分結(jié)構(gòu)化方法,包括第4~6章。
第三部分面向?qū)ο蠓椒ㄅc實現(xiàn),包括第7~11章。
第四部分質(zhì)量與工程管理,包括第12~15章。
3. 本書特點
本書對有用的概念都進行了嚴格的論述,每一個概念都有相應的例子解釋,同時每章都配有習題。此外,編者還編寫了與本書配套的《軟件工程習題解答(第4版)》和《軟件工程實踐與課程設計》,幫助讀者鞏固所學知識。
4. 適用范圍
軟件工程是軟件系統(tǒng)開發(fā)課程的教科書,適合作為軟件工程方面課程的教材,也可作為相關工程技術人員的參考用書。
在選修本課程之前,讀者應該具有計算機的基礎知識,掌握數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫技術。另外,如果具有算法語言的編程經(jīng)驗,會有助于深入理解系統(tǒng)開發(fā)過程。
5. 編寫方法
本書是編者根據(jù)近20年來對軟件工程學、面向?qū)ο蠓椒ǖ鹊慕虒W與研究,以及編者負責或參與幾十項軟件開發(fā)項目的實踐經(jīng)驗,并結(jié)合軟件開發(fā)新技術編寫而成的。根據(jù)編者的教學經(jīng)驗,讀者學習一門新技術的時候,教材是非常重要的。因此,編者在修訂的時候,對于部分章節(jié)和內(nèi)容進行了更新和修改,以便讀者更好地學習與掌握相關知識。
6. 如何使用本書
根據(jù)實際情況,在教授時建議安排54~60學時。教師可以按照自己的風格和喜好刪減章節(jié),也可以根據(jù)教學目標靈活調(diào)整章節(jié)順序。
第1章緒論(2學時)
第2章基本理論(2學時)
第3章可行性研究(2學時)
第4章需求分析(4學時)
第5章總體設計(4學時)
第6章軟件詳細設計(4學時)
第7章面向?qū)ο蠓治?4學時)
第8章面向?qū)ο笤O計(2學時)
第9章用戶界面設計(2/4學時)
第10章數(shù)據(jù)庫及其接口設計(2學時)
第11章軟件實現(xiàn)(2學時)
第12章軟件質(zhì)量(2學時)
第13章軟件測試(2學時)
第14章軟件維護(2學時)
第15章軟件項目管理與計劃(2學時)
本書的編寫過程中,受到廣東理工學院李代平負責的廣東省級重點學科建設課題——一級學科“計算機科學與技術”項目的支持。信息工程系胡致杰、賴小平、劉建友和張俊林參加了資料的收集與整理工作。由于軟件工程的知識面廣,書中不可能面面俱到,加上時間倉促,作者水平有限,書中的不足之處在所難免,懇請讀者批評指正。
編者
2017年5月于振華樓
第3版前言
1. 寫作背景
軟件工程是指導計算機軟件開發(fā)的工程科學技術。軟件工程的概念、原理、技術與方法已成為計算機科學與技術范疇的一項重要內(nèi)容。用軟件工程的思想進行軟件設計與開發(fā)的先進性眾所周知,它在計算機科學技術領域占據(jù)無可爭議的主流地位。作為軟件技術人員,接受軟件工程的概念并不難,但是要真正理解、掌握和運用這門先進的技術并完整地進行系統(tǒng)開發(fā),是有一定難度的。鑒于此,編者編寫了這本關于軟件工程系統(tǒng)分析、設計和實施的教材,以使更多同行受益。
幾年前,編者編寫的《軟件工程(第2版)》備受老師和讀者歡迎。為更好地反映最近幾年軟件工程領域的發(fā)展現(xiàn)狀,編者根據(jù)普通高等教育“十二五”國家級規(guī)劃教材的指導精神,總結(jié)近年來教學和科研的經(jīng)驗,在第2版基礎上做了調(diào)整和增刪,形成了這本教材。主要從下述4個方面進行了精心修改; 刪掉了一些較陳舊或較次要的內(nèi)容; 增加了一些較新穎或較重要的內(nèi)容; 用UML的概念與符號重新改定了有關面向?qū)ο蠓椒▽W的內(nèi)容; 結(jié)構(gòu)上也進行了必要的調(diào)整。
2. 本書結(jié)構(gòu)
本書由以下四部分組成:
第一部分基礎理論,包括第1~3章。
第二部分結(jié)構(gòu)化方法,包括第4~6章。
第三部分面向?qū)ο蠓椒ㄅc實現(xiàn),包括第7~16章。
第四部分質(zhì)量與工程管理,包括第17~20章。
3. 本書特點
本書對各章的概念都進行了嚴格的論述,每一個概念都有相應的例子解釋,同時各章都配有習題。編者還編寫了與本書配套的《軟件工程習題與解答》,幫助讀者鞏固所學知識。
4. 適用范圍
軟件工程是軟件系統(tǒng)開發(fā)課程的教科書,適合開設有軟件工程課程的大學高年級和低年級研究生作為教材,也可作為工程技術人員的參考用書。
在選修本課程之前,讀者應該具有計算機的基礎知識,掌握數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫技術。另外,如果具有算法語言的編程經(jīng)驗,會有助于深入理解系統(tǒng)開發(fā)過程。
5. 編寫方法
本書是編者根據(jù)近10年來對軟件工程學、面向?qū)ο蠓椒ǖ鹊慕虒W與研究,以及編者負責或參與幾十項軟件開發(fā)項目的實踐經(jīng)驗,并結(jié)合軟件開發(fā)新技術編寫而成。根據(jù)編者的教學經(jīng)驗,讀者學習一門新技術的時候,教材是非常重要的。因此,編者在修訂的時候,對于部分章節(jié)和內(nèi)容做了更新和修改。
6. 如何使用本書
根據(jù)實際情況,在教授時建議安排54~60學時。教師可以按照自己的風格和喜好刪除章節(jié),也可以根據(jù)教學目標靈活調(diào)整章節(jié)順序。另外,前面帶“*”的部分為選學內(nèi)容。
第1章緒論(2學時)
第2章基本理論(2學時)
第3章可行性研究(2學時)
第4章需求分析與*體系結(jié)構(gòu)(4學時)
第5章總體設計(4學時)
第6章軟件詳細設計(4學時)
第7章面向?qū)ο蠓椒ǜ耪摚?學時)
第8章模型(2學時)
第9章對象分析(4學時)
第10章關系分析(4學時)
第11章控制驅(qū)動部分的設計(4學時)
第12章問題域部分設計(4學時)
第13章用戶界面設計(2/4學時)
第14章數(shù)據(jù)庫及其接口設計(2學時)
第15章*形式化方法(0/4學時)
第16章軟件實現(xiàn)(2學時)
第17章軟件質(zhì)量(2學時)
第18章軟件測試(2學時)
第19章軟件維護(2學時)
第20章軟件項目管理與計劃(2學時)
編者
2011年1月于廣州小谷圍島
第2版前言
1. 本書背景
本書是根據(jù)普通高等教育“十一五”國家級規(guī)劃教材的指導精神而編寫的。出版后我們在教學的使用過程中,覺得有許多地方不是很理想,因此,我們根據(jù)使用該教材的教師和讀者的意見,對原書在結(jié)構(gòu)和內(nèi)容上做了很大的調(diào)整和修改。
隨著科學技術的進步,軟件的理論與開發(fā)方法不斷涌現(xiàn)。軟件工程是指導計算機軟件開發(fā)的工程科學技術。軟件工程的概念、原理、技術與方法已成為計算機科學與技術的一項重要內(nèi)容。
用軟件工程進行軟件設計與開發(fā)的先進性是眾所周知的,它在計算機科學技術領域占據(jù)了無可爭議的主流地位。作為軟件技術人員,接受軟件工程的概念并不難,但是要真正理解、掌握和運用這門先進的技術并完整地進行系統(tǒng)開發(fā),是有一定難度的。鑒于此我們編寫了本書,目的是向讀者提供一本關于軟件工程系統(tǒng)分析、設計和實施的教科書,以使更多同行受益。
2. 本書結(jié)構(gòu)
本書由四部分組成:
第一部分基礎理論,包括第1~3章。
第二部分結(jié)構(gòu)化方法,包括第4~6章。
第三部分面向?qū)ο蠓椒ㄅc實現(xiàn),包括第7~15章。
第四部分質(zhì)量與工程管理,包括第16~19章。
3. 本書特點
本書對每章的概念都進行了嚴格的論述,每一個概念都有相應的例子解釋,同時每章都配有習題,使讀者鞏固所學知識。
4. 適用范圍
軟件工程是軟件系統(tǒng)開發(fā)課程的教科書。講授時間一般為40~60學時。本書適合開設有軟件工程課程的大學高年級本科生和低年級研究生作教材,也可作為工程技術人員的參考用書。
在選修本課程之前,讀者應該具有計算機的基礎知識,掌握數(shù)據(jù)結(jié)構(gòu)和數(shù)據(jù)庫技術。同時具有可視化類語言的編程經(jīng)驗,會有助于深入理解系統(tǒng)開發(fā)過程。
5. 編寫方法
本書是作者根據(jù)近10年來對軟件工程學、面向?qū)ο蠓椒ǖ鹊慕虒W與研究,以及作者領導或參與的20項軟件項目開發(fā)的實際應用經(jīng)驗,并結(jié)合軟件開發(fā)新技術編寫而成。根據(jù)過去的教學經(jīng)驗,讀者學習一門新技術,教材是非常重要的。因此,在修訂的時候,對于部分章節(jié)和內(nèi)容做了調(diào)整和修改。
6. 如何使用本書
根據(jù)讀者的實際情況,教師在教授本書時,建議一般在54~60學時。可以按照自己的風格和喜好刪除章節(jié),也可以根據(jù)教學目標靈活調(diào)整章節(jié)順序。另外,前面帶“*”為選學內(nèi)容。
第1章緒論(1學時)
第2章基本理論(2學時)
第3章可行性研究(2學時)
第4章軟件需求分析(4學時)
第5章總體設計(4學時)
第6章軟件詳細設計(4學時)
第7章面向?qū)ο蠓椒ǜ耪?4學時)
第8章模型(2學時)
第9章對象分析(4/6學時)
第10章關系分析(4/6學時)
第11章面向?qū)ο笤O計原則(2學時)
第12章對象設計(5/6學時)
第13章接口設計(4/6學時)
*第14章形式化方法(4學時)
第15章軟件實現(xiàn)(2學時)
第16章軟件質(zhì)量(2學時)
第17章軟件測試(2學時)
第18章軟件維護(2學時)
第19章軟件項目管理與計劃(2學時)
由于軟件工程知識面廣,在介紹中不能面面俱到。加上時間倉促,作者水平有限,書中的不足之處在所難免,懇請讀者批評指正。
編者
2007年5月于小谷圍島
第1版前言
1. 關于本書
軟件工程是指導計算機軟件開發(fā)的工程科學。人們希望通過用工程技術和管理方法使軟件開發(fā)工程化,由此產(chǎn)生了軟件工程學。軟件工程學是采用工程的概念、原理、技術與方法,把當前先進的技術與已經(jīng)實踐證明了的正確管理方法相結(jié)合來開發(fā)軟件。從20世紀60年代提出軟件工程的概念以來,軟件工程技術逐漸成熟,現(xiàn)在已成為計算機科學技術中的一門重要學科。但是,還有些公司和個人仍然在隨意開發(fā)軟件,將編寫高質(zhì)量的程序與開發(fā)系統(tǒng)混為一談,也有些軟件專業(yè)的學生或軟件開發(fā)人員還沒有掌握軟件開發(fā)出現(xiàn)的新技術,鑒于此我們編寫了本書。
本書是作者根據(jù)近10年來對軟件工程學、面向?qū)ο蠓椒ǖ冉虒W與研究的經(jīng)驗,以及領導或參與的20項軟件項目開發(fā)的實際應用經(jīng)驗,并結(jié)合軟件開發(fā)新技術編寫而成。根據(jù)過去的教學經(jīng)驗,讀者學習一門新技術,教材是非常重要的。因此,我們在編寫本書之前,在各方面進行了充分的準備。
2. 本書結(jié)構(gòu)安排
本書由16章構(gòu)成,內(nèi)容如下。
第1章: 緒論。介紹的主要內(nèi)容有軟件的特點、軟件的發(fā)展、軟件危機、軟件工程、軟件工程與方法學、軟件工程的基本原理等。
第2章: 軟件工程的基本理論。介紹的主要內(nèi)容有軟件工程過程、軟件生存周期、軟件生存周期模型、軟件開發(fā)方法、軟件開發(fā)工具。
第3章: 可行性研究。介紹的主要內(nèi)容有可行性研究的任務與步驟、系統(tǒng)分析、分析原理、結(jié)構(gòu)化分析、系統(tǒng)流程圖、數(shù)據(jù)流圖、數(shù)據(jù)字典、成本效益分析、可行性研究的文檔、項目開發(fā)計劃。
第4章: 軟件需求分析與概念模型。介紹的主要內(nèi)容有需求分析、IDEF方法、概念模型與規(guī)范化。
第5章: 總體設計。介紹的主要內(nèi)容有軟件設計的重要性、設計過程、軟件總體設計、設計基本原理、體系結(jié)構(gòu)設計、結(jié)構(gòu)化設計、IDEF0圖的設計方法、軟件結(jié)構(gòu)優(yōu)化。
第6章: 軟件細節(jié)設計。介紹的主要內(nèi)容有細節(jié)設計任務與方法、設計表示法、結(jié)構(gòu)化程序設計、結(jié)構(gòu)化定理、圖形工具,面向數(shù)據(jù)結(jié)構(gòu)的設計。
第7章: 面向?qū)ο蠓椒▽W。介紹的主要內(nèi)容有傳統(tǒng)方法學的缺點、面向?qū)ο蟮幕靖拍睢ο竽P、動態(tài)模型、功能模型。
第8章: 面向?qū)ο蠓治。介紹的主要內(nèi)容有面向?qū)ο蠓治龅幕具^程、對象的發(fā)現(xiàn)和標識、發(fā)現(xiàn)對象方法、定義屬性、定義服務、定義結(jié)構(gòu)、實例連接、消息連接、建立功能模型。
第9章: 面向?qū)ο笤O計。介紹的主要內(nèi)容有設計的準則、啟發(fā)式規(guī)則、系統(tǒng)分解、設計問題域子系統(tǒng)、設計任務子系統(tǒng)、設計數(shù)據(jù)管理子系統(tǒng)、面向?qū)ο蟪绦蛟O計、軟件重用、統(tǒng)一建模語言UML。
第10章: 形式化方法。介紹的主要內(nèi)容有形式化方法的基礎知識、有限狀態(tài)機(FSM)、Petri網(wǎng)的基本原理、凈室方法學、客戶/服務器模式。
第11章: 用戶界面設計。介紹的主要內(nèi)容有界面軟件開發(fā)綜述、人機交互子系統(tǒng)設計、圖形用戶界面設計、多媒體用戶界面設計、用戶界面模型、用戶界面的描述方法與技術等。
第12章: 軟件質(zhì)量。介紹的主要內(nèi)容有軟件質(zhì)量的概述、軟件質(zhì)量的度量和評價、軟件質(zhì)量保證、技術評審與審查,軟件的可靠性。
第13章: 軟件實現(xiàn)。介紹的主要內(nèi)容有程序設計語言的特性及選擇、程序設計風格、程序設計效率、冗余編程、軟件容錯技術。
第14章: 軟件測試。介紹的主要內(nèi)容有軟件測試概述、測試方法、測試用例的設計、測試過程、調(diào)試。
第15章: 軟件維護。介紹的主要內(nèi)容有軟件維護概述、軟件可維護性、軟件維護的特點、軟件維護的實施、維護“老化代碼”、逆向工程和再工程。
第16章: 軟件項目管理與計劃。介紹的主要內(nèi)容有軟件項目管理概述、項目管理過程、軟件開發(fā)成本估算、風險分析、進度安排、軟件項目的組織。
此外,本書的最后給出了一個附錄,列出了軟件產(chǎn)品的主要文件,以供讀者參考。
3. 本書特點
本書側(cè)重于理論聯(lián)系實際,從實用性、易懂性出發(fā),重點突出,內(nèi)容豐富而實用。在詳細介紹理論的同時,給出了部分示例,以利于讀者掌握其實際應用的方法。此外,為了便于讀者鞏固所學的知識,在各章的后面都附有相應的小結(jié)與練習題。
4. 適用對象
本書可作為大專院校相關專業(yè)高年級學生的教材和參考書,也可供計算機專業(yè)的高級人員參考。
本書由李代平編寫,另外張信一參加了第9、11、12章的編寫,彭重嘉參加了第13~16章的編寫。
由于作者水平有限,書中的不足之處在所難免,懇請讀者批評指正。
編者
2002年7月
第1章緒論
1.1軟件概述
1.1.1什么是計算機軟件
1.1.2軟件的特點
1.1.3軟件的分類
1.1.4軟件的發(fā)展
1.1.5軟件危機
1.2軟件工程概述
1.2.1軟件工程與方法學
1.2.2軟件工程的基本原理
1.2.3軟件工程的目標
1.2.4軟件工程的內(nèi)容
1.2.5軟件工程原則
1.2.6軟件工程面臨的問題
小結(jié)
綜合練習1
第2章基本理論
2.1軟件工程過程
2.2軟件生命周期
2.2.1軟件分析時期
2.2.2軟件設計時期
2.2.3編碼與測試時期
2.2.4運行與維護時期
2.3軟件生命周期模型
2.3.1軟件生命周期模型的概念
2.3.2瀑布模型
2.3.3原型模型
2.3.4增量模型
2.3.5螺旋模型
2.3.6噴泉模型
2.3.7基于知識的模型
2.3.8變換模型
2.4軟件開發(fā)方法
2.4.1結(jié)構(gòu)化方法
2.4.2Jackson方法
2.4.3維也納開發(fā)方法
2.4.4面向?qū)ο蟮拈_發(fā)方法
2.5軟件工具與開發(fā)
2.5.1軟件工具箱
2.5.2軟件開發(fā)環(huán)境
2.5.3計算機輔助軟件工程
小結(jié)
綜合練習2
第3章可行性研究
3.1可行性研究任務與步驟
3.1.1研究任務
3.1.2研究步驟
3.2系統(tǒng)分析
3.2.1系統(tǒng)分析員
3.2.2面臨的問題域
3.2.3通信技術
3.3分析原理
3.3.1信息域
3.3.2建立模型
3.3.3分解
3.4系統(tǒng)模型與模擬
3.4.1系統(tǒng)模型
3.4.2系統(tǒng)建模和模擬
3.5成本效益分析
3.6可行性研究的文檔
3.7項目開發(fā)計劃
3.7.1方案選擇
3.7.2制訂項目開發(fā)計劃
小結(jié)
綜合練習3
第4章軟件需求分析
4.1需求分析
4.1.1需求分析的特點
4.1.2需求分析的原則
4.1.3需求分析的任務
4.1.4需求分析的方法
4.2結(jié)構(gòu)化分析
4.2.1自頂向下逐層分解
4.2.2結(jié)構(gòu)化分析步驟
4.3系統(tǒng)流程圖
4.4數(shù)據(jù)流圖
4.4.1基本圖形符號
4.4.2畫數(shù)據(jù)流圖
4.4.3結(jié)構(gòu)化分析方法的應用
4.5數(shù)據(jù)字典
4.5.1內(nèi)容及格式
4.5.2數(shù)據(jù)字典的實現(xiàn)
小結(jié)
綜合練習4
第5章總體設計
5.1軟件設計的重要性
5.2設計過程
5.3軟件總體設計
5.4設計基本原理
5.4.1抽象
5.4.2細化
5.4.3模塊化
5.4.4軟件體系結(jié)構(gòu)
5.4.5程序結(jié)構(gòu)
5.4.6數(shù)據(jù)結(jié)構(gòu)
5.4.7軟件過程
5.5體系結(jié)構(gòu)設計
5.5.1軟件結(jié)構(gòu)圖
5.5.2模塊的大小
5.5.3扇出和扇入與深度和寬度
5.5.4模塊的耦合
5.5.5模塊的內(nèi)聚
5.5.6結(jié)構(gòu)設計的一般準則
5.5.7模塊的作用域與控制域
5.6結(jié)構(gòu)化設計
5.6.1數(shù)據(jù)流的類型
5.6.2過程步驟
5.6.3變換分析設計
5.6.4事務分析設計
5.6.5混合流設計
5.6.6結(jié)構(gòu)化設計方法應用示例
5.6.7設計的后期處理
5.7軟件結(jié)構(gòu)優(yōu)化
5.7.1軟件結(jié)構(gòu)設計優(yōu)化準則
5.7.2軟件結(jié)構(gòu)的HIPO圖
小結(jié)
綜合練習5
第6章軟件詳細設計
6.1詳細設計的任務與方法
6.1.1詳細設計的基本任務
6.1.2詳細設計方法
6.2設計表示法
6.2.1結(jié)構(gòu)化語言
6.2.2判定表
6.2.3判定樹
6.3結(jié)構(gòu)化程序設計
6.3.1流程圖程序
6.3.2三種基本控制結(jié)構(gòu)
6.3.3常用符號
6.3.4正規(guī)程序
6.3.5基本程序
6.3.6結(jié)構(gòu)化程序
6.4結(jié)構(gòu)化定理
6.4.1程序函數(shù)
6.4.2基本定理
6.4.3非結(jié)構(gòu)化轉(zhuǎn)換為結(jié)構(gòu)化
6.4.4常見錯誤
6.5過程設計語言
小結(jié)
綜合練習6
第7章面向?qū)ο蠓治?
7.1面向?qū)ο蟮南嚓P概念
7.1.1對象
7.1.2類
7.1.3屬性
7.1.4服務(操作或方法)
7.1.5封裝
7.1.6繼承
7.1.7消息
7.1.8結(jié)構(gòu)與連接
7.2UML的基本圖標
7.3對象分析
7.3.1用戶需求與研究問題域
7.3.2發(fā)現(xiàn)對象方法
7.3.3定義屬性
7.3.4定義服務
7.4一般特殊結(jié)構(gòu)
7.5整體部分結(jié)構(gòu)
7.6實例連接
7.6.1簡單的實例連接
7.6.2復雜的實例連接及其表示
7.7消息連接
小結(jié)
綜合練習7
第8章面向?qū)ο笤O計
8.1系統(tǒng)總體方案
8.2軟件體系結(jié)構(gòu)
8.3設計環(huán)境
8.3.1為適應編程環(huán)境的調(diào)整
8.3.2對象設計的步驟
8.4完善對象的細節(jié)
8.5設計算法
8.5.1選擇算法
8.5.2選擇數(shù)據(jù)結(jié)構(gòu)
8.6關聯(lián)設計
8.6.1單向關聯(lián)
8.6.2雙向關聯(lián)
8.7設計優(yōu)化
小結(jié)
綜合練習8
第9章用戶界面設計
9.1人的因素
9.1.1分析活動者
9.1.2從Use Case分析人機交互
9.1.3分析處理異常事件的人機交互
9.1.4命令的組織
9.1.5輸出信息的組織結(jié)構(gòu)
9.2界面設計風格
9.2.1菜單的選擇
9.2.2對話框
9.2.3窗口
9.3人機界面的設計準則
9.4人機界面設計過程
9.4.1用戶界面模型
9.4.2界面支持系統(tǒng)
9.4.3界面元素
9.4.4設計的形式
9.5描述方法與技術
9.5.1靈境技術
9.5.2多通道人機交互技術
小結(jié)
綜合練習9
第10章數(shù)據(jù)庫及其接口設計
10.1數(shù)據(jù)管理系統(tǒng)及其選擇
10.2技術整合
10.3數(shù)據(jù)接口
10.4對象存儲方案和數(shù)據(jù)接口的設計策略
10.4.1針對文件系統(tǒng)的設計
10.4.2針對RDBMS的設計
10.4.3使用OODBMS
小結(jié)
綜合練習10
第11章軟件實現(xiàn)
11.1程序設計語言的特性及選擇
11.1.1程序設計語言特性
11.1.2程序設計語言的選擇
11.2程序設計風格
11.3程序設計效率
11.3.1代碼效率
11.3.2內(nèi)存效率
11.3.3I/O效率
11.4冗余編程
11.5軟件容錯技術
11.5.1容錯軟件
11.5.2容錯的一般方法
11.5.3容錯軟件的設計過程
11.5.4軟件的容錯系統(tǒng)結(jié)構(gòu)
小結(jié)
綜合練習11
第12章軟件質(zhì)量
12.1軟件質(zhì)量概述
12.1.1軟件質(zhì)量的定義
12.1.2軟件質(zhì)量特性
12.1.3軟件質(zhì)量特性之間的競爭
12.2軟件質(zhì)量的度量和評價
12.2.1軟件質(zhì)量的度量
12.2.2軟件質(zhì)量度量的分類
12.2.3軟件質(zhì)量評價
12.3軟件質(zhì)量保證
12.3.1軟件質(zhì)量保證的概述
12.3.2軟件質(zhì)量保證原則
12.3.3軟件質(zhì)量保證計劃
12.3.4軟件質(zhì)量保證的措施
12.3.5軟件質(zhì)量管理小組
12.4技術評審與審查
12.4.1評審過程
12.4.2選擇參加評審的成員
12.4.3評審的管理和組織
12.4.4評審的方法
12.4.5走查和審查
12.4.6開發(fā)過程的評審
12.4.7對評審的綜合評價
12.5軟件的可靠性
小結(jié)
綜合練習12
第13章軟件測試
13.1軟件測試概述
13.1.1軟件測試的目的
13.1.2軟件測試的原則
13.2測試方法
13.2.1靜態(tài)測試
13.2.2動態(tài)測試
13.3測試用例的設計
13.3.1白盒技術
13.3.2黑盒技術
13.4測試過程
13.4.1軟件測試過程中的信息
13.4.2軟件測試的步驟與各開發(fā)階段的關系
13.4.3單元測試
13.4.4集成測試
13.4.5確認測試
13.5調(diào)試
小結(jié)
綜合練習13
第14章軟件維護
14.1軟件維護概述
14.1.1軟件維護的定義
14.1.2影響維護工作的因素
14.1.3維護成本
14.2軟件可維護性
14.2.1軟件可維護性的定義
14.2.2可維護性的度量
14.3軟件維護的特點
14.3.1非結(jié)構(gòu)化維護和結(jié)構(gòu)化維護
14.3.2維護的困難性
14.3.3軟件維護的費用
14.4軟件維護的實施
14.4.1維護的組織
14.4.2維護的流程
14.4.3維護技術
14.4.4維護的副作用
14.5維護“老化代碼”
14.6逆向工程和再工程
14.6.1預防性維護
14.6.2逆向工程的元素
14.6.3再工程中的重構(gòu)技術
小結(jié)
綜合練習14
第15章軟件項目管理與計劃
15.1軟件項目管理概述
15.1.1軟件管理的對象
15.1.2軟件開發(fā)中的資源
15.1.3分解技術
15.2項目管理過程
15.3軟件開發(fā)成本估算
15.3.1軟件開發(fā)成本估算方法
15.3.2軟件開發(fā)成本估算的經(jīng)驗模型
15.4風險分析
15.4.1風險識別
15.4.2風險估算
15.4.3風險評價
15.4.4風險駕馭和監(jiān)控
15.5進度安排
15.5.1軟件開發(fā)小組人數(shù)與軟件生產(chǎn)率
15.5.2任務的確定與并行性
15.5.3制定開發(fā)進度計劃
15.5.4進度安排的圖形方法
15.5.5項目的追蹤和控制
15.6軟件項目的組織
15.6.1軟件項目管理的特點
15.6.2軟件項目組織的建立
15.6.3人員配備
小結(jié)
綜合練習15
參考答案
參考文獻
總體設計的基本目標就是概要地回答系統(tǒng)應該如何實現(xiàn)。設計在任何工程產(chǎn)品或系統(tǒng)中,是開發(fā)階段的第一步。設計(Design)可以定義為應用各種技術和原理,對一個設備、一個過程或一個系統(tǒng),做出足夠詳細的決策,使之有可能在物理上得以實現(xiàn)的過程。
系統(tǒng)的總體設計是在前面系統(tǒng)分析的基礎上,為后期將要構(gòu)造的系統(tǒng)實體建立一個模型(Model)或表達式(Representation)。與其他學科的工程設計方法一樣,隨著新理論新方法的不斷出現(xiàn)而繼續(xù)發(fā)展。與其他技術領域比較,軟件設計在它的發(fā)展中仍處于早期階段。研究與分析軟件設計問題才不過30年左右的時間。由此可見軟件設計方法還缺少更為經(jīng)典的工程設計學科所具有的深度、適應性(Flexibility)和定量性質(zhì)。但是,已經(jīng)有一些軟件設計技術、設計質(zhì)量準則及設計符號表示法。
5.1軟件設計的重要性
軟件設計處于軟件工程過程的技術核心地位。軟件開發(fā)中不管應用什么樣的開發(fā)模式(Development Paradigm),都要進行軟件設計。當軟件需求分析和定義完成后,就進入設計階段。它是在對系統(tǒng)的信息、功能、行為和各種要求理解的基礎上構(gòu)想未來的系統(tǒng)。這種構(gòu)想是否正確與完美,需要后面的編碼階段來構(gòu)造,測試階段來驗證。軟件設計、軟件構(gòu)造與驗證,這三項活動是必不可少的。每一項都是按一定形式變換信息,最終使之成為被確認的計算機軟件。在軟件工程過程中,這些技術階段的信息流如圖51所示。
由圖51可以看出,在軟件需求提供的信息(Information)、功能(Functional)和行為(Behavioral)模型上,設計階段可以使用任何一種設計方法。設計階段包括: 把分析階段所建立的信息域模型變換為數(shù)據(jù)結(jié)構(gòu),這種數(shù)據(jù)結(jié)構(gòu)是軟件實現(xiàn)所需要的,也包括定義程序結(jié)構(gòu)構(gòu)件(Structural Components)之間相互關系的體系結(jié)構(gòu)(Architectural)設計。另外還包括變換結(jié)構(gòu)構(gòu)件為軟件的過程描述的過程(Procedural)設計。源代碼生成并通過測試之后,進行軟件的組裝(Integrate)和確認(Validate)。
在設計中所作的決策將最終影響軟件實現(xiàn)的成功與否,也影響軟件維護的難易程度。所以,在軟件設計過程中的這些決策是開發(fā)階段非常關鍵的一步。
軟件設計的重要性還反映在質(zhì)量(Quality)上。在開發(fā)過程中,設計是對軟件最本質(zhì)的部分進行構(gòu)造,構(gòu)造的水平?jīng)Q定軟件質(zhì)量。同時,設計也提供了可以進行質(zhì)量評價的軟件表達式。只有通過設計,才能把用戶的需求精確地轉(zhuǎn)換為完美的軟件系統(tǒng)。軟件設計是整個軟件工程和軟件維護的基礎,如圖52所示。
圖51軟件設計與軟件工程
圖52設計的重要性
對于一個軟件系統(tǒng),如果不進行設計而構(gòu)造一個系統(tǒng),可以肯定這個系統(tǒng)是不穩(wěn)定的。這個系統(tǒng)即使發(fā)生很小的變動,都可能出現(xiàn)故障,而且很難測試,直到軟件工程過程的最后,系統(tǒng)的質(zhì)量仍無法評價。
5.2設計過程
軟件設計是一個把需求轉(zhuǎn)換為軟件表達式的過程。這個表達式過程一般情況下是分為兩步走。首先,這種表達式只是描繪一個軟件的概貌。然后,細化為一個非常接近于源代碼的設計表達式。從軟件工程的角度講是分為總體設計和詳細設計?傮w設計主要是把需求轉(zhuǎn)換為數(shù)據(jù)結(jié)構(gòu)和軟件體系結(jié)構(gòu),而詳細設計主要集中在體系結(jié)構(gòu)表達式的細化,從而產(chǎn)生詳細的數(shù)據(jù)結(jié)構(gòu)和軟件的算法表達式。
軟件設計的發(fā)展在早期的設計工作中,著重在開發(fā)模塊化程序模塊所需要的準則,以及按照自頂向下(TopDown)的方式逐步細化軟件體系結(jié)構(gòu)上。接著設計定義的過程方面逐漸發(fā)展成為一種叫做結(jié)構(gòu)化編程(Structured Programming)的原則。之后,提出了把數(shù)據(jù)流和數(shù)據(jù)結(jié)構(gòu)翻譯成設計定義的方法。近年來,多采用OO的設計方法?偨Y(jié)過去軟件設計的發(fā)展,可以歸納為是一個持續(xù)發(fā)展的過程。
在比較小的軟件設計中,可以把總體設計和詳細設計作為一個過程階段去完成。但是有一定規(guī)模的系統(tǒng)中,總體設計和詳細設計是兩個明確的階段,所以它們中的許多設計活動是不同的。除了數(shù)據(jù)、體系結(jié)構(gòu)和過程設計之外,在現(xiàn)代的許多應用中還包括界面設計活動。界面設計主要是建立人機之間界面的布局和交互的機制。
圖53設計技術和管理方面
之間的關系
總體設計和詳細設計除了必須有先進的設計技術外,還要有同步的管理技術支持。用如圖53所示的形式表明設計技術和管理方面之間的關系。
從圖53中可以看出,由技術支持的總體設計和詳細設計都伴隨著管理技術。
前面已經(jīng)提到,軟件設計的重要性之一就是軟件的質(zhì)量。在整個設計過程中,設計每一步的質(zhì)量都要進行正式的技術評審(Formal Technical Reviews)。要按照設計準則對設計表達式的質(zhì)量進行評價。這里給出軟件設計原則如下。
(1) 設計應當模塊化(Modular),也就是說,軟件應被邏輯地劃分為能完成特定功能和子功能的構(gòu)件。
(2) 設計應形成具有獨立功能特征的模塊(如子程序或過程)。
(3) 設計應使模塊之間和與外部環(huán)境之間接口的復雜性盡量地降低。
(4) 設計應該有一個分層的組織結(jié)構(gòu),這樣人們可對軟件各個構(gòu)件進行理性的控制。
(5) 設計應有性質(zhì)不同的可區(qū)分的數(shù)據(jù)和過程表達式。
(6) 設計應利用軟件需求分析中得到的信息和可重復的方法。
……
你還可能感興趣
我要評論
|