展开全部

主编推荐语

工程化编程实战:工具、编码、需求分析、软件结构和过程管理

内容简介

本书涵盖了五大部分内容:一是常用工具VS Code、Git和正则表达式;二是以C语言代码为例介绍工程化编程的基本方法,涵盖了代码风格规范、模块化、可重用、线程安全等;三是一种从需求分析到软件设计的基本建模方法,从需求分析开始以UML为工具完成用例建模、业务建模、对象交互建模,最终形成设计方案的一整套基本方法;四是探讨软件的内在元素、结构、特性和描述方法,以及高质量软件的内涵;五是历史性地回顾软件危机的前因后果,并与CMM/CMMI、敏捷开发、DevOps等软件过程和生命周期管理衔接起来。本书以国家精品在线开放课程“工程化编程实战”为核心内容,增加了常用工具、需求分析与建模方法、软件结构和软件过程等相关内容,内容全面、新颖、实践性强。

目录

  • 版权信息
  • 版 权
  • 内容提要
  • 前 言
  • 资源与支持
  • 第一篇 工欲善其事,必先利其器
  • 第1章 编程“神器”Visual Studio Code
  • 1.1 Visual Studio Code的安装和基本用法
  • 1.1.1 下载和安装Visual Studio Code
  • 1.1.2 VS Code界面概览
  • 1.1.3 VS Code的基本配置
  • 1.1.4 VS Code的基本用法
  • 1.2 VS Code为什么能这么牛[2]
  • 1.2.1 简洁而聚焦的产品定位贯穿始终
  • 1.2.2 进程隔离的插件模型是“定海神针”
  • 1.2.3 代码理解和调试——LSP和DAP两大协议“厥功至伟”
  • 1.2.4 集大成的VS Code远程开发环境
  • 1.3 基于VS Code的C/C++开发调试环境配置
  • 1.3.1 安装C/C++插件
  • 1.3.2 安装C/C++编译器和调试器
  • 1.3.3 配置Visual Studio Code构建任务
  • 1.3.4 配置Visual Studio Code调试环境
  • 1.4 VS Code远程开发环境配置
  • 1.4.1 VS Code远程开发环境概述
  • 1.4.2 VS Code远程开发环境Remote-SSH配置
  • 1.4.3 VS Code远程开发环境Web Remote-code-schmerver配置
  • 本章练习
  • 第2章 五大场景玩转Git
  • 2.1 Git分布式版本控制系统
  • 2.1.1 版本控制概述
  • 2.1.2 Git的历史
  • 2.1.3 Git的基本操作
  • 2.2 场景一:Git本地版本库的基本用法
  • 2.2.1 安装Git
  • 2.2.2 初始化一个本地版本库
  • 2.2.3 查看当前工作区的状态
  • 2.2.4 暂存更改的文件
  • 2.2.5 把暂存区里的文件提交到仓库
  • 2.2.6 Git本地版本库的基本用法参考
  • 2.3 场景二:Git远程版本库的基本用法
  • 2.3.1 克隆远程版本库
  • 2.3.2 远程版本库的基本命令简介
  • 2.3.3 Git远程版本库的基本用法参考
  • 2.4 Git背后的设计理念
  • 2.5 场景三:团队项目中的分叉合并
  • 2.5.1 团队项目的一个参考工作流程
  • 2.5.2 分支的基本用法
  • 2.5.3 团队项目工作流程参考
  • 2.6 场景四:Git Rebase整理提交记录
  • 2.7 场景五:Fork + Pull request开发工作流程
  • 本章练习
  • 第3章 正则表达式十步通关
  • 3.1 为什么使用正则表达式
  • 3.2 第一关:基本的字符串搜索方法
  • 3.3 第二关:同时搜索多个字符串的方法
  • 3.4 第三关:在匹配字符串时的大小写问题
  • 3.5 第四关:通配符的基本用法
  • 3.6 第五关:匹配具有多种可能性的字符集
  • 3.7 第六关:贪婪匹配和懒惰匹配
  • 3.8 第七关:一些特殊位置和特殊字符
  • 3.9 第八关:使用捕获组复用模式
  • 3.10 第九关:基本的字符串搜索替换方法
  • 3.11 第十关:在替换中使用捕获组复用模式
  • 本章练习
  • 第二篇 工程化编程实战
  • 第4章 简约而不简单——代码规范和代码风格
  • 4.1 实验项目介绍
  • 4.2 代码风格的原则:简明、易读、无二义性
  • 4.3 编写高质量代码的基本方法
  • 4.3.1 通过控制结构简化代码
  • 4.3.2 通过数据结构简化代码
  • 4.3.3 一定要有错误处理
  • 4.3.4 性能优先策略背后隐藏的代价
  • 4.3.5 拒绝修修补补,要不断重构代码
  • 4.3.6 编码过程中的团队合作
  • 本章练习
  • 第5章 模块化软件设计
  • 5.1 模块化思想背后的基本原理
  • 5.2 模块化代码的基本写法举例
  • 5.3 传统单体集中式架构与微服务架构
  • 5.4 模块化软件设计中的基本方法
  • 5.4.1 KISS原则
  • 5.4.2 使用本地化外部接口来提高代码的适应能力
  • 5.4.3 保持设计结构和代码结构的一致性
  • 本章练习
  • 第6章 可复用软件设计
  • 6.1 消费者复用和生产者复用
  • 6.2 接口的基本概念
  • 6.2.1 软件模块接口举例
  • 6.2.2 微服务接口举例
  • 6.2.3 接口与耦合度之间的关系
  • 6.2.4 同步接口和异步接口
  • 6.3 可复用软件模块的接口设计示例
  • 6.3.1 通用LinkTable模块的接口设计
  • 6.3.2 给LinkTable增加Callback方式的接口
  • 6.3.3 进一步改进LinkTable的Callback方式的接口
  • 6.4 通用接口定义的基本方法
  • 6.4.1 参数化上下文
  • 6.4.2 移除前置条件
  • 6.4.3 简化后置条件
  • 本章练习
  • 第7章 可重入函数与线程安全
  • 7.1 线程的基本概念
  • 7.2 函数调用堆栈
  • 7.3 可重入函数
  • 7.4 什么是线程安全
  • 7.5 LinkTable软件模块的线程安全分析
  • 本章练习
  • 第8章 子系统的工程化
  • 8.1 menu子系统的可复用接口设计
  • 8.2 Makefile工程文件举例
  • 8.3 带参数的复杂命令函数接口的写法
  • 8.4 看待软件质量的几个不同角度
  • 8.5 编程的基本方法和原则
  • 本章练习
  • 第三篇 需求分析和软件设计
  • 第9章 获取需求的主要方法
  • 9.1 什么是需求
  • 9.2 为什么需求非常重要
  • 9.3 有哪些类型的需求
  • 9.4 有哪些和需求相关的人员
  • 9.5 获取需求的主要方法
  • 9.6 高质量的需求是什么样子
  • 9.6.1 便于验证的需求是高质量的
  • 9.6.2 解决了内在冲突的需求是高质量的
  • 9.6.3 高质量需求的典型特征
  • 9.7 绘图工具VS Code和draw.io
  • 9.7.1 在线绘图工具draw.io
  • 9.7.2 安装draw.io插件
  • 9.7.3 快速入门VS Code+draw.io画图
  • 本章练习
  • 第10章 对需求进行分析和建模
  • 10.1 原型化方法和建模的方法
  • 10.2 用例建模[1]
  • 10.2.1 什么是用例
  • 10.2.2 用例的三个抽象层级
  • 10.2.3 用例建模的基本步骤
  • 10.2.4 准确提取用例的基本方法
  • 10.2.5 用例图的基本画法
  • 10.3 业务领域建模
  • 10.3.1 面向对象分析涉及的基本概念
  • 10.3.2 业务领域建模的基本步骤
  • 10.3.3 头脑风暴的具体做法
  • 10.3.4 业务领域概念分类的方法
  • 10.4 关联类及其关系数据模型
  • 10.4.1 关联类的基本概念及其UML类图
  • 10.4.2 关联类的面向对象设计与实现
  • 10.4.3 关联类的关系数据模型
  • 10.5 关系数据的MongoDB数据建模[2]
  • 10.5.1 基于文档的数据库MongoDB
  • 10.5.2 一对多关系建模的三种基础方案
  • 10.5.3 几种反范式设计方法
  • 10.5.4 MongoDB数据建模总结
  • 10.6 软件业务概念的原型
  • 本章练习
  • 第11章 从需求分析向软件设计的过渡
  • 11.1 敏捷统一过程
  • 11.1.1 瀑布模型
  • 11.1.2 统一过程
  • 11.1.3 敏捷统一过程的计划阶段
  • 11.1.4 敏捷统一过程的增量阶段
  • 11.2 对象交互建模
  • 11.2.1 对象交互建模的基本步骤
  • 11.2.2 找出关键步骤进行剧情描述
  • 11.2.3 将剧情描述转换成剧情描述表
  • 11.2.4 将剧情描述表转换成时序图
  • 11.2.5 从分析时序图到设计时序图
  • 11.2.6 完整的“借书”用例对象交互建模
  • 11.3 形成软件设计方案
  • 11.3.1 设计类图和分析类图
  • 11.3.2 形成设计类图的基本步骤
  • 11.3.3 形成软件设计方案的整体思路
  • 本章练习
  • 第四篇 软件科学基础概论
  • 第12章 软件是什么
  • 12.1 软件的基本构成元素
  • 12.1.1 对象
  • 12.1.2 函数和变量/常量
  • 12.1.3 指令和操作数
  • 12.1.4 0和1是什么
  • 12.2 软件的基本结构
  • 12.2.1 顺序结构
  • 12.2.2 分支结构
  • 12.2.3 循环结构
  • 12.2.4 函数调用框架
  • 12.2.5 继承和对象组合
  • 12.3 软件中的一些特殊机制
  • 12.3.1 回调函数
  • 12.3.2 多态
  • 12.3.3 闭包
  • 12.3.4 异步调用
  • 12.3.5 匿名函数
  • 12.4 软件的内在特性
  • 12.4.1 前所未有的复杂度
  • 12.4.2 抽象思维和逻辑思维
  • 12.4.3 唯一不变的就是变化本身
  • 12.4.4 难以达成的概念完整性和一致性
  • 本章练习
  • 第13章 软件设计模式
  • 13.1 什么是设计模式
  • 13.1.1 软件设计模式的优点
  • 13.1.2 软件设计模式的含义和构成
  • 13.2 软件设计模式的分类
  • 13.3 常用的软件设计模式
  • 13.4 观察者模式举例
  • 13.5 软件设计模式背后的设计原则
  • 13.5.1 开闭原则
  • 13.5.2 丽斯科夫替换原则
  • 13.5.3 依赖倒置原则
  • 13.5.4 单一职责原则
  • 13.5.5 德米特法则
  • 13.5.6 合成复用原则
  • 13.5.7 反思软件设计模式的根基
  • 本章练习
  • 第14章 软件架构举例
  • 14.1 三层架构
  • 14.2 MVC架构
  • 14.2.1 什么是MVC
  • 14.2.2 MVC模式
  • 14.2.3 MVC架构
  • 14.3 MVVM架构
  • 14.3.1 什么是MVVM
  • 14.3.2 Vue.js的基本用法
  • 14.3.3 Vue.js背后的MVVM
  • 本章练习
  • 第15章 软件架构风格与描述方法
  • 15.1 构建软件架构的基本方法
  • 15.2 软件架构风格与策略
  • 15.2.1 管道-过滤器
  • 15.2.2 客户-服务器
  • 15.2.3 P2P
  • 15.2.4 发布/订阅
  • 15.2.5 CRUD
  • 15.2.6 层次化
  • 15.3 软件架构的描述方法
  • 15.3.1 分解视图
  • 15.3.2 依赖视图
  • 15.3.3 泛化视图
  • 15.3.4 执行视图
  • 15.3.5 实现视图
  • 15.3.6 部署视图
  • 15.3.7 工作分配视图
  • 本章练习
  • 第16章 什么是高质量软件
  • 16.1 软件质量的3种视角
  • 16.1.1 软件质量的含义
  • 16.1.2 产品视角下的软件质量
  • 16.1.3 过程视角下的软件质量
  • 16.1.4 价值视角下的软件质量
  • 16.2 几种重要的软件质量属性
  • 16.2.1 易于修改维护
  • 16.2.2 良好的性能表现
  • 16.2.3 安全性
  • 16.2.4 可靠性
  • 16.2.5 健壮性
  • 16.2.6 易用性
  • 16.2.7 商业目标
  • 本章练习
  • 第五篇 软件危机的前生后世
  • 第17章 软件危机概述
  • 17.1 软件危机产生的背景
  • 17.2 软件危机的主要表现及根源
  • 17.3 有关软件危机的争论
  • 本章练习
  • 第18章 软件过程模型
  • 18.1 软件的生命周期概述
  • 18.2 瀑布模型
  • 18.3 原型化的瀑布模型
  • 18.4 V模型
  • 18.5 分阶段的增量和迭代开发过程
  • 18.6 螺旋模型
  • 本章练习
  • 第19章 PSP和TSP
  • 19.1 个体和团队
  • 19.2 个体软件过程
  • 19.2.1 PSP 0
  • 19.2.2 PSP 0.1
  • 19.2.3 PSP 1
  • 19.2.4 PSP 1.1
  • 19.2.5 PSP 2
  • 19.2.6 PSP 2.1
  • 19.2.7 PSP 3
  • 19.3 团队软件过程
  • 19.3.1 团队概述
  • 19.3.2 TSP概述
  • 19.3.3 TSP的基本原理
  • 19.3.4 TSP的基本工作方法
  • 本章练习
  • 第20章 CMM/CMMI
  • 20.1 CMM/CMMI简介
  • 20.2 CMM/CMMI的作用
  • 20.3 CMM/CMMI的主要内容
  • 20.4 CMMI的评估过程
  • 本章练习
  • 第21章 敏捷方法
  • 21.1 敏捷方法产生的背景
  • 21.2 敏捷软件开发宣言及所遵循的原则
  • 21.3 Scrum敏捷开发方法[1]
  • 本章练习
  • 第22章 DevOps
  • 22.1 什么是DevOps
  • 22.2 DevOps和敏捷方法
  • 22.3 DevOps和精益原则
  • 22.4 DevOps和全栈自动化
  • 本章练习
  • 测验题
展开全部

评分及书评

尚无评分
目前还没人评分

出版方

人民邮电出版社

人民邮电出版社是工业和信息化部主管的大型专业出版社,成立于1953年10月1日。人民邮电出版社坚持“立足信息产业、面向现代社会、传播科学知识、服务科教兴国”,致力于通信、计算机、电子技术、教材、少儿、经管、摄影、集邮、旅游、心理学等领域的专业图书出版。