《软件详细设计教程》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:樊海玮,吕进,杜瑾等编著
  • 出 版 社:西安:西安电子科技大学出版社
  • 出版年份:2010
  • ISBN:9787560624846
  • 页数:388 页
图书介绍:本书介绍了包括软件体系结构、统一建模语言、软件需求工程、软件设计工程在内的相关基础性知识;软件结构化详细设计、面向对象详细设计和软件编码设计与规范;软件测试的方法、过程与技术,强调了软件详细设计与软件测试之间的应用关系和协作方法。

第1章 软件工程概述 1

1.1 软件 1

1.1.1 软件的定义 1

1.1.2 软件的特性 2

1.1.3 软件的发展 3

1.2 软件危机 4

1.3 软件工程 6

1.3.1 软件工程的概念 6

1.3.2 软件工程的三要素 6

1.3.3 软件质量的特性 7

1.3.4 软件工程方法 7

1.4 软件工程知识体系(SWEBOK) 8

1.4.1 SWEBOK项目介绍 8

1.4.2 SWEBOK的组成 9

1.4.3 软件工程与其他相关学科的关系 13

1.5 软件过程 13

1.5.1 软件过程的概念 14

1.5.2 软件过程模型 17

1.6 软件项目管理基础 24

1.7 小结 28

第2章 软件体系结构 29

2.1 软件体系结构的产生与发展 29

2.1.1 软件体系结构的定义 30

2.1.2 软件体系结构的发展史 31

2.1.3 软件体系结构的研究现状 31

2.1.4 软件体系结构的影响 33

2.1.5 软件体系结构的发展方向 33

2.2 软件体系结构建模 34

2.2.1 “4+1”视图模型 34

2.2.2 软件体系结构的核心模型 40

2.2.3 软件体系结构的生命周期模型 41

2.3 基于体系结构的描述 44

2.3.1 软件体系结构的描述方法 44

2.3.2 软件体系结构的描述框架标准 46

2.3.3 软件体系结构的描述语言 47

2.4 基于体系结构的软件设计 51

2.4.1 基于体系结构的设计模式 51

2.4.2 基于体系结构的设计方法 58

2.4.3 体系结构的设计与演化 68

2.5 小结 71

第3章 统一建模语言UML基础 73

3.1 UML概述 73

3.1.1 UML的发展历程 73

3.1.2 UML的内容 74

3.1.3 UML的特点 75

3.1.4 UML的应用领域 75

3.2 通用模型元素 76

3.2.1 模型元素 76

3.2.2 约束 77

3.2.3 依赖关系 77

3.2.4 细化 78

3.2.5 注释 78

3.3 用例模型 79

3.3.1 用例图 79

3.3.2 画用例图 80

3.3.3 用例图的示例 81

3.4 静态模型 82

3.4.1 类图 82

3.4.2 对象图 86

3.4.3 包图 87

3.5 动态模型 88

3.5.1 状态图 88

3.5.2 活动图 91

3.5.3 顺序图 94

3.5.4 协作图 96

3.6 实现模型 97

3.6.1 构件图 98

3.6.2 配置图 99

3.7 从UML 1.x到UML 2.0 100

3.7.1 UML 2.0提案需求 100

3.7.2 被采纳的UML 2.0提案 101

3.7.3 UML 2.0概况 101

3.7.4 进步与不足 105

3.8 小结 106

第4章 软件需求工程 107

4.1 软件需求概述 107

4.1.1 业务需求 108

4.1.2 用户需求 109

4.1.3 功能需求和非功能需求 110

4.1.4 系统需求 111

4.2 需求工程过程 111

4.2.1 需求获取 111

4.2.2 需求分析 112

4.2.3 需求规格说明 113

4.2.4 需求验证 116

4.2.5 需求管理 118

4.3 需求获取技术 120

4.3.1 面谈 120

4.3.2 需求专题讨论会 122

4.3.3 观察用户工作流程 123

4.3.4 原型化方法 123

4.3.5 基于用例的方法 124

4.4 可行性研究 124

4.4.1 意义 124

4.4.2 可行性研究的内容 125

4.4.3 可行性研究报告 127

4.5 需求建模 128

4.5.1 需求建模方法 128

4.5.2 实体—关系图 129

45.3 数据流图 131

4.5.4 状态转换图 136

4.5.5 数据字典 138

4.6 小结 139

第5章 软件设计工程 141

5.1 软件工程中的设计 141

5.2 设计过程和设计质量 143

5.3 设计概念 145

5.3.1 抽象 145

5.3.2 体系结构 145

5.3.3 模式 145

5.3.4 模块化 146

5.3.5 信息隐蔽 147

5.3.6 功能独立 147

5.3.7 求精 148

5.3.8 重构 148

5.3.9 设计类 148

5.4 设计模型 149

5.4.1 数据设计元素 150

5.4.2 体系结构设计元素 150

5.4.3 接口设计元素 150

5.4.4 构件级设计元素 152

5.4.5 部署级设计元素 152

5.5 基于模式的软件设计 153

5.5.1 描述设计模式 153

5.5.2 在设计中使用模式 154

5.5.3 框架 154

5.6 小结 154

第6章 软件总体设计 156

6.1 软件设计的重要性 156

6.2 设计过程 157

6.3 软件总体设计 158

6.4 设计基本原理 160

6.4.1 抽象 160

6.4.2 细化 161

6.4.3 模块化 161

6.4.4 软件体系结构 162

6.4.5 程序结构 163

6.4.6 数据结构 164

6.4.7 软件过程 165

6.5 体系结构设计 167

6.5.1 软件结构图 167

6.5.2 模块的大小 168

6.5.3 扇出和扇入与深度和宽度 169

6.5.4 模块的耦合 170

6.5.5 模块的内聚 171

6.5.6 结构设计的一般准则 174

6.5.7 模块的作用域与控制域 175

6.6 结构化设计 176

6.6.1 数据流的类型 176

6.6.2 过程步骤 177

6.6.3 变换分析设计 178

6.6.4 事务分析设计 180

6.6.5 混合流设计 181

6.6.6 结构化设计方法应用示例 182

6.6.7 设计的后期处理 183

6.7 软件结构优化 184

6.7.1 软件结构设计优化准则 184

6.7.2 软件结构的HIPO图 185

6.8 小结 186

第7章 结构化软件详细设计 187

7.1 细节设计的任务与方法 187

7.1.1 细节设计的基本任务 187

7.1.2 细节设计方法 188

7.2 设计表示法 189

7.2.1 结构化语言 189

7.2.2 判定表 190

7.2.3 判定树 191

7.3 结构化程序设计 191

7.3.1 程序流程图 191

7.3.2 三种基本控制结构 192

7.3.3 常用符号 194

7.4 结构化定理 195

7.4.1 程序函数 195

7.4.2 基本定理 196

7.4.3 过程设计语言 197

7.5 面向数据结构的设计 201

7.5.1 Jackson图 201

7.5.2 纲要逻辑 203

7.5.3 Jackson方法 203

7.5.4 JSP应用 204

7.5.5 JSD方法 207

7.6 小结 212

第8章 面向对象软件详细设计 213

8.1 面向对象简介 213

8.1.1 面向对象的概念 213

8.1.2 面向对象方法的历史及现状 215

8.2 面向对象的相关概念 215

8.2.1 对象 216

8.2.2 类 217

8.2.3 对象图 218

8.2.4 属性 218

8.2.5 服务(操作或方法) 219

8.2.6 封装 219

8.2.7 继承 220

8.2.8 多重继承 223

8.2.9 消息 225

8.2.10 结构与连接 226

8.2.11 多态性 228

8.2.12 永久对象 228

8.2.13 主动对象 229

8.2.14 对象类的表示方法 230

8.3 链接与关联 230

8.3.1 一般概念 230

8.3.2 重数 231

8.3.3 关联的重要性 231

8.3.4 三元关联 232

8.3.5 关联的候选关键字 232

8.3.6 异或关联 233

8.3.7 资格关联 233

8.3.8 链接属性 233

8.3.9 将关联模型化为类 233

8.3.10 角色名 234

8.3.11 排序 235

8.3.12 资格符 235

8.4 聚合 235

8.4.1 聚合与关联 236

8.4.2 聚合与概括 236

8.4.3 递归聚合 237

8.4.4 操作的传播 237

8.4.5 物理聚合与分类聚合 238

8.4.6 物理聚合的语义扩展 238

8.4.7 分类聚合的语义扩展 239

8.5 概括 239

8.5.1 一般概念 239

8.5.2 重写特征 239

8.5.3 抽象类和具体类 240

8.5.4 概括与其他对象建模结构 240

8.6 构造分组 241

8.6.1 模块 241

8.6.2 表 241

8.7 小结 241

第9章 面向对象分析 242

9.1 分析过程 242

9.1.1 概述 242

9.1.2 三个子模型与五个层次 243

9.2 需求陈述 244

9.2.1 书写要点 244

9.2.2 例子 245

9.3 建立对象模型 246

9.3.1 确定类与对象 246

9.3.2 确定关联 248

9.3.3 划分主题 251

9.3.4 确定属性 252

9.3.5 识别继承关系 253

9.3.6 反复修改 254

9.4 建立动态模型 256

9.4.1 编写脚本 256

9.4.2 设想用户界面 257

9.4.3 画事件跟踪图 258

9.4.4 画状态图 260

9.4.5 审查动态模型 262

9.5 建立功能模型 262

9.5.1 画出基本系统模型图 262

9.5.2 画出功能级数据流图 263

9.5.3 描述处理框功能 263

9.6 定义服务 264

9.6.1 常规行为 264

9.6.2 从事件导出的操作 264

9.6.3 与数据流图中处理框对应的操作 264

9.6.4 利用继承减少冗余操作 265

9.7 面向对象分析实例 265

9.7.1 需求陈述 265

9.7.2 建立对象模型 265

9.7.3 建立动态模型 267

9.7.4 建立功能模型 268

9.7.5 进一步完善 269

9.8 小结 270

第10章 面向对象设计 271

10.1 面向对象设计的准则 271

10.1.1 模块化 272

10.1.2 抽象 272

10.1.3 信息隐藏 272

10.1.4 弱耦合 272

10.1.5 强内聚 273

10.1.6 可重用 273

10.2 启发规则 273

10.2.1 设计结果应该清晰易懂 274

10.2.2 一般—特殊结构的深度应适当 274

10.2.3 设计简单的类 274

10.2.4 使用简单的协议 274

10.2.5 使用简单的服务 275

10.2.6 把设计变动减至最小 275

10.3 系统分解 275

10.3.1 子系统之间的两种交互方式 276

10.3.2 组织系统的两种方案 276

10.3.3 设计系统的拓扑结构 277

10.4 设计问题域子系统 277

10.4.1 调整需求 278

10.4.2 重用已有的类 278

10.4.3 把问题域类组合在一起 278

10.4.4 增添一般化类以建立协议 279

10.4.5 ATM系统之例 279

10.5 设计人机交互子系统 279

10.5.1 设计人机交互界面的准则 280

10.5.2 设计人机交互子系统的策略 280

10.6 设计任务管理子系统 281

10.6.1 分析并发性 282

10.6.2 设计任务管理子系统 282

10.7 设计数据管理子系统 283

10.7.1 选择数据存储管理模式 283

10.7.2 设计数据管理子系统 284

10.7.3 例子 286

10.8 设计类中的服务 286

10.8.1 确定类中应有的服务 286

10.8.2 设计实现服务的方法 287

10.9 设计关联 288

10.9.1 关联的遍历 288

10.9.2 实现单向关联 288

10.9.3 实现双向关联 289

10.9.4 关联对象的实现方法 289

10.10 设计优化 289

10.10.1 确定优先级 289

10.10.2 提高效率的几项技术 290

10.10.3 调整继承关系 291

10.11 面向对象分析与设计实例 293

10.11.1 面向对象分析 293

10.11.2 面向对象设计 295

10.12 小结 300

第11章 编码设计与规范 301

11.1 程序设计语言 301

11.1.1 程序设计语言的基本概念 301

11.1.2 程序设计语言的发展及种类 303

11.1.3 程序设计语言的基本成分 308

11.1.4 程序设计语言的要素 312

11.1.5 编程语言的选择 314

11.1.6 面向对象语言的优点 316

11.1.7 面向对象语言的技术特点 317

11.2 编码规范 319

11.2.1 源程序文档化 320

11.2.2 数据说明 325

11.2.3 语句结构 326

11.2.4 输入/输出 328

11.3 编码风格 329

11.3.1 提高可重用性 330

11.3.2 提高可扩充性 331

11.3.3 提高健壮性 332

11.4 程序效率 332

11.4.1 程序效率的原则 333

11.4.2 算法对效率的影响 333

11.4.3 存储器效率 335

11.4.4 输入/输出效率 335

11.5 编程安全 336

11.5.1 冗余程序设计 336

11.5.2 防错性程序设计 337

11.6 小结 338

第12章 软件测试 339

12.1 软件测试概述 339

12.1.1 软件测试的定义 339

12.1.2 软件测试的基本策略 340

12.1.3 软件测试的基本原则 342

12.1.4 软件测试与软件开发各阶段的关系 343

12.1.5 测试文档 344

12.2 软件测试过程 346

12.2.1 单元测试 346

12.2.2 集成测试 348

12.2.3 系统测试 352

12.2.4 验收测试 360

12.3 测试技术 365

12.3.1 软件测试的目标 365

12.3.2 黑盒测试和白盒测试 365

12.3.3 逻辑覆盖 367

12.3.4 关于控制结构测试的一些讨论 368

12.3.5 基本路径测试 370

12.3.6 等价类划分 373

12.3.7 边界值分析 374

12.3.8 因果图 374

12.3.9 错误推测法 375

12.4 测试用例设计 375

12.5 测试计划 376

12.6 面向对象软件测试 379

12.6.1 测试策略 379

12.6.2 设计测试用例 380

12.7 小结 383

参考文献 385