• 代码中的软件工程
  • 代码中的软件工程
  • 代码中的软件工程
  • 代码中的软件工程
21年品牌 40万+商家 超1.5亿件商品

代码中的软件工程

全新正版 极速发货

54.97 6.1折 89.9 全新

库存5件

广东广州
认证卖家担保交易快速发货售后保障

作者孟宁

出版社人民邮电出版社

ISBN9787115578501

出版时间2022-05

装帧平装

开本16开

定价89.9元

货号1202634680

上书时间2024-06-10

书香美美

已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
商品简介

本书共五篇:篇介绍常用工具VS Code、Git 和正则表达式;第二篇以C 语言代码为例介绍工程化编程的基本方法,涵盖代码的风格和规范、模块化、可复用、可重入函数与线程安全等;第三篇介绍从需求分析到软件设计的基本建模方法——从需求分析开始,以UML 为工具完成用例建模、业务领域建模、对象交互建模,终形成设计方案;第四篇探讨软件的元素、结构、特性和描述方法,以及高质量软件的内涵等;第五篇回顾软件危机的前因后果,并将之与PSP、TSP、CMM/CMMI、敏捷开发、DevOps 等软件过程和生命周期管理衔接起来。

本书以国家精品在线开放课程——“工程化编程实战”为核心内容,增加了常用工具、需求分析与建模方法、软件结构和软件过程等相关内容,内容全面、新颖,实践性强。本书主要针对在校学生编写,适合开设相关专业的普通高校和高职院校作为主要教材,也可供不同层次的自学者学习参考。



作者简介
孟宁
中国科学技术大学软件学院专职教师,主讲“高级软件工程”“Linux操作系统分析”等课程。
他讲授的两门慕课获评国家精品在开放课程和本科课程,入选华为“智能基座”精品慕课,被中国高校计算机教育MOOC联盟评为优秀课程,荣获安徽省教学成果奖二等奖,等等。在线课程视频在读行学、网易云课堂、学堂在线、B站等在线平台的累计学员达20余万人。
他专注于Linux操作系统、软件工程、人工智能和区块链等技术领域,与华为、OPPO、龙芯中科等多家国内外企业和创业公司有技术合作。

目录
第 一篇 工欲善其事,必先利其器
第 1 章 编程“神器”Visual Studio Code  2
1.1 Visual Studio Code 的安装和基本用法  2
1.1.1 下载和安装Visual Studio Code  2
1.1.2 VS Code 界面概览  2
1.1.3 VS Code 的基本配置  3
1.1.4 VS Code 的基本用法  3
1.2 VS Code 为什么能这么牛  4
1.2.1 简洁而聚焦的产品定位贯穿始终  4
1.2.2 进程隔离的插件模型是“定海神针”   5
1.2.3 代码理解和调试——LSP 和DAP 两大协议“厥功至伟”  6
1.2.4 集大成的VS Code 远程开发环境  8
1.3 基于VS Code 的C/C++开发调试环境配置  9
1.3.1 安装C/C++插件  9
1.3.2 安装C/C++编译器和调试器  10
1.3.3 配置Visual Studio Code 构建任务  11
1.3.4 配置Visual Studio Code 调试环境  12
1.4 VS Code 远程开发环境配置  13
1.4.1 VS Code 远程开发环境概述  13
1.4.2 VS Code 远程开发环境Remote-SSH 配置  15
1.4.3 VS Code 远程开发环境Web Remote-code-server 配置  20
本章练习  21

第 2 章 五大场景玩转Git   22
2.1 Git 分布式版本控制系统  22
2.1.1 版本控制概述  22
2.1.2 Git 的历史  22
2.1.3 Git 的基本操作  23
2.2 场景一:Git 本地版本库的基本用法  25
2.2.1 安装Git  25
2.2.2 初始化一个本地版本库  25
2.2.3 查看当前工作区的状态  26
2.2.4 暂存更改的文件  27
2.2.5 把暂存区里的文件提交到仓库  28
2.2.6 Git 本地版本库的基本用法参考  30
2.3 场景二:Git 远程版本库的基本用法  31
2.3.1 克隆远程版本库  31
2.3.2 远程版本库的基本命令简介  31
2.3.3 Git 远程版本库的基本用法参考  32
2.4 Git 背后的设计理念  34
2.5 场景三:团队项目中的分叉合并  36
2.5.1 团队项目的一个参考工作流程  36
2.5.2 分支的基本用法  36
2.5.3 团队项目工作流程参考  39
2.6 场景四:Git Rebase 整理提交记录  40
2.7 场景五:Fork + Pull request 开发工作流程  43
本章练习  46

第3 章 正则表达式十步通关  48
3.1 为什么使用正则表达式  48
3.2 第 一关:基本的字符串搜索方法  49
3.3 第二关:同时搜索多个字符串的方法  50
3.4 第三关:在匹配字符串时的大小写问题  50
3.5 第四关:通配符的基本用法  51
3.6 第五关:匹配具有多种可能性的字符集  52
3.7 第六关:贪婪匹配和懒惰匹配  53
3.8 第七关:一些特殊位置和特殊字符  53
3.9 第八关:使用捕获组复用模式  54
3.10 第九关:基本的字符串搜索替换方法  54
3.11 第十关:在替换中使用捕获组复用模式  55
本章练习  56

第二篇 工程化编程实战
第4 章 简约而不简单——代码规范和代码风格  58
4.1 实验项目介绍  58
4.2 代码风格的原则:简明、易读、无二义性  61
4.3 编写高质量代码的基本方法  66
4.3.1 通过控制结构简化代码  66
4.3.2 通过数据结构简化代码  67
4.3.3 一定要有错误处理  68
4.3.4 性能优先策略背后隐藏的代价  68
4.3.5 拒绝修修补补,要不断重构代码  69
4.3.6 编码过程中的团队合作  69
本章练习  69

第5 章 模块化软件设计  71
5.1 模块化思想背后的基本原理  71
5.2 模块化代码的基本写法举例  72
5.3 传统单体集中式架构与微服务架构  78
5.4 模块化软件设计中的基本方法  80
5.4.1 KISS 原则  80
5.4.2 使用本地化外部接口来提高代码的适应能力  80
5.4.3 保持设计结构和代码结构的一致性  81
本章练习  81

第6 章 可复用软件设计  83
6.1 消费者复用和生产者复用  83
6.2 接口的基本概念  83
6.2.1 软件模块接口举例  84
6.2.2 微服务接口举例  86
6.2.3 接口与耦合度之间的关系  88
6.2.4 同步接口和异步接口  88
6.3 可复用软件模块的接口设计示例  89
6.3.1 通用LinkTable 模块的接口设计  89
6.3.2 给LinkTable 增加Callback 方式的接口  95
6.3.3 进一步改进LinkTable 的Callback 方式的接口  97
6.4 通用接口定义的基本方法  99
6.4.1 参数化上下文  99
6.4.2 移除前置条件  99
6.4.3 简化后置条件  100
本章练习  100

第7 章 可重入函数与线程安全  103
7.1 线程的基本概念  103
7.2 函数调用堆栈  103
7.3 可重入函数  105
7.4 什么是线程安全  106
7.5 LinkTable 软件模块的线程安全分析  108
本章练习  112

第8 章 子系统的工程化  113
8.1 menu 子系统的可复用接口设计  113
8.2 Makefile 工程文件举例  116
8.3 带参数的复杂命令函数接口的写法  117
8.4 看待软件质量的几个不同角度  118
8.5 编程的基本方法和原则  119
本章练习  120

第三篇 需求分析和软件设计
第9 章 获取需求的主要方法  122
9.1 什么是需求  122
9.2 为什么需求非常重要  122
9.3 有哪些类型的需求  123
9.4 有哪些和需求相关的人员  123
9.5 获取需求的主要方法  124
9.6 高质量的需求是什么样子  124
9.6.1 便于验证的需求是高质量的  124
9.6.2 解决了内在冲突的需求是高质量的  124
9.6.3 高质量需求的典型特征  125
9.7 绘图工具VS Code 和draw.io   125
9.7.1 在线绘图工具draw.io  125
9.7.2 安装draw.io 插件  126
9.7.3 快速入门VS Code+draw.io 画图  127
本章练习  130

第 10 章 对需求进行分析和建模  131
10.1 原型化方法和建模的方法  131
10.2 用例建模  131
10.2.1 什么是用例  131
10.2.2 用例的三个抽象层级  132
10.2.3 用例建模的基本步骤  133
10.2.4 准确提取用例的基本方法  134
10.2.5 用例图的基本画法  135
10.3 业务领域建模  136
10.3.1 面向对象分析涉及的基本概念  136
10.3.2 业务领域建模的基本步骤  137
10.3.3 头脑风暴的具体做法  138
10.3.4 业务领域概念分类的方法  139
10.4 关联类及其关系数据模型  140
10.4.1 关联类的基本概念及其UML 类图  140
10.4.2 关联类的面向对象设计与实现  141
10.4.3 关联类的关系数据模型  142
10.5 关系数据的MongoDB 数据建模  143
10.5.1 基于文档的数据库MongoDB  143
10.5.2 一对多关系建模的三种基础方案  144
10.5.3 几种反范式设计方法  147
10.5.4 MongoDB 数据建模总结  150
10.6 软件业务概念的原型  150
本章练习  151

第 11 章 从需求分析向软件设计的过渡  153
11.1 敏捷统一过程  153
11.1.1 瀑布模型  153
11.1.2 统一过程  153
11.1.3 敏捷统一过程的计划阶段  154
11.1.4 敏捷统一过程的增量阶段  154
11.2 对象交互建模  155
11.2.1 对象交互建模的基本步骤  155
11.2.2 找出关键步骤进行剧情描述  156
11.2.3 将剧情描述转换成剧情描述表  158
11.2.4 将剧情描述表转换成时序图  158
11.2.5 从分析时序图到设计时序图  161
11.2.6 完整的“借书”用例对象交互建模  163
11.3 形成软件设计方案  164
11.3.1 设计类图和分析类图  164
11.3.2 形成设计类图的基本步骤  165
11.3.3 形成软件设计方案的整体思路  169
本章练习  170

第四篇 软件科学基础概论
第 12 章 软件是什么  172
12.1 软件的基本构成元素  172
12.1.1 对象  172
12.1.2 函数和变量/常量  172
12.1.3 指令和操作数  173
12.1.4 0 和1 是什么  174
12.2 软件的基本结构  176
12.2.1 顺序结构  176
12.2.2 分支结构  176
12.2.3 循环结构  178
12.2.4 函数调用框架  179
12.2.5 继承和对象组合  180
12.3 软件中的一些特殊机制  181
12.3.1 回调函数  181
12.3.2 多态  182
12.3.3 闭包  183
12.3.4 异步调用  184
12.3.5 匿名函数  185
12.4 软件的内在特性  186
12.4.1 前所未有的复杂度  186
12.4.2 抽象思维和逻辑思维  186
12.4.3 唯一不变的就是变化本身  187
12.4.4 难以达成的概念完整性和一致性  188
本章练习  188

第 13 章 软件设计模式  190
13.1 什么是设计模式  190
13.1.1 软件设计模式的优点  190
13.1.2 软件设计模式的含义和构成  191
13.2 软件设计模式的分类  191
13.3 常用的软件设计模式  192
13.4 观察者模式举例  196
13.5 软件设计模式背后的设计原则  200
13.5.1 开闭原则  200
13.5.2 丽斯科夫替换原则  200
13.5.3 依赖倒置原则  200
13.5.4 单一职责原则  201
13.5.5 德米特法则  201
13.5.6 合成复用原则  201
13.5.7 反思软件设计模式的根基  202
本章练习  202

第 14 章 软件架构举例  204
14.1 三层架构  204
14.2 MVC 架构  204
14.2.1 什么是MVC  204
14.2.2 MVC 模式  205
14.2.3 MVC 架构  207
14.3 MVVM 架构  208
14.3.1 什么是MVVM  208
14.3.2 Vue.js 的基本用法  209
14.3.3 Vue.js 背后的MVVM  211
本章练习  216

第 15 章 软件架构风格与描述方法  217
15.1 构建软件架构的基本方法  217
15.2 软件架构风格与策略  218
15.2.1 管道-过滤器  218
15.2.2 客户-服务器  219
15.2.3 P2P   219
15.2.4 发布/订阅  219
15.2.5 CRUD  220
15.2.6 层次化  221
15.3 软件架构的描述方法  221
15.3.1 分解视图  221
15.3.2 依赖视图  222
15.3.3 泛化视图  222
15.3.4 执行视图  223
15.3.5 实现视图  223
15.3.6 部署视图  223
15.3.7 工作分配视图  223
本章练习  224

第 16 章 什么是高质量软件  225
16.1 软件质量的3 种视角  225
16.1.1 软件质量的含义  225
16.1.2 产品视角下的软件质量  225
16.1.3 过程视角下的软件质量  228
16.1.4 价值视角下的软件质量  229
16.2 几种重要的软件质量属性  230
16.2.1 易于修改维护  230
16.2.2 良好的性能表现  231
16.2.3 安全性  231
16.2.4 可靠性  231
16.2.5 健壮性  232
16.2.6 易用性  232
16.2.7 商业目标  232
本章练习  234

第五篇 软件危机的前生后世
第 17 章 软件危机概述  236
17.1 软件危机产生的背景  236
17.2 软件危机的主要表现及根源  237
17.3 有关软件危机的争论  238
本章练习  239

第 18 章 软件过程模型  240
18.1 软件的生命周期概述  240
18.2 瀑布模型  241
18.3 原型化的瀑布模型  242
18.4 V 模型  243
18.5 分阶段的增量和迭代开发过程  243
18.6 螺旋模型  244
本章练习  245

第 19 章 PSP 和TSP  246
19.1 个体和团队  246
19.2 个体软件过程  246
19.2.1 PSP 0   247
19.2.2 PSP 0.1   247
19.2.3 PSP 1   247
19.2.4 PSP 1.1   248
19.2.5 PSP 2   248
19.2.6 PSP 2.1   249
19.2.7 PSP 3   250
19.3 团队软件过程  250
19.3.1 团队概述  250
19.3.2 TSP 概述  251
19.3.3 TSP 的基本原理  251
19.3.4 TSP 的基本工作方法  252
本章练习  253

第 20 章 CMM/CMMI   254
20.1 CMM/CMMI 简介  254
20.2 CMM/CMMI 的作用  255
20.3 CMM/CMMI 的主要内容  256
20.4 CMMI 的评估过程  257
本章练习  257

第 21 章 敏捷方法  258
21.1 敏捷方法产生的背景  258
21.2 敏捷软件开发宣言及所遵循的原则  258
21.3 Scrum 敏捷开发方法  259
本章练习  263

第 22 章 DevOps   265
22.1 什么是DevOps . 265
22.2 DevOps 和敏捷方法  266
22.3 DevOps 和精益原则  266
22.4 DevOps 和全栈自动化  267
本章练习  269

测验题  270

内容摘要
本书共五篇:第一篇介绍常用工具VSCode、Git和正则表达式;第二篇以C语言代码为例介绍工程化编程的基本方法,涵盖代码的风格和规范、模块化、可复用、可重入函数与线程安全等;第三篇介绍从需求分析到软件设计的基本建模方法——从需求分析开始,以UML为工具完成用例建模、业务领域建模、对象交互建模,最终形成设计方案;第四篇探讨软件的元素、结构、特性和描述方法,以及高质量软件的内涵等;第五篇回顾软件危机的前因后果,并将之与PSP、TSP、CMM/CMMI、敏捷开发、DevOps等软件过程和生命周期管理衔接起来。
本书以国家精品在线开放课程——“工程化编程实战”为核心内容,增加了常用工具、需求分析与建模方法、软件结构和软件过程等相关内容,内容全面、新颖,实践性强。本书主要针对在校学生编写,适合开设相关专业的普通高校和高职院校作为主要教材,也可供不同层次的自学者学习参考。

主编推荐
1.以在线开放课程“工程化编程实战”为核心内容,增加了常用工具、需求分析与建模方法、软件架构和软件过程等相关内容。

2.作者系中国科学技术大学软件学院软件工程10年教学改革的实践者,具有近20年代码编程+12年软件工程教学经验,他的慕课荣获“国家精品在线开放课程”。

3.本书反其道而行之,以“实用”为原则构成全书体系,从写代码的工具着手,逐步深入到模块化设计、需求建模、设计模式和软件架构等内容,章末设有练习环节,并提供可下载的配套源代码文件,让读者在做中学,进而从“程序员”修炼成“软件工程师”。 

4. 软件工程领域刘强、朱少民、邹欣、陈振宇倾情推荐!

媒体评论
这本书显著的特点是用代码诠释工程化开发的基本原理,注重在编程实践中学习软件工程。除此之外,这本书结构编排新颖,没有先谈软件危机、软件过程等软件工程的诸多概念,而是从学生熟悉的工具和代码岀发,逐步深入到模块化设计、需求建模、设计模式和软件架构等内容,显然这样的结构编排对学习者更加友好,让学习曲线更加平滑。
——刘强,清华大学软件学院副教授

当我看到这本书要“献给软件相关从业者和哲学爱好者!”,想起几年前斯坦福大学教授约翰·奧斯特豪特(John Ousterhout)撰写的 A Phiosophy of Software Design,约翰在他的书中强调复杂度是软件工程的核心。面对复杂性问题,需要分解问题并逐个击破,这正是这本书提到的还原论。这本书打破之前软件工程类图书的惯例,从还原论到系统论,从实践到理论,帮助读者在实践中不断领悟“工程化”,进而从“程序员”修炼成“软件工程师”。
——朱少民,同济大学特聘教授,《软件测试方法和技术》《敏捷测试:以持续测试促进持续交付》作者

这本书很好接地气,从基本而实用的工具和场景入手,让学生通过实践掌握软件工程的基本原理。这种方法防止了“眼高手低”“从入门到放弃”的现象,希望更多的学校老师采用这样的教学方法!
——邹欣,CSDN副总裁,原微软开发经理,《构建之法:现代软件工程》作者

Talk is cheap, show me the code.(说话很容易,给我看代码。)代码是软件工程核心的部分。这本书以“工程化编程实战”课程为核心,涵盖代码的风格和规范、模块化、可复用、线程安全等,结合常用工具、需求分析与建模方法、软件结构和软件过程等内容,以从实践到理论、从还原论到系统论等不同的角度提岀深入的思考和独到的见解,是一本理论与实践兼备的教材!
——陈振宇,南京大学软件学院教授,南京慕测信息科技有限公司

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP