《软件工程与开发技术》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:江开耀著
  • 出 版 社:西安:西安电子科技大学出版社
  • 出版年份:2009
  • ISBN:9787560621586
  • 页数:380 页
图书介绍:本书介绍了传统的软件工程知识;议RUP为蓝本,介绍了现代面向对象的软件工程方法;就项目估算、项目策划项目经理必备的项目管理知识做了较全面介绍;并论述了软件能力成熟度模型、个人软件过程PSP和小组软件过程TSP的相关内容。

第一篇 传统的软件工程 2

第1章 软件工程引论 2

1.1 软件产品的概念与特征 2

1.1.1 软件产品的概念与分类 2

1.1.2 软件产品的特征 3

1.1.3 软件发展的阶段划分 4

1.2 软件危机 5

1.2.1 软件危机及其表现 5

1.2.2 产生软件危机的原因 6

1.2.3 解决软件危机的途径 7

1.3 软件工程的产生及其发展 8

1.4 软件工程的技术基础 9

1.5 软件工程过程的概念 10

1.6 几种软件过程模型 12

1.6.1 线性顺序模型 13

1.6.2 原型模型 14

1.6.3 快速应用开发模型 14

1.6.4 演化软件过程模型 15

1.7 过程技术 17

1.8 软件重用技术 18

1.9 计算机辅助软件工程工具 19

1.10 小结 21

习题 21

第2章 系统工程基础与软件可行性研究 23

2.1 基于计算机的系统 23

2.1.1 基于计算机的系统概述 23

2.1.2 计算机系统工程 24

2.2 系统需求识别 27

2.2.1 系统分析的目标 27

2.2.2 系统分析过程 27

2.3 可行性研究与分析 28

2.3.1 效益度量方法 29

2.3.2 成本—效益分析 30

2.3.3 技术分析 31

2.3.4 方案制定与评估 32

2.4 系统体系结构建模 32

2.4.1 建立系统结构流程图 32

2.4.2 系统结构的规格说明定义 35

2.5 系统定义与评审 35

2.5.1 系统定义文档模板 35

2.5.2 系统定义的评审 36

2.6 小结 37

习题 37

第3章 结构化需求分析与建模 38

3.1 需求分析 38

3.1.1 需求分析的任务 38

3.1.2 需求分析的步骤 39

3.1.3 需求分析的原则 39

3.2 数据建模 40

3.2.1 实体—关系模型 40

3.2.2 数据建模的其他工具 42

3.3 功能建模 44

3.3.1 数据流图的基本符号 44

3.3.2 数据流与加工之间的关系 45

3.3.3 数据流模型的建立方法 45

3.3.4 建立数据流模型的原则 47

3.4 行为建模 48

3.4.1 状态迁移图 48

3.4.2 Petri网 49

3.5 数据字典 51

3.5.1 数据字典的基本符号 51

3.5.2 数据字典中的条目及说明格式 51

3.5.3 加工逻辑的描述 53

3.5.4 数据字典的建立 55

3.6 结构化需求分析的若干技术 55

3.7 验证软件需求 57

3.7.1 软件需求规格说明的主要内容 57

3.7.2 软件需求的验证 57

3.8 小结 58

习题 59

第4章 结构化软件设计 60

4.1 软件设计中的基本概念和原理 60

4.2 体系结构设计概述 64

4.2.1 体系结构设计的任务 64

4.2.2 体系结构设计中可采用的工具 66

4.2.3 体系结构设计的原则 67

4.2.4 体系结构设计说明书 69

4.3 面向数据流的体系结构设计方法 70

4.3.1 数据流图的类型 70

4.3.2 面向数据流的体系结构设计过程 70

4.4 详细设计概述 74

4.4.1 详细设计的任务 74

4.4.2 详细设计可采用的工具 75

4.4.3 详细设计的原则 79

4.4.4 详细设计说明书 80

4.5 面向数据流的详细设计方法 80

4.6 面向数据结构的设计方法 82

4.7 小结 86

习题 86

第5章 软件编码 88

5.1 程序设计语言 88

5.1.1 程序设计语言的分类 88

5.1.2 程序设计语言的特性 89

5.1.3 程序设计语言的选择 90

5.2 编码风格及软件效率 92

5.2.1 编码风格 92

5.2.2 软件效率 95

5.3 程序复杂度的概念及度量方法 95

5.3.1 程序图 96

5.3.2 程序复杂度的度量方法 97

5.4 小结 99

习题 99

第6章 软件测试技术 100

6.1 软件测试基础 100

6.1.1 软件测试的概念、目的和原则 100

6.1.2 软件测试的过程 102

6.1.3 软件测试的方法 103

6.2 白盒测试技术 104

6.2.1 白盒测试概念 104

6.2.2 白盒测试的用例设计 105

6.3 黑盒测试技术 108

6.3.1 黑盒测试概念 108

6.3.2 黑盒测试的用例设计 108

6.4 软件测试计划和测试分析报告 115

6.5 软件测试策略 117

6.5.1 单元测试 118

6.5.2 集成测试 120

6.5.3 确认测试 123

6.5.4 系统测试 124

6.6 小结 125

习题 125

第二篇 面向对象的软件工程 130

第7章 面向对象技术总论 130

7.1 概述——面向对象方法论 130

7.2 面向对象技术的基本概念 132

7.2.1 类 132

7.2.2 对象及对象实例 132

7.2.3 消息机制 134

7.3 面向对象技术的基本特点 134

7.3.1 封装性 134

7.3.2 继承性 135

7.3.3 多态性 136

7.3.4 抽象性 138

7.4 面向对象分析方法 139

7.5 面向对象技术与程序结构 141

7.5.1 概述 141

7.5.2 重构 142

7.5.3 一个程序结构改进(重构)的例子 144

7.6 面向对象软件工程 148

7.6.1 传统的面向对象软件工程 148

7.6.2 现代的面向对象软件工程 149

7.6.3 RUP过程 150

7.6.4 UML简介 153

7.7 设计模式(Design Pattern)与框架(Framework) 155

7.7.1 设计模式的基本概念 155

7.7.2 设计模式举例——Abstract Factory(抽象工厂)模式 156

7.7.3 框架的基本概念 157

7.7.4 框架的应用 158

7.7.5 框架开发与软件重用 159

7.7.6 框架的分类及开发原则 160

7.8 基于构件的软件体系结构(Com/Dcom、Corba、Internet) 160

7.9 面向对象分析解决(描述)问题的模式 161

7.10 小结 163

习题 164

第8章 业务模型 165

8.1 业务模型概述 165

8.2 业务建模的目的及内容 166

8.2.1 业务建模的目的 166

8.2.2 业务建模的内容 166

8.3 业务建模流程和任务 166

8.4 业务建模中使用到的UML元素和版型 168

8.4.1 业务系统(Business System) 168

8.4.2 业务目标(Business Goal) 168

8.4.3 业务规则(Business Rule) 169

8.4.4 业务参与者(Business Actor) 170

8.4.5 业务工人(Business Worker) 171

8.4.6 业务实体(Business Entity) 171

8.4.7 业务事件(Business Event) 172

8.4.8 业务用例(Business Use Case) 173

8.4.9 业务用例实现(Business Use Case Realization) 177

8.4.10 业务用例与业务用例实现的区别 178

8.5 业务建模举例 178

8.5.1 业务目标(部分) 178

8.5.2 组织结构 179

8.5.3 岗位设置和职责 180

8.5.4 业务参与者(部分) 180

8.5.5 业务用例模型 180

8.5.6 业务对象模型 181

8.6 小结 181

习题 182

第9章 需求分析与用例模型 183

9.1 需求分析 183

9.1.1 系统需求和需求描述 183

9.1.2 需求类型 183

9.1.3 需求与用例模型 184

9.2 Actor及其关系 184

9.2.1 Actor 184

9.2.2 如何发现Actor 185

9.2.3 Actor之间的关系 186

9.3 用例及其关系 186

9.3.1 用例(Use Case) 186

9.3.2 用例的版型(Stereotype)及用例观点 188

9.3.3 用例之间的关系 188

9.4 用例图和用例模型 193

9.4.1 参与者与用例之间的关联 193

9.4.2 用例图 194

9.4.3 用例模型 195

9.5 用例规格说明 196

9.5.1 概述 196

9.5.2 用例的描述模板 196

9.5.3 通过用例描述来获取系统的功能 197

9.5.4 用例的描述方法及举例 198

9.6 用例描述中常见的错误举例 200

9.7 使用用例方法发现和确定系统功能需求 203

9.7.1 通过Actor来发现用例 204

9.7.2 通过业务用例和业务流程来发现用例 205

9.7.3 多视角的建模 206

9.8 小结 206

习题 207

第10章 分析设计与对象模型 208

10.1 类和对象的定义 208

10.1.1 类的定义 208

10.1.2 类的定义讨论 208

10.1.3 类的程序语言定义及和现实世界类的映射 209

10.1.4 类的高级概念 211

10.2 对象、类之间的关系 213

10.2.1 泛化(Generalization) 213

10.2.2 关联(Association) 214

10.2.3 聚集(Aggregation) 216

10.2.4 依赖(Depandancy) 217

10.3 抽象类和接口 218

10.4 分析模型(Analysis Model) 219

10.4.1 边界类(Boundary) 219

10.4.2 控制类(Control) 220

10.4.3 实体类(Entity) 221

10.4.4 分析模型举例 222

10.5 设计模型 223

10.6 抽象类和接口的设计原则 225

10.6.1 缺省抽象原则DAP(Default Abstraction Principle) 225

10.6.2 接口设计原则IDP(Interface Design Principle) 225

10.6.3 黑盒原则BBP(Black Box Principle) 226

10.6.4 不要具体化超类原则DCSP(Don't Concrete Supperclass Principle) 226

10.7 类图 227

10.8 领域设计(Domain Design) 227

10.8.1 概述 227

10.8.2 领域建模 228

10.8.3 领域分析 228

10.8.4 领域工程 228

10.9 面向对象设计的原则 229

10.9.1 单一职责原则(SRP) 229

10.9.2 开闭原则(OCP) 229

10.9.3 Liskov替换原则 231

10.9.4 依赖倒置原则(DIP) 237

10.9.5 接口分离原则(ISP) 238

10.10 对象模型与关系模型 240

10.10.1 概念模型的表示方法 240

10.10.2 对象模型和关系模型的相互转换 241

10.11 小结 242

习题 242

第11章 系统结构与包模型 243

11.1 包的概念 243

11.2 包之间的依赖关系 243

11.3 包的版型 244

11.4 用包表示的系统高层结构 244

11.5 设计包的原则 245

11.5.1 重用等价原则(REP) 245

11.5.2 共同闭包原则(CCP) 245

11.5.3 共同重用原则(CRP) 246

11.5.4 非循环依赖原则(ADP) 246

11.5.5 稳定依赖原则(SDP) 246

11.5.6 稳定抽象原则(SAP) 246

11.6 小结 247

习题 247

第12章 系统动态特性与对象交互模型 248

12.1 动态模型概述 248

12.2 交互图 248

12.2.1 概述 248

12.2.2 顺序图 248

12.2.3 顺序图中的对象 249

12.2.4 顺序图中的消息 249

12.2.5 建立顺序图的方法和步骤 250

12.2.6 通信图(Communication Diagram) 250

12.2.7 通信图中的元素 251

12.2.8 顺序图和通信图的比较 251

12.3 状态图 252

12.3.1 概述 252

12.3.2 状态图中的基本概念 253

12.3.3 状态图的工具支持 254

12.4 活动图 254

12.4.1 概述 254

12.4.2 活动图中的基本概念 254

12.4.3 活动图的用途 256

12.4.4 活动图的工具支持 257

12.5 UML2.0的活动图 257

12.6 小结 258

习题 259

第13章 构件模型和部署模型 260

13.1 代码实现与构件模型 260

13.1.1 概述 260

13.1.2 构件(Component)和构件图(Component Diagram) 260

13.1.3 构件(Component)图的作用 261

13.2 部署图(Deploy Diagram) 262

13.3 小结 262

习题 262

第14章 面向对象测试基础 263

14.1 面向对象的单元测试 263

14.2 面向对象的集成测试 264

14.3 面向对象的确认测试与系统测试 264

14.4 设计测试用例 265

14.4.1 测试用例概述 265

14.4.2 面向对象概念对测试用例设计的影响 265

14.4.3 类测试用例设计 266

14.4.4 类间测试用例设计 267

14.4.5 测试用例设计举例 268

14.5 小结 270

习题 270

第三篇 软件工程项目管理 272

第15章 软件工程项目管理基础 272

15.1 项目管理的范围 272

15.2 人员角色管理 273

15.2.1 项目参与者 273

15.2.2 项目负责人 274

15.2.3 软件项目组的组织结构 274

15.2.4 小组内的协调和通信 275

15.3 问题管理 277

15.4 过程管理 277

15.5 小结 278

习题 278

第16章 软件度量 280

16.1 软件度量 280

16.2 面向规模的度量 281

16.3 面向功能的度量 281

16.4 软件质量的度量 284

16.4.1 影响软件质量的因素 284

16.4.2 软件质量度量 285

16.5 在软件过程中集成度量数据 286

16.5.1 建立基线 286

16.5.2 度量数据的收集、计算和评价 287

16.6 小结 288

习题 289

第17章 软件计划 290

17.1 软件范围界定 290

17.2 资源需求 292

17.3 项目估算 293

17.3.1 基于问题分解的估算 294

17.3.2 基于过程分解的估算 296

17.3.3 经验估算模型 296

17.3.4 COCOMO模型 297

17.3.5 软件方程式 299

17.3.6 自动估算工具 300

17.4 软件项目计划的结构 300

17.5 项目计划的分解求精 302

17.5.1 任务的确定与并发处理 302

17.5.2 制定明细的开发进度计划 303

17.6 计划跟踪监督 304

17.7 计划执行情况的度量与计划调控 305

17.8 小结 305

习题 306

第18章 软件工程风险管理 307

18.1 软件风险 307

18.2 风险识别 308

18.3 风险预测 309

18.3.1 建立风险表 309

18.3.2 风险评估 310

18.4 风险缓解、监控与管理 311

18.5 RMMM计划 313

18.6 小结 314

习题 314

第19章 软件质量保证 315

19.1 软件质量与SQA 315

19.1.1 软件质量 315

19.1.2 SQA活动 316

19.2 软件复审 316

19.2.1 软件复审简介 316

19.2.2 软件缺陷对成本的影响 317

19.2.3 缺陷的放大和消除 317

19.3 正式的技术复审 319

19.3.1 复审会议的组织 319

19.3.2 复审报告和记录保存 320

19.3.3 复审指南 320

19.4 基于统计的质量保证 321

19.5 软件可靠性 322

19.5.1 可靠性和可用性 322

19.5.2 平均无故障运行时间的估算 323

19.6 SQA计划 324

19.7 小结 325

习题 326

第20章 软件配置管理 327

20.1 软件配置管理的任务 327

20.1.1 基线 327

20.1.2 软件配置项 329

20.2 SCM过程 330

20.3 软件配置中对象的标识 331

20.4 版本控制 332

20.5 变更控制 333

20.6 配置审核与状态报告 335

20.6.1 配置审核 335

20.6.2 配置状态报告 335

20.7 小结 335

习题 336

第四篇 软件工程过程模型 338

第21章 能力成熟度模型 338

21.1 CMM的发展过程 339

21.2 CMM体系结构 340

21.2.1 CMM的等级结构 340

21.2.2 CMM的内部结构 341

21.2.3 关键过程域的结构 342

21.3 CMM关键过程域 343

21.4 小结 344

第22章 个人软件过程(PSP) 345

22.1 PSP的基本概念 346

22.1.1 PSP的基本原则 346

22.1.2 PSP的结构 347

22.2 PSP过程简介 348

22.2.1 需求定义与概念设计 348

22.2.2 产品规模与资源估算 348

22.2.3 制定进度表 349

22.2.4 开发产品阶段 349

22.3 PSP的数据收集与度量 350

22.3.1 时间数据的收集与度量 350

22.3.2 产品规模数据的收集与度量 350

22.3.3 质量数据的收集与测量 351

22.4 PSP质量管理 354

22.4.1 缺陷与质量 355

22.4.2 工程师的质量职责 355

22.4.3 尽可能早地清除缺陷 355

22.4.4 缺陷预防 355

22.5 PSP与设计 356

22.6 PSP的发展 356

22.6.1 个体度量过程PSP0和PSP0.1 357

22.6.2 个体规划过程PSP1和PSP1.1 357

22.6.3 个体质量管理过程PSP2和PSP2.1 357

22.6.4 个体循环过程PSP3 357

22.7 小结 358

第23章 小组软件过程 359

23.1 TSP的由来与发展 359

23.2 工程协作与工程小组 360

23.3 小组协作的条件 360

23.4 保证小组工作的有效性 361

23.5 TSP的目标与工作 362

23.5.1 TSP的目标 362

23.5.2 小组操作过程 362

23.5.3 TSP流程 363

23.6 启动一个TSP小组 364

23.7 基于TSP的协同工作 368

23.7.1 领导职责 368

23.7.2 人际交流 368

23.7.3 工作跟踪与计划维护 369

23.7.4 平衡工作负载 370

23.8 TSP的质量管理 370

23.8.1 质量计划 371

23.8.2 识别质量问题 375

23.8.3 发现和阻止质量问题 377

23.9 小结 377

参考文献 380