全球C++软件开发顾问约翰·拉科斯(John Lakos)新书即将上架
  uhN77eccXzf5 2023年11月02日 50 0


全球C++软件开发顾问约翰·拉科斯(John Lakos)新作《大规模C++软件开发 卷1:过程与架构》上架啦!

本书专为有经验的C++软件开发者、系统设计师人员编写,架构师或项目负责人等从事大型软件开发工作的人员也将通过本书解决实际工作中的问题。

大规模C++软件开发 卷1:过程与架构

全球C++软件开发顾问约翰·拉科斯(John Lakos)新书即将上架_c++

  • 畅销图书作者约翰·拉科斯(John Lakos)新作 ;
  • 大规模C++编程全解 ;
  • 作者根据超过30年的实践经验全面展示大规模开发所需的过程、方法、技术和工具;
  • 系统介绍设计概念,为大规模的项目奠定基础。

编写可靠且可维护的C++软件并非易事,如果还要将其设计成可规模化的,则更是挑战重重。创建大规模系统要求开发人员除了掌握大多数畅销书中的理论概念,还要对逻辑设计有务实、深刻的洞察。要更进一步,在企业级规模系统上取得成功,开发人员还必须在物理设计上斟酌损益,即使是专家级开发人员对这一方面可能也不甚熟悉。本书作者在构建大规模、关键业务的企业系统方面拥有超过30年的实践经验,他在书中向读者细致地演示了如何创建并积累软件资本。这本书为落地各种规模的项目奠定了基础,并展示了在真实的大规模软件开发中要获得成功所需的过程、方法、技术和工具。

本书紧跟产业前沿且有着明晰的工程焦点,通过具体示例演示基本的设计设想。任何层次的专业开发人员都能通过理解如何做到以下几点来获得启发,以升华自身的设计和开发方法:

● 善用基础设施开发和应用开发之间的差别来提高生产效率;

● 通过反馈和层次化复用实现指数级生产率增益;

● 将组件作为逻辑设计和物理设计的基本单元;

● 分析编译和连接的基本特性是怎样影响组件设计的;

● 发现适当大小的物理聚合中逻辑内容的有效划分;

● 内化充分、完整、最小和初等的软件之间的重要差异;

● 交付同时优化封装、稳定性和性能的解决方案;

● 用9种已成型的层级划分技术来避免循环的物理依赖;

● 用横展设计适当地避免传统分层架构的“臃肿”;

● 采用合适的架构隔离方法来消除编译时耦合;

● 以基于组件的方法设计大型系统所需的多维度过程。

本书是大规模C++软件开发系列图书的第一卷。本书专为软件实践者所著,用熟悉的C++构件解决实际问题,同时点出(且鼓励)现代C++方案。《大规模C++软件开发 卷2:设计与实现》和《大规模C++软件开发 卷3:验证与测试》也即将上市,这套书给大规模 C++ 软件开发提供了全方位的指导。如果你是一位架构师或项目主管,本书可以让你具备解决至关重要的问题的能力,也可以作为你未来几年随取随用的参考书。

本书通过具体示例演示大规模C++开发的基本设计设想,为各种规模的项目奠定基础,并演示成功进行大规模实际开发所需的过程、方法、技术和工具。通过阅读本书,读者可以逐步改变自己的设计和开发方法。本书旨在使用软件从业人员熟悉的C++构件来解决现实问题,同时确定(并激发)现代C++替代方案。作者利用超过30年的构建大规模、关键任务的企业系统的实践经验,展示了如何创建和增长软件资本。

本书专为有经验的C++软件开发者和系统设计师编写,从事大型软件开发工作的架构师或项目负责人等也可以通过阅读本书解决实际工作中的问题。

C++ 本质上是一门编译型语言, 允许预处理和分离翻译单元。要全面剖析适用于物理设计的所有重要 设想, C++的这些特性是不可或缺的。这门语言从 20 世纪 80 年代发展至今,已然能支持多种编 程范式(如函数式、过程式、面向对象和泛型),这些范式引发了对大量重要的逻辑设计问题(如 涉及模板、指针、内存管理、最大程度地提升空间和运行时性能的问题) 的讨论, 其他编程语言 并没有全面支持这些特性。

自《大规模 C++程序设计》出版以来, C++已经标准化且被多次扩展,出现了一些新的、广泛使用的语言 。但出于实践和教学两方面的考虑,我仍然选择现代 C++的子集—C++98 作为我们表现软件工程原则的选择。任何了解 C++更现代化变体的人都应该了解 C++98,但反之则不然。 书中支撑各种观点的任何理论与实践, 与具体是哪种编译器提供特定 C++子集无关。 如果“偏 要”用最新的 C++特性对书中代码片段进行粗浅的改写, 那不利于读者理解本书真正的意义, 并且妨碍那些不太熟悉现代 C++特性的读者。 要是某些地方采用新版 C++确实能带来绝佳的益处 (如相当清晰地表达思想),我们会指出来(通常是以脚注的方式)。

本书中的方法论已被成功地践行了数十年, 许多重要的参考文献均有证实。但遗憾的是, 一 些参考文献(如 stroustrup00)在推出新版后,由于涵盖了新的语言特性且受篇幅的限制,不再 提供这方面的(非常有必要的) 设计指导。尽管我们依然坚持引用这样的参考文献, 但考虑到读 者的感受,本书会常常再现有关的内容。

这套 3 卷本的书整体可以作为软件开发者的工程参考资料。这套书分为互相独立的 3 卷, 从 开发者的视角细致地记录了这种行之有效的方法论的所有重要方法 ,以营造一种有组织的、整 合的、可伸缩的软件开发环境,能够支撑整个企业,而且对企业的效用只会与日俱增。

目标读者

这套 3 卷本的书的目标读者是 C++软件专业人员。在这套书中, 材料的呈现顺序粗略地对应 着开发者在常规的设计-实现-测试周期中遇到话题的先后顺序。书中的技术对大型软件开发组织行之有效,对稍小一些的软件开发工作也游刃有余。

应用开发人员会觉得本书介绍的组织软件的技术很实用,尤其是在着手大型项目时。若是付 诸实践, 我们认为书中提供的缜密方法可以让开发人员在大应用的单个开发周期内就收回实践所 付出的成本。

库开发人员会欣喜于本书中组织软件的策略带来的难以估量的价值, 这对提高代码复用率大 有裨益。特别是, 将软件打包为细粒度的物理组件, 从而组成一个无环层次, 将会使代码的质量、 可靠性和可维护性提升到新的高度。据我们所知,其他手段难以实现同等品质的代码。

项目管理人员会发现, 充分运用这套技术让他们有能力控制在时间、质量、成本三者间的权 衡。长此以往, 对书中方法一以贯之的实践能孵化出层次化可复用软件库, 它又会反过来促使新 的应用开发得更快、更好且成本更低,而通过其他手段是无法实现这种程度的优化的。

卷 1:过程与架构

第 0 章介绍可伸缩的开发过程带来的工程和经济方面的激励, 它方便了层次化的复用, 从而 既缩短了软件推向市场的时间、提高了代码的品质,又降低了总的开发成本。这一章也讨论了软 件基础设施开发和应用开发的本质区别,并且演示了一家公司如何利用这些区别来提高生产效率。

第 1 章介绍逻辑设计和物理设计中基础的原子单元—组件。这一章的精妙之处在于组件的 定义、基本属性以及物理依赖, 学习它们所需要的低层级的基础知识在这一章也有所提供(涉及 编译器和连接器) 。这部分虽然名义上是背景材料,但介绍了全书都会使用到的重要概念,有一 些还未被主流所采用,因而我还是建议读者细致地阅读一遍。

第 2 章阐释如何一致(不依赖具体领域) 地组织和封装基于组件的软件, 这一章还提供了基 本的设计规则来指导我们层次化地用组件、包、包组来开发模块化的软件。

第 3 章介绍创建良好的软件系统所必需的关键物理设计设想。这一章讨论了如何用更小、更细粒 度的子系统来构造大型系统, 这已经有了一些成熟的策略。我们会解释怎样划分、聚合逻辑内容来避 免循环的、过度的物理依赖, 有些物理依赖是我们不太希望看到的, 或者说确实不必要。特别地, 我们会讲解如何通过添加横展架构 (lateralarchitecture) 以避免传统分层架构 (layeredarchitecture)的笨 重,进一步理解如何在架构的层面减少编译时耦合,并通过示例学习如何用组件进行有效的设计。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
uhN77eccXzf5