軟體工程基礎教程(英文版)

《軟體工程基礎教程(英文版)》是2012年電子工業出版社出版的圖書,作者是田文洪。

圖書信息

作 譯 者:田文洪

出版時間:2012-01

千 字 數:533

作者簡介

田文洪 田文洪

作者姓名:田文洪

學位:博士

任職:教授、博導

研究方向:雲計算、大數據資源調度;高性能並行處理;NP難問題近似算法

其他職業:電子科技大學客座脫口秀表演藝術家

內容簡介

本書由淺入深、循序漸進地介紹了規範化的軟體開發方法所涉及的概念和方法。內容包括過程模型、軟體需求、設計工程、生產率和工作量度量、軟體測試、軟體維護、質量管理、項目管理和風險管理等內容,最後介紹了一些常用的軟體開發工具,並給出編碼風格上的建議。

目 錄

Unit 1 Introduction to Software Engineering 1

軟體工程介紹

Learning Objectives 1

學習目標

1.1 A Brief Introduction to Software Engineering 1

軟體工程簡介

1.1.1 The Pioneering Era 2

開創時期

1.1.2 1945 to 1965: The Origins 2

1945到1965: 發起

1.1.3 1965 to 1985: The Software Crisis 2

1965到1985:軟體危機

1.1.4 1985 to 1989: No Silver Bullet 3

1985到1989:沒有銀彈

1.1.5 1990 to 1999: Prominence of the Internet 4

1990到1999:Internet盛行

1.1.6 2000 to Present: Lightweight Methodologies 4

2000年至今:輕量級方法

1.1.7 Current Trends in Software Engineering 4

軟體工程的發展趨勢

1.1.8 Software Engineering Today 5

今天的軟體工程

1.2 Software 5

軟體

1.2.1 A Formal Definition of Software 5

軟體的正式定義

1.2.2 Characteristics of Software 5

軟體的特徵

1.2.3 The Dual Roles of Software 7

軟體的雙重角色

1.2.4 Classification of Software 7

軟體分類

1.2.5 Why does Software Change Very Fast? 7

為什麼軟體變化快?

1.3 Why Do We Need Software Engineering? 8

為什麼需要軟體工程?

1.3.1 Software Crisis 8

軟體危機

1.3.2 An Economist’s View of Software and Software Engineering 8

一個經濟學家對軟體和軟體工程的看法

1.3.3 The Formal Definition of Software Engineering 9

軟體工程的正式定義

1.4 Major Concerns and Objectives of Software Engineering 9

軟體工程的目標和擔憂

1.5 Seven Principles for Software Engineering 9

軟體工程的七個原則

1.5.1 Manage Using a Phased Lifecycle Plan 9

使用階段性的生命周期管理計畫

1.5.2 Perform Continuous Validation 10

進行持續驗證

1.5.3 Maintain Disciplined Product Control 10

維持有效的產品控制

1.5.4 Use Modern Programming/Engineering Practices 10

運用現代編程/工程實踐

1.5.5 Maintain Clear Accountability for Results 10

維護清晰的問責機制

1.5.6 Use Better and Fewer People 10

用更好更少的人

1.5.7 Maintain a Commitment to Improve the Process 11

保持過程改進

1.6 Major Topics in Software Engineering 11

軟體工程中的主要課題

1.7 Relationship to Other Disciplines 13

其他相關學科

1.8 Some Misunderstandings about Software Engineering 14

一些對軟體工程的錯誤認識

1.9 Software Engineering Code of Professional and Ethical Responsibility 15

軟體工程的專業和道德責任

Summary 16

總結

Notes 16

重點注釋

Glossary of this unit 17

術語

Quiz 17

習題

References 18

參考文獻

Further Reading 18

擴展閱讀

Unit 2 Process Models 21

過程模型

Learning Objectives 21

學習目標

2.1 Introduction 21

簡介

2.2 What is Software Process? 22

什麼是軟體過程?

2.3 Maturity Models 23

成熟度模型

2.4 Software Process Models 24

軟體過程模型

2.4.1 The Waterfall Model 24

瀑布模型

2.4.2 The Evolutionary Model 26

演化模型

2.4.3 Component-based Model 28

基於組件的模型

2.4.4 Incremental Process Models 29

增量模型

2.4.5 Some New Process 33

一些新模型

2.5 How to Choose Process Models? 33

如何選擇過程模型?

2.6 The Relationship between Process and Product 33

過程和產品的關係

Summary 34

總結

Notes 34

重點注釋

Glossary of this unit 35

術語

Quiz 35

習題

References 36

參考文獻

Unit 3 Software Requirements 37

軟體需求

Learning Objectives 37

學習目標

3.1 Software Requirements Fundamentals 37

軟體需求基礎

3.1.1 Definition of a Software Requirement 38

軟體需求定義

3.1.2 Product and Process Requirements 38

產品和過程需求

3.1.3 Functional and Non-functional Requirements 39

功能和非功能需求

3.1.4 Quantifiable Requirements 39

可量化的需求

3.1.5 System and Software Requirements 39

系統需求和軟體需求

3.2 Requirements Process 40

需求過程

3.2.1 Process Models 40

過程模型

3.2.2 Process Actors 41

過程角色

3.3 Requirements Elicitation 41

需求獲取

3.3.1 Requirements Sources 42

需求來源

3.3.2 Elicitation Techniques 42

需求獲取方法

3.4 Requirements Analysis 43

需求分析

3.4.1 Requirements Classification 44

需求分類

3.4.2 Conceptual Modeling 45

概念建模

3.4.3 Architectural Design and Requirements Allocation 46

結構設計和需求配置

3.4.4 Requirements Negotiation 46

需求談判

3.5 Requirements Specification 47

需求規格

3.5.1 The System Definition Document 47

系統定義文檔

3.5.2 The Software Requirements Specification 48

需求規格說明書

3.6 Requirements Validation 52

需求驗證

3.6.1 Requirements Reviews 52

需求審查

3.6.2 Prototyping 53

原型

3.6.3 Model Validation 53

模型驗證

3.6.4 Acceptance Tests 54

驗收測試

3.7 Practical Considerations 54

實際考慮因素

3.7.1 Iterative Nature of the Requirements Process 54

需求過程的疊代

3.7.2 Change Management 55

變更管理

3.8 Example: Online Recruiting System Requirement Specification 55

例:網上招聘系統的需求規格說明書

3.8.1 Introduction 55

導言

3.8.2 System Definitions 55

系統定義

3.8.3 Running Environment 56

套用環境

3.8.4 Function Specifications 57

功能規格

3.8.5 Performance Requirements 59

性能需求

3.8.6 Products Submitting 59

產品提交

3.8.7 Implementation Constrains 59

實現約束

Summary 59

總結

Notes 59

重點注釋

Glossary of this unit 60

術語

Quiz 60

習題

References 60

參考文獻

Unit 4 Software Design Engineering 62

軟體設計工程

Learning Objectives 62

學習目標

4.1 Introduction to Design Engineering 62

設計工程簡介

4.2 Design Process and Quality 63

設計過程和質量

4.3 Design Technologies 64

設計技術

4.3.1 Abstraction 64

抽象

4.3.2 Design Patterns 65

設計模式

4.3.3 Modularization 65

模組化

4.3.4 Information Hiding 67

信息隱藏

4.3.5 Function Independence 67

功能獨立

4.3.6 Refinement 68

改進

4.3.7 Refactoring 68

重構

4.4 Design Models 68

設計模型

4.4.1 Data Design 70

數據結構設計

4.4.2 Architecture Design 72

架構設計

4.4.3 Interface Design 76

接口設計

4.4.4 Component Design 76

組件設計

4.4.5 Deploy Design 77

部署設計

4.5 Design Case Study 80

設計實例

Summary 82

總結

Notes 83

重點注釋

Glossary of this unit 84

術語

Quiz 84

習題

References 84

參考文獻

Unit 5 Software Productivity and Effort Metrics 86

軟體生產率和工作量度量

Learning Objectives 86

學習目標

5.1 Introduction to Software Productivity and Project Effort Estimation 86

簡介

5.2 Software Productivity Estimation 88

軟體生產率估計

5.2.1 Size-based Metrics—Direct Measurement 89

基於規模的度量——直接度量

5.2.2 Function-points Metrics—Indirect Measurement 90

功能點度量——間接度量

5.2.3 The Relationship Between LOC and FP Based Metrics 92

LOC和FP度量的關係

5.2.4 How to Use These Metrics for Productivity Estimation? 92

如何運用這些度量進行生產率估計?

5.3 Estimation for Project Effort 93

項目工作量估計

5.3.1 Algorithmic Cost Modeling —Empirical Measurement 93

算法成本模型——基於經驗的度量

5.3.2 The COCOMO Model 94

COCOMO模型

5.3.3 Estimation of Effort in Project Planning 95

項目計畫中的工作量度量

5.3.4 Estimation of Effort by Tasks Breakdown 95

通過任務分解來估算工作量

5.3.5 Estimation of Effort by Current Available Resources 96

通過目前可用的資源來估算工作量

Summary 96

總結

Notes 96

重點注釋

Glossary of this unit 98

術語

Quiz 98

習題

References 98

參考文獻

Unit 6 Software Quality Management 99

軟體質量管理

Learning Objectives 99

學習目標

6.1 An Introduction to Software Quality Management 99

簡介

6.2 Software Quality 100

軟體質量

6.2.1 Definition of Software Quality 100

軟體質量定義

6.2.2 Quality Control 101

質量控制

6.2.3 Quality Assurance 101

質量保證

6.2.4 Quality Costs 102

質量成本

6.3 Software Quality Assurance 102

軟體質量保證

6.3.1 Background Introduction 103

背景介紹

6.3.2 SQA Activities 104

SQA活動

6.4 Software Review 106

軟體審查

6.4.1 Impact of Software Bug Costs 106

軟體錯誤的代價

6.4.2 Software Defect Indicator and Removal 107

軟體缺陷的發現和消除

6.5 Formal Technique Review 107

正式技術審查

6.5.1 Review Report 107

審查報告

6.5.2 Review Tutorial 108

審查指南

6.6 Software Reliability 109

軟體可靠性

6.6.1 Measurement of Reliability and Availability 109

可靠性和可用性度量

6.6.2 Software Security 109

軟體安全

6.7 ISO 9000 Family of Standards 109

ISO 9000標準

Summary 113

總結

Notes 113

重點注釋

Glossary of this unit 114

術語

Quiz 114

習題

References 114

參考文獻

Unit 7 Testing Techniques 116

測試方法

Learning Objectives 116

學習目標

7.1 Testing Introduction 116

測試簡介

7.2 Testing Objective 117

測試目標

7.3 Testing Evaluation 117

測試評估

7.3.1 Coverage/Thoroughness Measures 117

覆蓋性/徹底性度量

7.3.2 Fault Seeding 117

故障植入

7.4 Testing Techniques 117

測試方法

7.4.1 White-box Testing 117

白盒測試

7.4.2 Black-box Testing 122

黑盒測試

7.5 Example: Testing Design of Online Recruiting System 123

例:網上招聘系統的測試設計

7.5.1 Introduction 123

簡介

7.5.2 Testing Design 124

測試設計

7.5.3 Testing Cases 124

測試用例

Summary 124

總結

Notes 125

重點注釋

Glossary of this unit 125

術語

Quiz 126

習題

References 126

參考文獻

Unit 8 Testing Strategies 127

測試策略

Learning Objectives 127

學習目標

8.1 Testing Strategies Introduction 127

測試策略簡介

8.2 Unit Testing 127

單元測試

8.2.1 Unit Testing Considerations 128

單元測試考慮因素

8.2.2 Unit Testing Procedures 129

單元測試過程

8.3 Integration Testing 130

集成測試

8.3.1 Top-down Integration 130

自頂向下集成

8.3.2 Bottom-up Integration 131

自底向上集成

8.3.3 Regression Testing 132

回歸測試

8.3.4 Smoke Testing 132

冒煙測試

8.4 Validation Testing 132

驗證測試

8.4.1 Validation Testing Criteria 133

驗證測試標準

8.4.2 Configuration Review 133

配置評審

8.4.3 Alpha and Beta Testing 133

Alpha和Beta測試

8.5 System Testing 134

系統測試

8.5.1 Recovery Testing 134

恢複測試

8.5.2 Security Testing 134

安全性測試

8.5.3 Stress Testing 134

壓力測試

8.5.4 Performance Testing 135

性能測試

8.6 Example: Testing Report of Online Recruiting System 135

例:網上招聘系統測試報告

8.6.1 Introduction 135

簡介

8.6.2 Testing Time, Place, and People 136

測試時間、地點和人員

8.6.3 Testing Environment 136

測試環境

8.6.4 Testing Execution 136

測試執行

8.6.5 Testing Result Analysis 137

測試結果分析

8.6.6 Testing Evaluation 138

測試評估

Summary 138

總結

Notes 138

重點注釋

Glossary of this unit 139

術語

Quiz 139

習題

References 139

參考文獻

Unit 9 Software Maintenance 141

軟體維護

Learning Objectives 141

學習目標

9.1 Software Maintenance Fundamentals 141

軟體維護基礎

9.1.1 Definitions and Terminology 142

定義和術語

9.1.2 Need for Maintenance 142

維護的必要性

9.1.3 Majority of Maintenance Costs 142

維護成本

9.2 Key Issues in Software Maintenance 143

軟體維護的關鍵問題

9.2.1 Technical Issues 143

技術問題

9.2.2 Management Issues 145

管理問題

9.2.3 Maintenance Cost Estimation 146

維護成本估計

9.3 Maintenance Process 146

維護過程

9.3.1 Maintenance Processes 146

維護過程

9.3.2 Maintenance Activities 148

維護活動

9.4 Techniques for Maintenance 150

維護技術

9.4.1 Program Comprehension 150

程式理解

9.4.2 Reengineering 150

再工程

9.4.3 Reverse Engineering 150

逆向工程

Summary 151

總結

Notes 151

重點注釋

Glossary of this unit 151

術語

Quiz 151

習題

References 151

參考文獻

Unit 10 Software Project Management 153

軟體項目管理

Learning Objectives 153

學習目標

10.1 Introduction to Project Management 153

項目管理簡介

10.2 Four Elements of Project Management 156

項目管理四要素

10.3 The People 157

人員

10.3.1 People Management Capability Maturity Model 158

人員管理能力成熟度模型

10.3.2 Team Building 160

團隊建設

10.3.3 Team Organization 161

團隊組織

10.3.4 Virtual Teams 162

虛擬團隊

10.4 The Product 163

產品

10.4.1 Software Scope 163

軟體範圍

10.4.2 Problem Decomposition 164

問題分解

10.5 The Process 164

過程

10.6 The Project 167

項目

10.6.1 Project Estimation 168

項目估算

10.6.2 Project Planning 169

項目規劃

Summary 170

總結

Notes 170

重點注釋

Glossary of this unit 172

術語

Quiz 172

習題

References 172

參考文獻

Unit 11 Software Risk Analysis and Management 174

軟體風險分析和管理

Learning Objectives 174

學習目標

11.1 An Introduction to Software Risk Management 174

軟體風險管理簡介

11.2 Software Risk Management Strategy 175

軟體風險管理策略

11.3 Software Risk Identification 176

軟體風險識別

11.3.1 Evaluate the Whole Project 176

評價整個項目

11.3.2 Risk Classification 177

風險分類

11.4 Software Risk Assessment 178

軟體風險評估

11.4.1 Building Risk List 178

制定風險清單

11.4.2 Assessing Risk Influence Factors 179

評估風險影響因素

11.4.3 Dynamic Ranking 183

動態排名

11.5 Software Risk Refinement 183

軟體風險改進

11.6 Software Risk Aversion, Monitoring and Management 184

軟體風險規避、監控和管理

Summary 187

總結

Notes 188

重點注釋

Glossary of this unit 188

術語

Quiz 189

習題

References 189

參考文獻

Unit 12 Software Engineering Development Tools 190

軟體工程開發工具

Learning Objectives 190

學習目標

12.1 Software Requirements Tools 190

軟體需求工具

12.2 Software Design Tools 191

軟體設計工具

12.2.1 IBM Rational Software Architect 191

IBM 軟體開發

12.2.2 PowerDesigner 191

PowerDesigner工具

12.3 Software Architecture Tools 192

軟體架構工具

12.3.1 Visual Studio.NET 192

Visual Studio .NET工具

12.3.2 Visual Borland JBuilder 193

Visual Borland JBuilder工具

12.3.3 Eclipse 194

Eclipse工具

12.4 Software Maintenance Tools 196

軟體維護工具

12.4.1 CASE Tool 196

CASE工具

12.4.2 Information Repository of CASE Environment 197

CASE環境的信息庫

12.4.3 CASE Environment Structure 197

CASE環境結構

12.5 Software Testing Tools 198

軟體測試工具

12.5.1 WinRunner 198

WinRunner工具

12.5.2 LoadRunner 199

LoadRunner工具

12.6 Software Configuration Management Tools 201

軟體配置管理工具

12.6.1 Software Configuration Manager 202

軟體配置管理

12.6.2 Source Code Management 203

軟體代碼管理

12.6.3 Version Management 204

版本管理

12.6.4 Operation Command 205

操作命令

12.7 Software Engineering Tools 211

軟體工程工具

Appendix A General Style and Coding Standards for Software Projects 214

軟體項目的一般風格和編碼標準

A.1 Introduction 214

簡介

A.1.1 Purpose 214

目的

A.1.2 Scope 215

範圍

A.1.3 Coding Standard Documents 215

編碼標準文檔

A.1.4 Other Related Project Documents 215

其他相關文檔

A.1.5 Terms Used in This Document 215

文檔中的術語

A.1.6 References 216

參考文獻

A.1.7 Our Limited Lifetime Warranty 216

有限的使用期限保證

A.1.8 The Emotional Topic of Coding Standards 216

編碼標準的情緒問題

A.2 Project Dependent Standards 217

項目依賴標準

A.3 File And Module Guidelines 217

檔案和模組指南

A.3.1 Module Design Guidelines 217

模組設計指南

A.3.2 Header (Include) Files 218

Header (Include) 檔案

A.3.3 Source File Layout Guideline 218

源檔案布局指南

A.3.4 File Naming Guideline 219

檔案命名指南

A.3.5 File Informational Headers 219

檔案頭

A.3.6 Subroutine Header 220

子程式頭

A.4 Constants and Macros 221

常量和宏

A.4.1 Use Constants and Macros Instead of Hard Coded Literal Values 221

用常量和宏代替硬編碼

A.4.2 Only Define Constants and Macros Once 221

常量和宏只定義一次

A.4.3 Place Parenthesis around Each Macro Parameters 221

為每個宏參數加小括弧

A.4.4 Notes about Style 221

記錄風格

A.5 Global Data Guidelines 222

全局數據指南

A.6 Subroutines 222

子程式

A.6.1 Subroutine Scope Guidelines 222

子程式範圍指南

A.6.2 Subroutine Declaration Guidelines 222

子程式聲明指南

A.6.3 Subroutine Layout Guidelines 222

子程式布局指南

A.6.4 Subroutine Size Guidelines 222

子程式規模指南

A.6.5 Parameter List Guidelines 223

參數列表指南

A.6.6 Variable Declaration Guidelines 223

變數聲明指南

A.7 Comments 223

注釋

A.7.1 Distributed Code Description 223

分散式代碼描述

A.7.2 Comment Block Standard 224

注釋標準

A.7.3 In line Comments 224

行內注釋

A.7.4 Commenting Control Constructs 224

注釋控制結構

A.8 Code Layout 224

代碼布局

A.8.1 One Statement per Line 224

每行一個語句

A.8.2 Indentation Guidelines 225

縮進指南

A.8.3 Brackets, Begin...End, and Delimiting Control Blocks 225

括弧、Begin...End和邊界控制塊

A.8.4 Error Handling 225

錯誤處理

A.9 Naming Convention for Identifiers (Variables, Constants, and Subroutines) 226

標識符(變數、常量和子程式)的命名約定

A.9.1 Select Clear and Meaningful Names 226

選擇清晰和有意義的名字

A.9.2 Naming Subroutines (verb and object) 226

命名子程式(動詞和對象)

A.9.3 Naming Constants, Variables (noun) 226

命名常量和變數(名詞)

A.9.4 Naming Boolean Identifiers 226

命名Boolean標誌符(動詞、對象或形容詞)

A.9.5 Naming Types 226

命名類型

A.9.6 Use of Upper/lower Case and Underscores to Differentiate Subroutines, Variables,

and Constants 227

用大小寫來區別子程式、變數和常量

A.9.7 Subroutines and Program Units 227

子程式和程式單元

A.9.8 Variables 227

變數

A.9.9 Macros and Constants 227

宏和常量

A.9.10 Use of Prefix (Hungarian) Notations to Differentiate the Scope and Type of a Data Variable 227

用前綴來區別變數的範圍和類型

A.9.11 Abbreviations 230

縮寫

A.9.12 Summary Table for Naming Convention: 230

命名約定的總結

A.10 Misc. Rules for Coding 231

編碼規範

A.10.1 Conditionals and Comparisons 231

條件和比較

A.10.2 Program Flow 231

程式流

A.10.3 Binding Time of Variables and Values 231

變數和值的綁定時間

A.10.4 Go-tos, Pointers, and Issues of Clarity 232

Go-to語句、指針和二義性問題

A.10.5 Strive to Develop Clear Code 232

開發清晰的代碼

A.10.6 Use Libraries When Available 232

使用庫

A.10.7 Type Casting Integer and Float Variables Makes Code More Portable 232

整型變數和浮點型變數的轉換使編碼更容易

A.10.8 Compiler Dependent Code Should Include Tests 232

依賴編譯器的代碼應該包含測試

A.10.9 Use ASCII Files for Runtime or Machine Dependent Constants and Macros 233

使用執行時ASCII檔案或依賴機器的常量和宏

A.10.10 Error Handling 233

錯誤處理

A.10.11 Debugging 233

調試

A.10.12 Using Structures and Enumerators is Recommended 233

推薦使用結構和枚舉

A.11 Modularization and Information Hiding 233

模組化和信息隱藏

A.11.1 Information Hiding, Domain, and Scope of Variables 233

信息隱藏、域、變數的範圍

A.11.2 Low Coupling, High Cohesion, and Clean Interfaces 233

低耦合,高內聚,清晰的接口

A.11.3 Cohesion 233

內聚

A.11.4 Coupling 233

耦合

A.11.5 Clean Interface 234

清晰的接口

A.11.6 Minimize Scope of Variables 234

最小化變數範圍

相關詞條

熱門詞條

聯絡我們