图书目录

第1章软件工程概述3

1.1软件的概念和特征3

1.1.1软件的概念3

1.1.2软件的分类4

1.2软件危机5

1.2.1软件危机的主要表现6

1.2.2产生软件危机的原因7

1.2.3解决软件危机的途径8

1.3软件工程9

1.3.1软件工程的定义9

1.3.2软件工程的目标10

1.3.3软件工程的研究内容11

1.3.4软件工程的基本原理12

1.4软件生存周期13

1.4.1软件生存周期定义14

1.4.2软件生存周期的基本任务14

1.5软件生存周期模型14

1.5.1瀑布模型14

1.5.2原型模型15

1.5.3增量模型17

1.5.4螺旋模型17

1.5.5喷泉模型18

1.5.6形式化方法模型19

1.5.7基于组件的开发模型19

1.5.8第四代技术模型20

1.5.9混合模型20

小结20

习题20软件工程实用教程(第2版) 目录 第2章可行性研究与软件开发计划22

2.1可行性研究的任务22

2.2可行性研究的过程23

2.3成本/效益分析24

2.3.1成本估计方法24

2.3.2成本/效益分析方法25

2.4可行性研究报告27

2.5软件开发计划27

2.5.1软件作用范围28

2.5.2资源需求28

2.5.3进度安排28

2.6软件开发计划说明书28

小结29

习题30

第3章需求工程31

3.1软件需求定义31

3.1.1业务需求32

3.1.2用户需求32

3.1.3功能需求32

3.1.4非功能需求32

3.2需求工程过程33

3.3需求的获取34

3.3.1需求获取的过程34

3.3.2需求获取的常用方法35

3.4需求分析37

3.4.1需求分析的特点37

3.4.2需求分析的原则37

3.4.3需求分析的任务38

3.4.4需求分析的方法39

3.4.5需求分析过程40

3.5需求定义40

3.6需求验证42

3.7需求管理44

3.8案例:小型教学管理系统46

小结49

习题49

第4章结构化分析50

4.1结构化分析方法50

4.1.1结构化分析策略50

4.1.2SA的描述工具51

4.1.3SA的分析步骤51

4.2数据流图52

4.2.1数据流图符号52

4.2.2绘制分层数据流图的方法53

4.2.3实例54

4.2.4数据流图的绘制与其他流程图的差别56

4.3数据字典57

4.3.1数据字典的内容57

4.3.2数据字典使用符号58

4.3.3数据字典条目实例59

4.4数据加工逻辑60

4.4.1结构化语言60

4.4.2判定表61

4.4.3判定树62

4.5实体关系图63

4.6结构化分析实例64

小结69

习题70

第5章总体设计71

5.1软件设计基础71

5.1.1软件设计的目标71

5.1.2软件设计的任务72

5.1.3总体设计过程72

5.2软件设计的基本原理73

5.2.1模块化设计原理73

5.2.2抽象和逐步求精75

5.2.3信息隐蔽和局部化76

5.2.4模块独立性76

5.2.5软件结构设计优化原则79

5.3表示软件结构的图形80

5.3.1层次图和HIPO图80

5.3.2软件结构图82

5.4结构化设计方法83

5.4.1结构化设计的流程83

5.4.2典型的数据流类型和系统结构84

5.4.3变换分析86

5.4.4事务分析90

5.5总体设计文档及复审93

小结94

习题94

第6章详细设计95

6.1结构化程序设计95

6.2详细设计的任务95

6.3详细设计的原则96

6.4详细设计工具96

6.4.1程序流程图96

6.4.2盒图(NS图)97

6.4.3问题分析图98

6.4.4过程设计语言100

6.4.5详细设计工具的选择102

6.5程序复杂性度量103

6.6详细设计文档及复审105

小结107

习题107

第7章软件编码109

7.1程序设计语言109

7.1.1程序设计语言的特性109

7.1.2程序设计语言的分类110

7.1.3程序设计的选择112

7.2程序设计的风格113

7.2.1源程序文档化113

7.2.2数据说明114

7.2.3语句结构114

7.2.4输入/输出115

7.2.5重用116

7.3效率116

小结118

习题118

第8章软件测试119

8.1软件测试基本理论119

8.1.1软件测试的概念119

8.1.2软件测试的原则119

8.1.3软件测试过程121

8.1.4软件测试方法121

8.2白盒测试技术122

8.2.1逻辑覆盖法122

8.2.2基本路径测试法126

8.2.3循环测试法130

8.3黑盒测试技术131

8.3.1等价类划分法131

8.3.2边界值分析法134

8.3.3错误猜测法136

8.3.4因果图法137

8.4软件测试策略137

8.4.1单元测试138

8.4.2集成测试139

8.4.3确认测试141

8.4.4系统测试142

小结143

习题144

第9章软件维护145

9.1软件维护概述145

9.1.1软件维护分类145

9.1.2软件维护成本146

9.2软件维护过程148

9.2.1软件维护活动148

9.2.2软件维护技术151

9.3软件可维护性151

9.3.1影响软件可维护性的因素152

9.3.2软件可维护性度量152

9.3.3提高可维护性的方法154

9.4软件维护的副作用155

9.4.1代码的副作用155

9.4.2数据副作用155

9.4.3文档副作用156

9.5软件再工程156

9.5.1软件再工程概述156

9.5.2软件再工程过程157

9.5.3软件再工程方法159

小结159

习题159第二部分面向对象的软件工程

第10章面向对象基础163

10.1面向对象方法论概述163

10.1.1传统软件开发方法中存在的问题163

10.1.2面向对象方法主要优点165

10.1.3面向对象方法的发展史及现状简介167

10.2面向对象的基本概念168

10.2.1对象168

10.2.2类168

10.2.3消息168

10.2.4封装性168

10.2.5继承性169

10.2.6多态性169

10.3面向对象软件工程170

10.3.1面向对象的开发方法170

10.3.2统一建模语言UML171

10.3.3RUP过程171

10.3.4工具175

小结176

习题176

第11章UML建模语言177

11.1UML统一建模语言简介177

11.1.1UML的发展历史177

11.1.2UML的特点178

11.1.3UML用于软件的开发178

11.2UML的基本模型179

11.2.1UML的事物179

11.2.2UML的关系181

11.2.3UML的图185

11.3用例图187

11.3.1用例图描述187

11.3.2建立用例模型190

11.3.3用例图示例191

11.4类图192

11.4.1类图描述192

11.4.2类的表示方法192

11.4.3类的关系193

11.4.4类图示例193

11.5对象图194

11.5.1对象图描述194

11.5.2对象的表示方法194

11.5.3对象图示例195

11.6包图195

11.6.1包图描述195

11.6.2包的表示方法196

11.6.3包之间的关系196

11.6.4包图示例196

11.7状态机图197

11.7.1状态机图描述197

11.7.2状态的表示方法197

11.7.3转换198

11.7.4事件199

11.7.5状态图示例199

11.8活动图200

11.8.1活动图描述200

11.8.2活动的表示方法200

11.8.3泳道201

11.8.4对象流和控制流202

11.8.5活动图示例202

11.9顺序图203

11.9.1顺序图描述203

11.9.2顺序图表示方法203

11.9.3顺序图示例204

11.10通信图205

11.10.1通信图描述205

11.10.2通信图表示方法205

11.10.3通信图示例207

11.11构件图207

11.11.1构件图描述207

11.11.2构件的表示方法208

11.11.3接口208

11.11.4依赖关系209

11.11.5构件图示例209

11.12部署图210

11.12.1部署图描述210

11.12.2部署图表示方法211

11.12.3部署图示例212

小结213

习题213

第12章面向对象分析215

12.1面向对象分析过程215

12.2建立用例模型216

12.2.1确定系统的执行者216

12.2.2确定用例216

12.2.3确定用例模型217

12.2.4用例模型说明218

12.2.5用例模型评价220

12.2.6优化用例模型221

12.2.7构造系统原型221

12.3建立对象模型221

12.3.1补充用例说明222

12.3.2识别分析类222

12.3.3描述类的职责224

12.3.4建立分析类之间的关系225

12.3.5描述每个类的属性226

12.4建立动态模型226

12.5评审分析模型228

小结229

习题229

第13章面向对象的设计230

13.1面向对象设计准则230

13.1.1设计准则230

13.1.2设计策略231

13.1.3系统分解与组织233

13.2问题域子系统设计235

13.3人机交互子系统设计236

13.4任务管理子系统设计238

13.5数据管理子系统设计240

13.5.1选择数据存储管理模式240

13.5.2设计数据管理子系统241

13.6对象设计243

13.6.1使用模式设计对象244

13.6.2接口规格说明设计244

13.6.3重构对象设计模型246

13.6.4优化对象设计模型246

小结247

习题247

第14章面向对象实现248

14.1面向对象程序设计语言248

14.2面向对象的程序实现特征249

14.3面向对象测试250

14.3.1面向对象测试模型251

14.3.2面向对象分析的测试251

14.3.3面向对象设计的测试252

14.3.4面向对象编程的测试253

14.3.5面向对象的单元测试254

14.3.6面向对象的集成测试256

14.3.7面向对象的系统测试257

小结258

习题258

第三部分软件工程管理

第15章软件工程管理概述261

15.1软件项目管理261

15.1.1软件项目管理的特点261

15.1.2软件项目管理活动262

15.1.3软件项目计划263

15.2软件风险管理274

15.2.1风险识别275

15.2.2风险分析278

15.2.3风险规划280

15.2.4风险控制280

15.3软件质量管理281

15.3.1软件质量基础281

15.3.2软件质量控制281

15.4软件配置管理283

15.4.1软件配置管理概述283

15.4.2软件配置管理过程284

15.5软件过程管理285

15.5.1ISO 9000体系285

15.5.2能力成熟度模型286

小结289

习题289

第四部分软件工程高级课题

第16章Web工程293

16.1基于Web的系统和应用特点293

16.2Web工程的层次295

16.2.1过程295

16.2.2方法296

16.2.3工具和技术296

16.3Web分析297

16.3.1内容分析模型297

16.3.2交互分析模型297

16.3.3功能分析模型298

16.3.4配置分析模型298

16.3.5关系导航分析模型299

16.4Web设计300

16.4.1界面设计300

16.4.2美学设计301

16.4.3内容设计302

16.4.4体系结构设计302

16.4.5导航设计303

16.4.6构件设计304

16.5Web测试304

16.5.1内容测试304

16.5.2界面测试305

16.5.3构件级测试306

16.5.4导航测试307

16.5.5配置测试307

16.5.6安全性测试308

16.5.7性能测试309

16.6Web项目管理310

16.6.1Web队伍310

16.6.2项目管理311

16.6.3配置管理312

小结312

习题313

第17章基于构件的软件开发314

17.1软件复用概述314

17.1.1软件复用的定义315

17.1.2软件复用的形式和级别315

17.1.3软件复用的过程317

17.1.4软件复用的意义318

17.2构件与构件技术319

17.2.1构件的定义及基本特征319

17.2.2构件技术的产生与基本思想320

17.3构件与构件系统322

17.3.1对可复用构件的要求322

17.3.2构件模型及系统323

17.3.3构件的分类模式324

17.3.4构件库的管理326

17.4领域工程327

17.4.1领域工程过程327

17.4.2领域工程实施329

17.4.3组织机构329

17.4.4相关技术330

17.5基于构件的软件开发330

17.5.1CBSE/CBD概述330

17.5.2CBSE过程332

17.5.3基于构件的系统的开发332

17.5.4构件构造333

17.5.5软件构件技术规范 333

17.6CBD与传统的软件开发方法比较336

小结338

习题338

第18章分布式系统的软件开发339

18.1分布式系统概述339

18.2客户/服务器体系结构341

18.3分布式对象技术342

18.4机构间分布式计算345

18.4.1对等体系结构346

18.4.2面向服务的系统体系结构346

小结348

习题348

第19章敏捷开发349

19.1敏捷方法概述349

19.1.1敏捷方法发展史350

19.1.2敏捷宣言350

19.2敏捷方法的特点352

19.3敏捷方法与传统软件开发方法的区别352

19.4主要敏捷方法简介353

19.5极限编程355

19.5.1XP的含义355

19.5.2XP的4个核心价值356

19.5.3为什么使用XP356

19.5.4XP的开发过程357

19.5.5XP的实践358

19.6Scrum模型361

19.6.1Scrum简介361

19.6.2角色的作用361

19.6.3会议的作用362

19.6.4Scrum开发模式的流程363

小结364

习题364

参考文献365