注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络软件与程序设计C/C++及其相关现代C++软件架构:方法与实践

现代C++软件架构:方法与实践

现代C++软件架构:方法与实践

定 价:¥139.00

作 者: [美]艾德里安·奥斯特洛夫斯基,[波]彼得亚雷·加奇科夫斯基
出版社: 机械工业出版社
丛编项:
标 签: 暂缺

购买这本书可以去


ISBN: 9787111736769 出版时间: 2023-10-01 包装: 平装-胶订
开本: 16开 页数: 字数:  

内容简介

  本书结合现代C++特性,详细介绍软件架构的实用方法及实践,探索了如何在单体应用程序中使用成熟的设计模式,如何使应用程序具有健壮性、安全性、高性能和可维护性,以及如何使用面向服务的架构、微服务、容器和无服务器计算等架构模式构建连接多个单体应用程序的高级服务。全书共分为四部分:第一部分包含第1~3章,介绍软件架构的概念及组件,包括软件架构的重要性和良好的设计原则、架构风格、功能性和非功能性需求;第二部分包含第4~7章,介绍C++软件的开发和设计,包括架构与系统设计、C++语言特性、设计模式,以及构建和打包;第三部分包含第8~11章,介绍架构的质量属性,包括测试、持续集成和持续部署、安全性、性能;第四部分包含第12~15章,介绍云原生设计原则,包括面向服务的架构、微服务、容器、云原生设计。本书适合C++程序员、架构师等相关技术人员阅读。

作者简介

暂缺《现代C++软件架构:方法与实践》作者简介

图书目录

目  录Contents
前 言
第一部分 软件架构的概念和组成部分
第1章 软件架构的重要性和良好的
设计原则 2
1.1 技术要求 2
1.2 软件架构 2
1.3 适当架构的重要性 3
1.3.1 软件腐朽 4
1.3.2 意外架构 4
1.4 优秀架构的基本原理 4
1.4.1 架构上下文 4
1.4.2 相关方 4
1.4.3 业务和技术环境 5
1.5 使用敏捷原则开发架构 5
1.6 C++的哲学思想 7
1.7 SOLID和DRY原则 9
1.7.1 单一责任原则 9
1.7.2 开放封闭原则 9
1.7.3 里氏替换原则 10
1.7.4 接口隔离原则 11
1.7.5 依赖倒置原则 12
1.7.6 DRY原则 15
1.8 耦合和内聚 16
1.8.1 耦合 16
1.8.2 内聚 17
1.9 总结 19
问题 19
进一步阅读 19
第2章 架构风格 20
2.1 技术要求 20
2.2 有状态风格和无状态风格 20
2.3 单体风格 23
2.4 服务和微服务 24
2.5 基于事件的架构 27
2.5.1 基于事件的常见拓扑结构 28
2.5.2 事件溯源 29
2.6 分层架构 30
2.7 基于模块的架构 32
2.8 总结 32
问题 33
进一步阅读 33
第3章 功能性和非功能性需求 34
3.1 从源代码生成文档的技术
要求 34
3.2 需求的类型 34
3.2.1 功能性需求 35
3.2.2 非功能性需求 35
3.3 架构级重要需求 36
3.3.1 指示信号 37
3.3.2 阻碍以及应对方法 37
3.4 从各种来源收集需求 38
3.4.1 了解上下文 38
3.4.2 了解现有文档 39
3.4.3 了解相关方 39
3.4.4 收集来自相关方的需求 39
3.5 文档化需求 40
3.5.1 文档化上下文 40
3.5.2 文档化范围 41
3.5.3 文档化功能性需求 41
3.5.4 文档化非功能性需求 42
3.5.5 管理文档的版本历史 42
3.5.6 文档化敏捷项目中的需求 43
3.5.7 其他部分 43
3.6 文档化系统架构 44
3.6.1 4+1模型 44
3.6.2 C4模型 48
3.6.3 文档化敏捷项目中的架构 51
3.7 选择文档的正确视图 51
3.7.1 功能视图 52
3.7.2 信息视图 52
3.7.3 并发视图 53
3.7.4 开发视图 53
3.7.5 部署和操作视图 54
3.8 生成文档 55
3.8.1 生成需求文档 55
3.8.2 从代码生成图 55
3.8.3 从代码生成API文档 55
3.9 总结 60
问题 60
进一步阅读 61
第二部分 C++软件的设计和开发
第4章 架构与系统设计 64
4.1 技术要求 64
4.2 分布式系统的特性 64
4.2.1 不同的服务模型以及何时
使用它们 65
4.2.2 避免分布式计算的错误假设 67
4.2.3 CAP定理和最终的一致性 70
4.3 系统容错性和可用性 72
4.3.1 计算系统的可用性 72
4.3.2 构建容错系统 73
4.3.3 故障检测 75
4.3.4 减少故障的影响 76
4.4 系统集成 78
4.4.1 管道和过滤器模式 78
4.4.2 消费者竞争 78
4.4.3 从旧系统过渡 79
4.5 在规模化部署时保持性能 80
4.5.1 CQRS和事件溯源 80
4.5.2 缓存 82
4.6 系统部署 84
4.6.1 边车模式 84
4.6.2 零停机时间部署 87
4.6.3 外部配置存储 89
4.7 管理API 89
4.8 总结 90
问题 90
进一步阅读 91
第5章 利用C++语言特性 92
5.1 技术要求 92
5.2 设计优秀的API 93
5.2.1 利用RAII 93
5.2.2 指定C++容器接口 93
5.2.3 在接口中使用指针 96
5.2.4 指定前置条件和后置条件 97
5.2.5 使用内联命名空间 97
5.2.6 使用std::optional 98
5.3 编写声明式代码 99
5.3.1 展示特色商品 101
5.3.2 标准范围介绍 105
5.4 在编译时移动计算 107
5.5 利用安全类型的力量 108
5.6 编写模块化的C++代码 112
5.7 总结 114
问题 114
进一步阅读 115
第6章 设计模式和C++ 116
6.1 技术要求 116
6.2 C++编程习语 116
6.2.1 使用RAII保护自动执行
作用域的退出操作 117
6.2.2 管理可复制性和可移动性 117
6.2.3 使用隐藏的友元 119
6.2.4 使用复制和交换习语提供
异常安全性 120
6.2.5 编写niebloid 121
6.2.6 基于策略的设计习语 123
6.3 奇异递归模板模式 124
6.3.1 知道何时使用动态多态性和
静态多态性 124
6.3.2 实现静态多态性 125
6.3.3 插曲—使用类型擦除技术 127
6.4 创建对象 128
6.4.1 使用工厂 128
6.4.2 使用构建器 132
6.5 在C++中跟踪状态和访问对象 135
6.6 有效地处理内存 138
6.6.1 使用SSO/SOO减少动态
分配 138
6.6.2 通过COW来节省内存 139
6.6.3 使用多态分配器 139
6.7 总结 143
问题 143
进一步阅读 144
第7章 构建和打包 145
7.1 技术要求 145
7.2 充分利用编译器 145
7.2.1 使用多个编译器 146
7.2.2 减少构建时间 146
7.2.3 查找潜在的代码问题 149
7.2.4 使用以编译器为中心的
工具 150
7.3 抽象构建过程 151
7.3.1 认识CMake 151
7.3.2 使用生成器表达式 154
7.4 使用外部模块 155
7.4.1 获取依赖项 155
7.4.2 使用查找脚本 156
7.4.3 编写查找脚本 157
7.4.4 使用Conan软件包管理器 159
7.4.5

本目录推荐