在敏捷、DevOps盛行的时代,人们关注CI/CD、工具链,追求快速迭代,追求效率,但往往欲速则不达,因为忽视了架构设计和项目管理。
众所周知,开发速度越快,架构设计更要力求简单,以有利于代码的实现和测试;当软件研发高速运行时,管理也显得更为重要,否则容易出现混乱,造成“事倍功半”的不利局面。
在现实中这种局面倒是不少见,许多软件研发团队的项目管理越来越简单、粗暴,研发过程过于随意,工作量估算更是儿戏,项目里程碑的设定往往比较主观,与开发系统所需的实际时间相差太远,导致经常加班,甚至进入恶性循环。
同时,对需求、架构和功能设计等也关注不够,需求经常变更,开发人员和测试人员经常返工,推倒重来,但没有人关注开发成本,没有人去算一算这笔账,而总是感觉人力资源不够,“缺人”这个坑永远无法填平。
大家对这样的状况并不陌生。是时候需要这样一本书帮助我们改变认知,重新认识软件系统设计和项目设计的必要性和价值,并深刻认识一个软件架构师的职责不局限于软件系统架构的设计,还应包括项目设计,两者相辅相成,才能确保项目按预期进展且按质按量地交付产品。
如今的技术书籍中,有专门讨论系统架构设计的,也有专门讨论项目管理的,但很少有书可以将系统设计和项目设计融为一体,让它们相辅相成,达到最好的效果,从而确保每一个项目都获得成功。这本讲解架构设计和项目设计的书摆在你面前,简直就是雪中送炭:
《 架构之道:软件构建的设计方法》
作者:[美] 居瓦·洛瑞(Juval Löwy)
译者:朱少民 张元 丁慧 周倩嫣 金泽锋
原书《Righting Software》,作者是被微软授予“软件传奇”称号的著名架构师Juval Löwy,中文版由QECon发起人朱少民老师领衔翻译。本书讲授的架构之道是作者在世界各地实践和教授的经过检验的、结构化和高度工程化的软件设计方法。软件专业人士、架构师、项目负责人或经理在职业生涯的任何阶段都将从本书中受益。
【本书架构】
本书展示了系统设计和项目设计的结构化工程方法。本书的结构反映了方法论的两个部分:系统设计(通常称为架构)和项目设计。在大多数技术书籍中,每一章只针对一个主题并深入探讨,这样更容易编写,但这通常不是人们学习的方式。相比之下,在这本书中,讲解是螺旋式的。本书的两大部分中的每一章都重申了前几章的观点,通过多方面的洞察来进行更深入的研究或观点的演进。这模仿了自然的学习过程,每一章都依赖于前面的章节,所以你应该按顺序阅读这些章节。本书的两大部分均包含了详细的案例研究,以展示这些观点以及其他方面。
以下是对各章的简单介绍:
第1章 元设计方法
本章介绍了下列关键思想:要想成功,必须同时设计系统和用来构建系统的项目。这两种设计对于最终成功都是不可或缺的。没有架构就无法设计项目,设计一个无法构建的系统是毫无意义的。
第2章 分解
本章致力于将系统分解为组成其架构的组件。大多数人以最坏的方式来分解系统,所以本章首先解释了不该做什么。一旦这个观念建立起来,你将学会如何正确地分解系统,在该过程中掌握一组有用的、简单的分析工具并获得观察结果。
第3章 结构
本章提升了第2章的思想,引入了结构。你将看到如何捕获需求、如何对架构分层、架构组件的分类及相互关系、特定的分类指导原则以及一些相关的问题,如子系统设计。
第4章 组合
本章说明如何将系统组件组装成满足需求的有效组合。这简短的一章包含了本书的几个关键设计原则,并将前两章的内容转化为将在每个系统中使用的强大的思维工具。
第5章 系统设计示例
本章是一个广泛的案例研究,展示了迄今为止所讨论的系统设计思想。系统设计螺旋结构的最后迭代提供了一个实际的系统,使系统设计与业务保持一致,并展示了如何生成架构并对其进行验证。
第6章 动机
由于大多数人从来没有听说过项目设计(更不用说实践了),本章介绍了项目设计的概念和参与项目设计的动机。这是项目设计螺旋的第0次迭代。
第7章 项目设计综述
本章概述了如何设计一个项目,首先定义了“软件研发的成功”,然后介绍了明智的决定、项目人员配备、项目网络图、关键路径、安排活动和项目费用等关键概念。本章涵盖了随后各章中使用的大多数思想和技术,最后重点讨论了角色和责任。
第8章 网络和浮动时间
本章介绍了项目网络及其作为设计工具的使用。你将看到如何将项目建模为一个网络图,学习浮动时间的关键概念,了解如何在人员配备和调度中使用浮动时间,并了解浮动时间与风险的关系。
第9章 时间和成本
本章定义了在所有项目中时间和成本之间可能的权衡,并讨论了通过正确工作来加速所有项目的方法。除此之外,你还将学习压缩的关键概念、时间-成本曲线和成本要素。
第10章 风险
本章介绍了大多数项目中缺少的要素:量化风险。你将看到如何度量风险并将其映射到上一章的时间和成本概念中,以及如何基于网络计算风险。风险通常是评估选项的最佳方式,也是一流的规划工具。
第11章 实践中的项目设计
本章通过对设计一个项目所涉及的步骤进行系统的演练,将前几章的所有概念付诸使用。其目标是演示设计项目时使用的思维过程,以及如何为业务决策者审查做准备。
第12章 高级技巧
遵循螺旋式学习模型,本章介绍了高级技巧和概念。这些技巧在各种复杂程度(从简单到最具挑战性)的项目中都很有用,是对前几章的补充,而且经常会结合起来使用。
第13章 项目设计示例
本章是与第5章的系统设计示例相对应的项目设计示例。它也是一个案例研究,展示了设计项目端到端的过程。本章的重点是案例研究,而不是技巧。
第14章 总结
最后一章从设计的技术方面进行了回顾,提供了一系列的指导、技巧、视角和开发过程思想。它从“回答何时设计项目这个重要问题”开始,以“项目设计对质量的影响”结束。
【关于作者】
居瓦·洛瑞(Juval Löwy),IDesign的创始人,是一位精通系统和项目设计的软件架构师,专门研究系统和项目设计。被微软公司认定为世界顶级专家和行业领导者之一,并被授予“软件传奇”(Software Legend)的称号。在世界各地举办架构大师班,向成千上万的IT人员传授现代软件架构师所需的技能。
一个优秀的软件架构师需要担负软件[系统设计]和[项目设计]这两项设计的职责,只有将系统设计和项目设计融为一体,让它们相辅相成,才能确保项目按预期进展,保质保量地交付产品。
本书为你构建一条通往成功的设计之道,助力每一位有志成为优秀软件架构师的人梦想成真。
扫码关注【华章计算机】视频号
每天来听华章哥讲书
更多精彩回顾
书讯 | 9月书讯 | 秋天的第一本书,来了
资讯 | 2021年ClickHouse最王炸功能来袭,性能轻松提升40倍
书单 | 送你一份入门前端学习路线图
干货 | 大数据的架构设计与未来
收藏 | 成为明星程序员的独特秘密
上新 | 【新书速递】UEFI开发探索
赠书 | 【第72期】什么是数据产品经理?需要什么能力?有哪些相关书籍可以读?