- ISBN:9787111722663
- 装帧:一般胶版纸
- 册数:暂无
- 重量:暂无
- 开本:16开
- 页数:390
- 出版时间:2023-04-01
- 条形码:9787111722663 ; 978-7-111-72266-3
本书特色
软件工程理论与实践相结合的典范之作,通过一个贯穿全书的综合案例,详细介绍了软件开发全过程。
内容简介
本书以一个贯穿始终的软件项目案例为基础,讲述了软件项目开发中需求分析、概要设计、详细设计、编码、测试、交付以及维护等各个过程中涉及的理论、方法、技术、提交的产品和文档等。本书注重实效、系统、全面,通过贯穿始终案例的讲述可以让学习者在短时间内掌握软件项目开发的基本知识、基本过程,并有效提高实践能力。
目录
前言
第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 软件项目开发路线图9
1.3.2 软件项目管理路线图9
1.3.3 软件过程改进路线图10
1.4 软件开发的传统模型13
1.4.1 瀑布模型13
1.4.2 V模型14
1.4.3 原型模型14
1.4.4 增量式模型14
1.4.5 喷泉模型14
1.4.6 智能模型15
1.5 软件开发的敏捷模型15
1.5.1 Scrum16
1.5.2 XP20
1.5.3 DevOps23
1.5.4 规模化敏捷模型24
1.6 软件工程中的复用原则24
1.7 小结25
1.8 练习题25
第2章 软件工程模型与方法27
2.1 软件工程建模27
2.1.1 信息模型28
2.1.2 行为模型28
2.1.3 结构模型28
2.1.4 统一建模语言—UML28
2.2 软件工程方法30
2.2.1 面向过程(结构化)方法32
2.2.2 面向对象方法34
2.2.3 数据建模方法37
2.2.4 形式化方法37
2.2.5 快速原型方法38
2.2.6 面向构件方法38
2.2.7 面向代理方法39
2.2.8 敏捷开发方法41
2.2.9 模型驱动开发方法42
2.2.10 无代码开发模式43
2.3 软件工程方法对比44
2.4 软件逆向工程44
2.5 基于容器技术的软件工程化管理44
2.6 MSHD项目案例说明45
2.7 小结46
2.8 练习题46
第3章 软件项目的需求分析48
3.1 软件项目需求概述48
3.1.1 需求定义49
3.1.2 需求类型49
3.1.3 需求的重要性50
3.2 传统需求工程50
3.2.1 需求获取51
3.2.2 需求分析53
3.2.3 需求规格说明编写54
3.2.4 需求验证55
3.2.5 需求变更55
3.3 敏捷需求工程56
3.3.1 需求获取56
3.3.2 需求建模57
3.3.3 需求变更58
3.4 传统需求分析方法58
3.4.1 结构化需求分析方法58
3.4.2 面向对象需求分析方法61
3.5 敏捷需求分析73
3.5.1 影响地图73
3.5.2 需求池74
3.5.3 用户故事编写74
3.5.4 用户故事分解76
3.5.5 用户故事的INVEST准则76
3.5.6 用户故事地图78
3.6 需求的实例化78
3.6.1 BDD78
3.6.2 实例化需求80
3.7 需求分析的可视化工具81
3.7.1 IPO图81
3.7.2 判断矩阵81
3.7.3 功能列表82
3.8 原型设计工具83
3.8.1 Axure RP83
3.8.2 Balsamiq Mockups84
3.8.3 Prototype Composer84
3.8.4 GUI Design Studio84
3.9 需求规格说明文档84
3.10 MSHD项目案例—需求分析87
3.10.1 MSHD用户地图87
3.10.2 MSHD用户故事分解88
3.10.3 MSHD登录系统Story88
3.10.4 MSHD响应时间需求Story89
3.11 小结89
3.12 练习题89
第4章 软件项目的概要设计92
4.1 软件设计综述92
4.1.1 软件设计过程93
4.1.2 软件设计的原则93
4.1.3 软件设计的模式94
4.1.4 概要设计的定义96
4.2 软件架构设计96
4.2.1 单体架构(H/T体系结构)97
4.2.2 客户服务架构98
4.2.3 分层架构100
4.2.4 分布式架构103
4.2.5 面向服务的架构105
4.2.6 微服务架构107
4.2.7 领域驱动设计108
4.2.8 整洁架构115
4.2.9 插件架构115
4.2.10 无服务架构116
4.2.11 云原生架构119
4.2.12 面向工作流引擎122
4.3 应用程序框架124
4.3.1 前端框架125
4.3.2 后台业务框架129
4.3.3 后台数据框架134
4.3.4 应用组合架构136
4.3.5 Python Web应用架构137
4.3.6 基于技术中台的设计139
4.4 模块(构件)设计140
4.4.1 模块分解141
4.4.2 外部接口和内部接口设计142
4.4.3 模块的耦合度142
4.4.4 模块的内聚度143
4.5 数据模型设计145
4.5.1 数据库的设计过程147
4.5.2 数据库的概念结构设计147
4.5.3 数据库的逻辑结构设计149
4.5.4 数据库的物理结构设计153
4.5.5 文件设计154
4.6 用户界面设计155
4.7 结构化设计方法156
4.7.1 变换流与事务流158
4.7.2 功能模块划分158
4.7.3 数据流映射为结构图160
4.7.4 输入/输出设计161
4.8 面向对象的设计方法161
4.8.1 对象和类162
4.8.2 基于UML的设计图示163
4.8.3 面向对象设计步骤168
4.8.4 对象类设计实例171
4.9 敏捷设计176
4.9.1 腐化软件的味道176
4.9.2 防止腐化的设计177
4.10 概要设计文档标准178
4.11 MSHD项目案例—概要设计180
4.11.1 架构设计181
4.11.2 模块设计182
4.11.3 数据库设计183
4.11.4 界面设计184
4.12 小结184
4.13 练习题185
第5章 软件项目的详细设计187
5.1 详细设计的概念187
5.1.1 详细设计的定义187
5.1.2 详细设计的内容188
5.2 详细设计的表示工具188
5.2.1 程序流程图188
5.2.2 N-S图描述算法189
5.2.3 PAD描述算法190
5.2.4 决策表191
5.2.5 过程设计语言192
5.2.6 伪代码193
5.3 结构化详细设计194
5.3.1 算法194
5.3.2 JSD方法194
5.3.3 Warnier方法197
5.3.4 结构化详细设计的例子198
5.4 面向对象详细设计200
5.4.1 类之间关系的详细设计200
5.4.2 类的详细设计201
5.4.3 包的设计204
5.4.4 面向对象详细设计的例子204
5.5 敏捷化的整洁设计209
5.5.1 整洁设计209
5.5.2 基于TDD的详细设计209
5.6 详细设计文档210
5.7 MSHD项目案例—详细设计211
5.8 小结215
5.9 练习题215
第6章 软件项目的编程217
6.1 编程概述217
6.1.1 编程语言218
6.1.2 编程环境219
6.1.3 编程范式219
6.2 面向过程(结构化)编程219
6.2.1 算法实现220
6.2.2 控制结构220
6.2.3 编程过程规则222
6.3 面向对象编程225
6.3.1 对象和类225
6.3.2 面向对象编程的基本结构228
6.3.3 面向对象编程与面向
过程编程的对比229
6.4 声明式编程230
6.5 编程模式与策略231
6.5.1 面向组件编程231
6.5.2 面向服务编程232
6.5.3 面向切面编程233
6.5.4 低代码模式233
6.5.5 编程策略234
6.6 敏捷化编程实践234
6.6.1 测试驱动开发234
6.6.2 重构235
6.6.3 结对编程238
6.6.4 红-绿-蓝循环238
6.7 整洁代码244
6.7.1 什么是整洁代码244
6.7.2 整洁的命名244
6.7.3 整洁函数248
6.7.4 整洁注释248
6.7.5 整洁对象和数据结构249
6.7.6 整洁交付250
6.7.7 复用原则250
6.7.8 McCabe程序复杂度251
6.7.9 防御性编程252
6.7.10 编程标准和规范252
6.8 MSHD项目案例—编程过程
(系统构建)253
6.8.1 项目开发环境的建立253
6.8.2 编程标准和规范255
6.8.3 TDD&Refactor开发模式256
6.9 小结261
6.10 练习题261
第7章 软件项目的测试263
7.1 软件测试概述263
7.1.1 什么是软件测试264
7.1.2 软件测试技术综述265
7.2 静态测试266
7.2.1 文档审查266
7.2.2 代码检查268
7.2.3 技术评审269
7.3 白盒测试方法介绍270
7.4 白盒测试方法——基于控制流
的测试270
7.4.1 语句覆盖270
7.4.2 判定覆盖271
7.4.3 条件覆盖271
7.4.4 判定/条件覆盖272
7.4.5 条件组合覆盖272
7.4.6 路径覆盖272
7.4.7 ESTCA规则273
7.4.8 LCSAJ覆盖274
7.4.9 MC/DC覆盖274
7.5 白盒测试方法——基于数据流
的测试275
7.5.1 定义/使用测试275
7.5.2 程序片测试 277
7.6 白盒测试方法——变异测试279
7.7 黑盒测试方法280
7.7.1 边界值分析280
7.7.2 等价类划分281
7.7.3 规范导出法282
7.7.4 错误猜测法283
7.7.5 基于故障的测试方法283
7.7.6 因果图法283
7.7.7 决策表法284
7.7.8 场景法286
7.8 其他测试技术290
7.8.1 回归测试290
7.8.2 随机测试290
7.8.3 探索性测试290
7.9 软件测试级别292
7.9.1 单元测试292
7.9.2 集成测试294
7.9.3 系统测试296
7.9.4 验收测试298
7.9.5 上线测试299
7.10 面向对象的测试299
7.10.1 面向对象分析的测试299
7.10.2 面向对象设计的测试300
7.10.3 面向对象的单元测试300
7.10.4 面向对象的集成测试301
7.10.5 面向对象的系统测试302
7.11 测试过程管理302
7.11.1 软件测试计划303
7.11.2 软件测试设计304
7.11.3 软件测试开发307
7.11.4 软件测试执行307
7.11.5 软件测试跟踪308
7.11.6 软件测试评估与总结312
7.12 敏捷测试315
7.12.1 敏捷测试层次316
7.12.2 敏捷测试模型316
7.12.3 持续测试318
7.12.4 自动化测试319
7.13 软件测试过程的文档321
7.13.1 测试计划文档321
7.13.2 测试设计文档322
7.13.3 软件测试报告330
7.14 MSHD项目案例—软件
测试过程332
7.14.1 单元测试333
7.14.2 接口测试333
7.14.3 UI测试337
7.14.4 探索性测试340
7.14.5 性能测试342
7.14.6 测试结论345
作者简介
北京邮电大学软件学院副教授,一直致力于软件工程领域的教学和研究,撰写教材多本,百余所高校采用。获国家十一、十二五规划教材、北京市精品教材、北京市优质教材、校师德标兵、北京市教学成果一等奖1项、校教学成果一等奖3项、二等奖2项、特等奖1项、中国高校计算机教育MOOC联盟优秀课程、第三届全国双创实践新技术高峰论坛优秀论文二等奖、第二届全国高校混合式教学设计创新大赛三等奖、全国软件工程教学案例比赛优秀奖。
-
全图解零基础word excel ppt 应用教程
¥15.6¥48.0 -
有限与无限的游戏:一个哲学家眼中的竞技世界
¥37.4¥68.0 -
硅谷之火-人与计算机的未来
¥12.7¥39.8 -
机器学习
¥59.4¥108.0 -
情感计算
¥66.8¥89.0 -
LINUX企业运维实战(REDIS+ZABBIX+NGINX+PROMETHEUS+GRAFANA+LNMP)
¥48.3¥69.0 -
AI虚拟数字人:商业模式+形象创建+视频直播+案例应用
¥62.9¥89.8 -
LINUX实战——从入门到精通
¥48.3¥69.0 -
UNIX环境高级编程(第3版)
¥164.9¥229.0 -
剪映AI
¥52.8¥88.0 -
数据驱动的工业人工智能:建模方法与应用
¥68.3¥99.0 -
深度学习高手笔记 卷2:经典应用
¥90.9¥129.8 -
纹样之美:中国传统经典纹样速查手册
¥76.3¥109.0 -
UG NX 12.0数控编程
¥24.8¥45.0 -
MATLAB计算机视觉与深度学习实战(第2版)
¥90.9¥128.0 -
UN NX 12.0多轴数控编程案例教程
¥24.3¥38.0 -
微机组装与系统维护技术教程(第二版)
¥37.8¥43.0 -
Go 语言运维开发 : Kubernetes 项目实战
¥38.7¥79.0 -
明解C语言:实践篇
¥62.9¥89.8 -
Linux服务器架设实战(Linux典藏大系)
¥84.5¥119.0