架构之道

联合创作 · 2023-10-09 08:57

本书展示了著名架构师Juval Lowy在世界各地实践和教授的经过检验的、结构化和高度工程化的软件设计方法。尽管各种各样的公司已经成功地在数百个系统中实现了他最初的设计思想,但这些见解从未出现在正式出版的技术图书中。

Lowy的方法论基于软件工程的基本原理以及一整套匹配的工具和技术,将系统设计和项目设计结合起来。

首先,他描述了许多软件架构师失败的主要领域,并展示了如何基于易变性将系统分解成更小的构建块或服务。

接下来,他展示了如何在系统设计中进行有效的项目设计,如何准确计算项目持续时间、成本和风险,以及如何设计多个执行选项。

无论你的项目和公司规模、技术、平台或行业如何,本书中的方法和原则都适用。作者通过展示如何设计正确的软件系统和项目来指导读者应对当今软件开发的关键挑战,软件专业人士、架构师、项目负责人或经理在职业生涯的任何阶段都将从本书中受益。...

本书展示了著名架构师Juval Lowy在世界各地实践和教授的经过检验的、结构化和高度工程化的软件设计方法。尽管各种各样的公司已经成功地在数百个系统中实现了他最初的设计思想,但这些见解从未出现在正式出版的技术图书中。

Lowy的方法论基于软件工程的基本原理以及一整套匹配的工具和技术,将系统设计和项目设计结合起来。

首先,他描述了许多软件架构师失败的主要领域,并展示了如何基于易变性将系统分解成更小的构建块或服务。

接下来,他展示了如何在系统设计中进行有效的项目设计,如何准确计算项目持续时间、成本和风险,以及如何设计多个执行选项。

无论你的项目和公司规模、技术、平台或行业如何,本书中的方法和原则都适用。作者通过展示如何设计正确的软件系统和项目来指导读者应对当今软件开发的关键挑战,软件专业人士、架构师、项目负责人或经理在职业生涯的任何阶段都将从本书中受益。

【本书的组织结构】

本书展示了系统设计和项目设计的结构化工程方法。本书的结构反映了方法论的两个部分:系统设计(通常称为架构)和项目设计。这两部分相辅相成,是成功的必要条件。附录提供了一些补充内容。

在大多数技术书籍中,每一章只针对一个主题并深入探讨,这样更容易编写,但这通常不是人们学习的方式。相比之下,在这本书中,讲解是螺旋式的。本书的两大部分中的每一章都重申了前几章的观点,通过多方面的洞察来进行更深入的研究或观点的演进。这模仿了自然的学习过程,每一章都依赖于前面的章节,所以你应该按顺序阅读这些章节。本书的两大部分均包含了详细的案例研究,以展示这些观点以及其他方面。同时,为了保持迭代的简洁性,作为一般规则,我通常避免内容重复,因此即使是关键知识点,也只讨论一次。

以下是对各章和附录的简单介绍:

第1章 元设计方法

本章介绍了下列关键思想:要想成功,必须同时设计系统和用来构建系统的项目。这两种设计对于最终成功都是不可或缺的。没有架构就无法设计项目,设计一个无法构建的系统是毫无意义的。

第2章 分解

本章致力于将系统分解为组成其架构的组件。大多数人以最坏的方式来分解系统,所以本章首先解释了不该做什么。一旦这个观念建立起来,你将学会如何正确地分解系统,在该过程中掌握一组有用的、简单的分析工具并获得观察结果。

第3章 结构

本章提升了第2章的思想,引入了结构。你将看到如何捕获需求、如何对架构分层、架构组件的分类及相互关系、特定的分类指导原则以及一些相关的问题,如子系统设计。

第4章 组合

本章说明如何将系统组件组装成满足需求的有效组合。这简短的一章包含了本书的几个关键设计原则,并将前两章的内容转化为将在每个系统中使用的强大的思维工具。

第5章 系统设计示例

本章是一个广泛的案例研究,展示了迄今为止所讨论的系统设计思想。系统设计螺旋结构的最后迭代提供了一个实际的系统,使系统设计与业务保持一致,并展示了如何生成架构并对其进行验证。

第6章 动机

由于大多数人从来没有听说过项目设计(更不用说实践了),本章介绍了项目设计的概念和参与项目设计的动机。这是项目设计螺旋的第0次迭代。

第7章 项目设计综述

本章概述了如何设计一个项目,首先定义了“软件研发的成功”,然后介绍了明智的决定、项目人员配备、项目网络图、关键路径、安排活动和项目费用等关键概念。本章涵盖了随后各章中使用的大多数思想和技术,最后重点讨论了角色和责任。

第8章 网络和浮动时间

本章介绍了项目网络及其作为设计工具的使用。你将看到如何将项目建模为一个网络图,学习浮动时间的关键概念,了解如何在人员配备和调度中使用浮动时间,并了解浮动时间与风险的关系。

第9章 时间和成本

本章定义了在所有项目中时间和成本之间可能的权衡,并讨论了通过正确工作来加速所有项目的方法。除此之外,你还将学习压缩的关键概念、时间-成本曲线和成本要素。

第10章 风险

本章介绍了大多数项目中缺少的要素:量化风险。你将看到如何度量风险并将其映射到上一章的时间和成本概念中,以及如何基于网络计算风险。风险通常是评估选项的最佳方式,也是一流的规划工具。

第11章 实践中的项目设计

本章通过对设计一个项目所涉及的步骤进行系统的演练,将前几章的所有概念付诸使用。其目标是演示设计项目时使用的思维过程,以及如何为业务决策者审查做准备。

第12章 高级技巧

遵循螺旋式学习模型,本章介绍了高级技巧和概念。这些技巧在各种复杂程度(从简单到最具挑战性)的项目中都很有用,是对前几章的补充,而且经常会结合起来使用。

第13章 项目设计示例

本章是与第5章的系统设计示例相对应的项目设计示例。它也是一个案例研究,展示了设计项目端到端的过程。本章的重点是案例研究,而不是技巧。

第14章 总结

最后一章从设计的技术方面进行了回顾,提供了一系列的指导、技巧、视角和开发过程思想。它从“回答何时设计项目这个重要问题”开始,以“项目设计对质量的影响”结束。

附录A 项目跟踪

附录A展示了如何在计划方面跟踪项目的进度,以及如何在需要时采取纠正措施。项目跟踪更多的是关于项目管理,而不是项目设计,但它对于确保你在工作开始后履行承诺至关重要。

附录B 服务契约设计

架构本身是粗略的,你必须设计其每个组件的细节,而这些细节中最重要的是服务契约。附录B指出了设计服务契约的正确方法。此外,关于模块化、规模和成本的讨论也很好地契合了本书大多数章节的内容。

附录C 设计标准

附录C汇总了本书中提到的关键原则、指南和禁忌事项。该标准是简洁的,是关于“什么”,而不是“为什么”。这个标准背后的原理可以在本书的其余部分找到。

关于读者的假设

Juval Lowy,IDesign的创始人,专业的软件架构师,专门研究系统和项目设计。他帮助过全球多家公司在预算内按时交付高质量的软件。他被微软公司认定为世界知名专家和行业领导者之一,参与了有关C#、WCF和相关技术的内部战略设计审查,并被授予“软件传奇”的称号。在现代软件开发的主要领域,他出版了几本畅销书并发表了多篇文章。他还经常在主要的国际软件开发会议上进行演讲,并在全球进行大师班授课,向成千上万的专业人员传授现代软件架构师所需的技能,同时讲授如何扮演积极的设计、流程和技术领导者的角色。

浏览 2
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报