架构之道:软件构建的设计方法

架构之道:软件构建的设计方法
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [美] (Juval Lowy) , , ,
2021-09
ISBN: 9787111687702
定价: 199.00
装帧: 平装
开本: 16开
纸张: 胶版纸
13人买过
  • 本书展示了系统设计和项目设计的结构化工程方法。本书的结构反映了方法论的两个部分:系统设计(通常称为架构)和项目设计。这两部分相辅相成,是成功的必要条件。附录提供了一些补充内容。
     
    在大多数技术书籍中,每一章只针对一个主题并深入探讨,这样更容易编写,但这通常不是人们学习的方式。相比之下,在这本书中,讲解是螺旋式的。本书的两大部分中的每一 
    章都重申了前几章的观点,通过多方面的洞察来进行更深入的研究或观点的演进。这模仿了自然的学习过程,每一章都依赖于前面的章节,所以你应该按顺序阅读这些章节。本书的两大部分均包含了详细的案例研究,以展示这些观点以及其他方面。同时,为了保持迭代的简洁性,作为一般规则,我通常避免内容重复,因此即使是关键知识点,也只讨论一次。 
    以下是对各章和附录的简单介绍: 
    第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和相关技术的内部战略设计审查,并被授予“软件传奇”的称号。 在现代软件开发的主要领域,他出版了几本畅销书并发表了多篇文章。他还经常在主要的国际软件开发会议上进行演讲,并在全球进行大师班授课。 

     

     
    译者简介:
    朱少民 同济大学特聘教授、国内知名测试专家、软件绿色联盟标准评测组组长、QECon大会发起人。近30年来一直从事软件测试、质量管理等工作,先后获得多项省部级科技进步奖。已出版了20多部著作和2部译作,代表作主要有《全程软件测试》《软件测试方法和技术》等。经常在国内外学术会议或技术大会上发表演讲,曾任思科(中国)软件有限公司QA高级总监、IEEE ICST 2019工业论坛主席等。
     
    张元 知名外企研发总监,国内项目管理、新产品开发资深专家,国家外国专家局认证讲师,PMP、ACP、PBA、 NPDP、信息系统项目管理师。有十多年的敏捷项目管理和系统架构的经验,对于敏捷项目实施、流程优化、跨国团队管理有丰富的实践经验。擅长在IT领域为企业提供项目管理/新产品开发的战略规划、实施与优化的解决方案。
     
    丁慧 世界五百强公司研发高级经理,负责产品开发及组织战略与发展工作。兼任精益六西格玛黑带教练、问题解决教练和研发敏捷教练, 南京大学和东南大学客座讲师。ISO9001标准主任审核员,ISO27001、ISO14001、CMMI 审核员。15年以上软件开发、项目管理、过程改进、质量管理和团队管理经验。
     
    周倩嫣 PerfMa市场运营总监,负责公司市场运营模式、竞争战略、实施规划等方面的管理工作。曾担任国内某面向全球的信息技术服务企业的软件质量负责人,负责Adobe、TrendMicro、Citrix、Sage等产品的离岸测试中心项目管理,组建团队并不断提升团队的测试递交能力,同时协调美国、印度、荷兰、澳大利亚等多国项目干系人,保证产品质量的稳步提升。
     
    金泽锋 中兴通讯首席研发教练,无线研究院软件过程总工,20多年研发领域一线开发管理经验,持续关注敏捷精益和嵌入式开发领域的最佳实践,拥有多个大规模项目的转型变革经验。 第1章 元设计方法  / 1 
    1.1 什么是元设计方法  / 2 
    1.1.1 设计验证  / 3 
    1.1.2 紧迫的时间  / 3 
    1.1.3 消除分析瘫痪  / 4 
    1.1.4 沟通  / 5 
    1.2 元设计方法不是什么  / 6 
    |第一部分|   系统设计 
    第2章 分解  / 8 
    2.1 避免功能分解  / 9 
    2.1.1 功能分解带来的问题  / 9 
    2.1.2 关于功能分解的思考  / 13 
    2.1.3 避免领域分解  / 15 
    2.1.4 错误的动机  / 17 
    2.1.5 可测试性和设计  / 17 
    2.1.6 示例:功能型交易系统  / 19 
    2.2 基于易变性的分解  / 21 
    2.2.1 分解、维护和开发  / 22 
    2.2.2 普遍性原则  / 23 
    2.2.3 基于易变性的分解与测试  / 24 
    2.2.4 易变性的挑战  / 24 
    2.3 识别易变性  / 26 
    2.3.1 易变性与可变性  / 26 
    2.3.2 易变轴  / 27 
    2.3.3 伪装成需求的解决方案  / 29 
    2.3.4 易变列表  / 30 
    2.3.5 示例:基于易变性的交易系统  / 30 
    2.3.6 抵制“塞壬之歌”  / 34 
    2.3.7 易变性与业务  / 35 
    2.3.8 为竞争对手设计  / 37 
    2.3.9 易变性和寿命  / 38 
    2.3.10 实践的重要性  / 38 
    第3章 结构  / 40 
    3.1 用例和需求  / 41 
    3.2 分层方法  / 43 
    3.3 典型分层  / 44 
    3.3.1 客户端层  / 44 
    3.3.2 业务逻辑层  / 45 
    3.3.3 资源访问层  / 46 
    3.3.4 资源层  / 47 
    3.3.5 实用工具库栏  / 48 
    3.4 分类指南  / 48 
    3.4.1 命名的玄机  / 48 
    3.4.2 四个问题  / 49 
    3.4.3 管理器与引擎比  / 50 
    3.4.4 关键观察  / 51 
    3.5 子系统和服务  / 52 
    3.5.1 增量构造  / 52 
    3.5.2 关于微服务  / 54 
    3.6 开放和封闭式架构  / 56 
    3.6.1 开放式架构  / 56 
    3.6.2 封闭式架构  / 56 
    3.6.3 半封闭/半开放架构  / 57 
    3.6.4 放宽规则  / 57 
    3.6.5 设计禁忌  / 59 
    3.6.6 力求对称  / 61 
    第4章 组合  / 62 
    4.1 需求与变更  / 62 
    4.1.1 憎恨变更  / 63 
    4.1.2 设计基本准则  / 63 
    4.2 可组合设计  / 64 
    4.2.1 核心用例  / 64 
    4.2.2 架构师的使命  / 65 
    4.3 这里没有功能  / 68 
    4.4 处理变更  / 69 
    第5章 系统设计示例  / 71 
    5.1 系统概述  / 72 
    5.1.1 遗留系统  / 73 
    5.1.2 新系统  / 74 
    5.1.3 公司  / 74 
    5.1.4 用例  / 74 
    5.2 反设计工作  / 80 
    5.2.1 巨型系统  / 80 
    5.2.2 颗粒化构建块  / 80 
    5.2.3 域分解  / 81 
    5.3 业务对齐  / 82 
    5.3.1 愿景  / 82 
    5.3.2 业务目标  / 83 
    5.3.3 使命陈述  / 84 
    5.4 架构  / 84 
    5.4.1 TradeMe词汇表  / 84 
    5.4.2 TradeMe易变区域  / 85 
    5.4.3 静态架构  / 88 
    5.4.4 操作概念  / 90 
    5.4.5 工作流管理器  / 92 
    5.5 设计验证  / 93 
    5.5.1 添加技工/承包商用例  / 94 
    5.5.2 请求技工用例  / 95 
    5.5.3 匹配技工用例  / 96 
    5.5.4 分配技工用例  / 98 
    5.5.5 终止技工用例  / 100 
    5.5.6 支付技工用例  / 101 
    5.5.7 创建项目用例  / 101 
    5.5.8 结束项目用例  / 102 
    5.6 接下来会是什么  / 103 
    |第二部分| 项目设计 
    第6章 动机  / 106 
    6.1 项目设计的背景和基本动机  / 106 
    6.1.1 项目设计和项目稳健  / 107 
    6.1.2 组装说明  / 108 
    6.2 软件项目的需求层级  / 108 
    第7章 项目设计综述  / 111 
    7.1 定义成功  / 111 
    7.2 项目初始人员配备  / 113 
    7.2.1 一个架构师,非一群架构师  / 113 
    7.2.2 核心团队  / 114 
    7.3 明智的决定  / 116 
    7.3.1 计划,不计划  / 116 
    7.3.2 软件开发计划评审  / 117 
    7.4 服务和开发人员  / 117 
    7.4.1 设计和团队效率  / 119 
    7.4.2 任务连续性  / 120 
    7.5 工作量的估算  / 120 
    7.5.1 经典错误  / 121 
    7.5.2 估算技术  / 123 
    7.5.3 总体项目估算  / 124 
    7.5.4 活动估算  / 126 
    7.6 关键路径分析  / 127 
    7.6.1 项目网络图  / 127 
    7.6.2 关键路径  / 130 
    7.6.3 分配资源  / 131 
    7.7 安排活动  / 134 
    7.8 项目费用  / 140 
    7.9 挣值计划  / 143 
    7.9.1 经典错误  / 144 
    7.9.2 浅S曲线  / 145 
    7.10 角色和责任  / 148 
    第8章 网络和浮动时间  / 149 
    8.1 网络图  / 149 
    8.1.1 节点图  / 150 
    8.1.2 箭头图  / 150 
    8.1.3 箭头图与节点图  / 151 
    8.2 浮动时间  / 152 
    8.2.1 总浮动时间  / 153 
    8.2.2 自由浮动时间  / 153 
    8.2.3 计算浮动时间  / 154 
    8.2.4 可视化浮动时间  / 155 
    8.3 基于浮动时间的进度安排  / 157 
    第9章 时间和成本  / 159 
    9.1 加速软件项目  / 159 
    9.2 进度压缩  / 162 
    9.2.1 利用更好的资源  / 162 
    9.2.2 并行工作  / 162 
    9.2.3 并行工作和成本  / 164 
    9.3 时间-成本曲线  / 164 
    9.3.1 时间-成本曲线上的要点  / 165 
    9.3.2 离散建模  / 167 
    9.3.3 避免经典错误  / 168 
    9.3.4 项目可行性  / 168 
    9.3.5 找到常规方案  / 169 
    9.4 项目成本要素  / 171 
    9.4.1 直接成本  / 171 
    9.4.2 间接成本  / 172 
    9.4.3 会计与价值  / 172 
    9.4.4 总成本、直接成本和间接成本  / 172 
    9.4.5 压缩和成本要素  / 173 
    9.4.6 人员配备和成本要素  / 176 
    9.4.7 固定成本  / 178 
    9.5 网络压缩  / 178 
    第10章 风险  / 181 
    10.1 选择选项  / 181 
    10.2 时间-风险曲线  / 182 
    10.3 风险建模  / 184 
    10.3.1 标准化风险  / 185 
    10.3.2 风险和浮动  / 185 
    10.3.3 风险和直接成本  / 186 
    10.3.4 临界风险  / 186 
    10.3.5 斐波那契风险  / 188 
    10.3.6 活动风险  / 189 
    10.3.7 临界风险与活动风险  / 191 
    10.4 压缩和风险  / 191 
    10.5 风险缓解  / 192 
    10.5.1 如何缓解  / 192 
    10.5.2 缓解目标  / 193 
    10.6 风险指标  / 194 
    第11章 实践中的项目设计  / 196 
    11.1 使命  / 196 
    11.1.1 静态架构  / 197 
    11.1.2 调用链  / 197 
    11.1.3 活动清单  / 199 
    11.1.4 网络图  / 200 
    11.1.5 计划假设  / 201 
    11.2 寻找常规的解决方案  / 203 
    11.2.1 无限的资源(迭代1)  / 203 
    11.2.2 网络和资源问题  / 204 
    11.2.3 基础设施优先(迭代2)  / 204 
    11.2.4 有限的资源  / 205 
    11.2.5 亚临界化(迭代7)  / 208 
    11.2.6 选择常规的解决方案  / 211 
    11.3 网络压缩  / 211 
    11.3.1 使用更好的资源进行压缩  / 211 
    11.3.2 引入并行工作  / 213 
    11.3.3 压缩迭代结束  / 219 
    11.3.4 产出分析  / 219 
    11.4 效率分析  / 221 
    11.5 时间-成本曲线  / 221 
    11.5.1 时间-成本相关模型  / 222 
    11.5.2 死亡区域  / 224 
    11.6 规划与风险  / 225 
    11.6.1 风险缓解  / 226 
    11.6.2 重建时间-成本曲线  / 228 
    11.6.3 风险模型化  / 230 
    11.6.4 风险包含与排除  / 232 
    11.7 SDP评审  / 232 
    第12章 高级技巧  / 234 
    12.1 上帝活动  / 234 
    12.2 风险交叉点  / 235 
    12.3 找到缓解目标  / 238 
    12.4 几何风险  / 240 
    12.4.1 几何临界风险  / 241 
    12.4.2 几何斐波那契风险  / 241 
    12.4.3 几何活动风险  / 242 
    12.4.4 几何风险行为  / 243 
    12.5 执行复杂度  / 244 
    12.5.1 圈复杂度  / 244 
    12.5.2 项目类型与复杂度  / 245 
    12.5.3 项目压缩与复杂度  / 246 
    12.6 超大型项目  / 247 
    12.6.1 复杂系统与脆弱性  / 248 
    12.6.2 网络群  / 250 
    12.6.3 设计网络群  / 250 
    12.7 小项目  / 253 
    12.8 基于层次设计  / 253 
    12.8.1 基于层次设计的利弊  / 254 
    12.8.2 层次与构造  / 255 
    第13章 项目设计示例  / 256 
    13.1 估算  / 257 
    13.1.1 单个活动估算   / 257 
    13.1.2 总体项目估算  / 258 
    13.2 依赖关系和项目网络  / 259 
    13.2.1 行为依赖  / 259 
    13.2.2 非行为依赖  / 259 
    13.2.3 覆盖某些依赖  / 260 
    13.2.4 完整性检查  / 260 
    13.3 常规方案  / 261 
    13.3.1 网络图  / 261 
    13.3.2 计划进度  / 263 
    13.3.3 计划的人员配备分布  / 263 
    13.3.4 成本和效率   / 264 
    13.3.5 结果总结   / 264 
    13.4 压缩方案  / 264 
    13.4.1 添加启用活动   / 264 
    13.4.2 分配资源  / 265 
    13.4.3 计划进度  / 266 
    13.4.4 计划的人员配备分布  / 266 
    13.4.5 成本和效率  / 266 
    13.4.6 结果总结  / 267 
    13.5 分层设计  / 268 
    13.5.1 分层设计和风险  / 268 
    13.5.2 人员配备分布  / 269 
    13.5.3 结果总结  / 269 
    13.6 亚临界方案  / 269 
    13.6.1 持续时间、计划进度和风险  / 270 
    13.6.2 成本和效率  / 270 
    13.6.3 结果总结   / 270 
    13.7 比较选项   / 271 
    13.8 计划与风险   / 271 
    13.8.1 风险缓解  / 271 
    13.8.2 重新计算成本  / 274 
    13.9 为SDP评审做准备  / 274 
    第14章 总结  / 276 
    14.1 项目设计时间  / 276 
    14.1.1 真实的答案  / 277 
    14.1.2 迈向未来  / 278 
    14.2 一般性指导  / 279 
    14.2.1 架构与估算  / 279 
    14.2.2 设计立场  / 280 
    14.2.3 可选性  / 280 
    14.2.4 压缩  / 281 
    14.2.5 计划与风险  / 283 
    14.3 项目设计的设计  / 283 
    14.4 不同的视角  / 285 
    14.5 交接  / 287 
    14.5.1 初级交接  / 287 
    14.5.2 高级交接  / 287 
    14.5.3 资深开发人员作为初级架构师  / 288 
    14.6 实践  / 289 
    14.7 项目设计的口头汇报  / 290 
    14.8 关于质量  / 291 
    14.8.1 质量控制活动  / 291 
    14.8.2 质量保证活动  / 292 
    14.8.3 质量与文化  / 293 
    |附录| 
    附录A 项目跟踪  / 296 
    附录B 服务契约设计  / 310 
    附录C 设计标准  / 323 

  • 内容简介:
    本书展示了系统设计和项目设计的结构化工程方法。本书的结构反映了方法论的两个部分:系统设计(通常称为架构)和项目设计。这两部分相辅相成,是成功的必要条件。附录提供了一些补充内容。
     
    在大多数技术书籍中,每一章只针对一个主题并深入探讨,这样更容易编写,但这通常不是人们学习的方式。相比之下,在这本书中,讲解是螺旋式的。本书的两大部分中的每一 
    章都重申了前几章的观点,通过多方面的洞察来进行更深入的研究或观点的演进。这模仿了自然的学习过程,每一章都依赖于前面的章节,所以你应该按顺序阅读这些章节。本书的两大部分均包含了详细的案例研究,以展示这些观点以及其他方面。同时,为了保持迭代的简洁性,作为一般规则,我通常避免内容重复,因此即使是关键知识点,也只讨论一次。 
    以下是对各章和附录的简单介绍: 
    第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和相关技术的内部战略设计审查,并被授予“软件传奇”的称号。 在现代软件开发的主要领域,他出版了几本畅销书并发表了多篇文章。他还经常在主要的国际软件开发会议上进行演讲,并在全球进行大师班授课。 

     

     
    译者简介:
    朱少民 同济大学特聘教授、国内知名测试专家、软件绿色联盟标准评测组组长、QECon大会发起人。近30年来一直从事软件测试、质量管理等工作,先后获得多项省部级科技进步奖。已出版了20多部著作和2部译作,代表作主要有《全程软件测试》《软件测试方法和技术》等。经常在国内外学术会议或技术大会上发表演讲,曾任思科(中国)软件有限公司QA高级总监、IEEE ICST 2019工业论坛主席等。
     
    张元 知名外企研发总监,国内项目管理、新产品开发资深专家,国家外国专家局认证讲师,PMP、ACP、PBA、 NPDP、信息系统项目管理师。有十多年的敏捷项目管理和系统架构的经验,对于敏捷项目实施、流程优化、跨国团队管理有丰富的实践经验。擅长在IT领域为企业提供项目管理/新产品开发的战略规划、实施与优化的解决方案。
     
    丁慧 世界五百强公司研发高级经理,负责产品开发及组织战略与发展工作。兼任精益六西格玛黑带教练、问题解决教练和研发敏捷教练, 南京大学和东南大学客座讲师。ISO9001标准主任审核员,ISO27001、ISO14001、CMMI 审核员。15年以上软件开发、项目管理、过程改进、质量管理和团队管理经验。
     
    周倩嫣 PerfMa市场运营总监,负责公司市场运营模式、竞争战略、实施规划等方面的管理工作。曾担任国内某面向全球的信息技术服务企业的软件质量负责人,负责Adobe、TrendMicro、Citrix、Sage等产品的离岸测试中心项目管理,组建团队并不断提升团队的测试递交能力,同时协调美国、印度、荷兰、澳大利亚等多国项目干系人,保证产品质量的稳步提升。
     
    金泽锋 中兴通讯首席研发教练,无线研究院软件过程总工,20多年研发领域一线开发管理经验,持续关注敏捷精益和嵌入式开发领域的最佳实践,拥有多个大规模项目的转型变革经验。
  • 目录:
    第1章 元设计方法  / 1 
    1.1 什么是元设计方法  / 2 
    1.1.1 设计验证  / 3 
    1.1.2 紧迫的时间  / 3 
    1.1.3 消除分析瘫痪  / 4 
    1.1.4 沟通  / 5 
    1.2 元设计方法不是什么  / 6 
    |第一部分|   系统设计 
    第2章 分解  / 8 
    2.1 避免功能分解  / 9 
    2.1.1 功能分解带来的问题  / 9 
    2.1.2 关于功能分解的思考  / 13 
    2.1.3 避免领域分解  / 15 
    2.1.4 错误的动机  / 17 
    2.1.5 可测试性和设计  / 17 
    2.1.6 示例:功能型交易系统  / 19 
    2.2 基于易变性的分解  / 21 
    2.2.1 分解、维护和开发  / 22 
    2.2.2 普遍性原则  / 23 
    2.2.3 基于易变性的分解与测试  / 24 
    2.2.4 易变性的挑战  / 24 
    2.3 识别易变性  / 26 
    2.3.1 易变性与可变性  / 26 
    2.3.2 易变轴  / 27 
    2.3.3 伪装成需求的解决方案  / 29 
    2.3.4 易变列表  / 30 
    2.3.5 示例:基于易变性的交易系统  / 30 
    2.3.6 抵制“塞壬之歌”  / 34 
    2.3.7 易变性与业务  / 35 
    2.3.8 为竞争对手设计  / 37 
    2.3.9 易变性和寿命  / 38 
    2.3.10 实践的重要性  / 38 
    第3章 结构  / 40 
    3.1 用例和需求  / 41 
    3.2 分层方法  / 43 
    3.3 典型分层  / 44 
    3.3.1 客户端层  / 44 
    3.3.2 业务逻辑层  / 45 
    3.3.3 资源访问层  / 46 
    3.3.4 资源层  / 47 
    3.3.5 实用工具库栏  / 48 
    3.4 分类指南  / 48 
    3.4.1 命名的玄机  / 48 
    3.4.2 四个问题  / 49 
    3.4.3 管理器与引擎比  / 50 
    3.4.4 关键观察  / 51 
    3.5 子系统和服务  / 52 
    3.5.1 增量构造  / 52 
    3.5.2 关于微服务  / 54 
    3.6 开放和封闭式架构  / 56 
    3.6.1 开放式架构  / 56 
    3.6.2 封闭式架构  / 56 
    3.6.3 半封闭/半开放架构  / 57 
    3.6.4 放宽规则  / 57 
    3.6.5 设计禁忌  / 59 
    3.6.6 力求对称  / 61 
    第4章 组合  / 62 
    4.1 需求与变更  / 62 
    4.1.1 憎恨变更  / 63 
    4.1.2 设计基本准则  / 63 
    4.2 可组合设计  / 64 
    4.2.1 核心用例  / 64 
    4.2.2 架构师的使命  / 65 
    4.3 这里没有功能  / 68 
    4.4 处理变更  / 69 
    第5章 系统设计示例  / 71 
    5.1 系统概述  / 72 
    5.1.1 遗留系统  / 73 
    5.1.2 新系统  / 74 
    5.1.3 公司  / 74 
    5.1.4 用例  / 74 
    5.2 反设计工作  / 80 
    5.2.1 巨型系统  / 80 
    5.2.2 颗粒化构建块  / 80 
    5.2.3 域分解  / 81 
    5.3 业务对齐  / 82 
    5.3.1 愿景  / 82 
    5.3.2 业务目标  / 83 
    5.3.3 使命陈述  / 84 
    5.4 架构  / 84 
    5.4.1 TradeMe词汇表  / 84 
    5.4.2 TradeMe易变区域  / 85 
    5.4.3 静态架构  / 88 
    5.4.4 操作概念  / 90 
    5.4.5 工作流管理器  / 92 
    5.5 设计验证  / 93 
    5.5.1 添加技工/承包商用例  / 94 
    5.5.2 请求技工用例  / 95 
    5.5.3 匹配技工用例  / 96 
    5.5.4 分配技工用例  / 98 
    5.5.5 终止技工用例  / 100 
    5.5.6 支付技工用例  / 101 
    5.5.7 创建项目用例  / 101 
    5.5.8 结束项目用例  / 102 
    5.6 接下来会是什么  / 103 
    |第二部分| 项目设计 
    第6章 动机  / 106 
    6.1 项目设计的背景和基本动机  / 106 
    6.1.1 项目设计和项目稳健  / 107 
    6.1.2 组装说明  / 108 
    6.2 软件项目的需求层级  / 108 
    第7章 项目设计综述  / 111 
    7.1 定义成功  / 111 
    7.2 项目初始人员配备  / 113 
    7.2.1 一个架构师,非一群架构师  / 113 
    7.2.2 核心团队  / 114 
    7.3 明智的决定  / 116 
    7.3.1 计划,不计划  / 116 
    7.3.2 软件开发计划评审  / 117 
    7.4 服务和开发人员  / 117 
    7.4.1 设计和团队效率  / 119 
    7.4.2 任务连续性  / 120 
    7.5 工作量的估算  / 120 
    7.5.1 经典错误  / 121 
    7.5.2 估算技术  / 123 
    7.5.3 总体项目估算  / 124 
    7.5.4 活动估算  / 126 
    7.6 关键路径分析  / 127 
    7.6.1 项目网络图  / 127 
    7.6.2 关键路径  / 130 
    7.6.3 分配资源  / 131 
    7.7 安排活动  / 134 
    7.8 项目费用  / 140 
    7.9 挣值计划  / 143 
    7.9.1 经典错误  / 144 
    7.9.2 浅S曲线  / 145 
    7.10 角色和责任  / 148 
    第8章 网络和浮动时间  / 149 
    8.1 网络图  / 149 
    8.1.1 节点图  / 150 
    8.1.2 箭头图  / 150 
    8.1.3 箭头图与节点图  / 151 
    8.2 浮动时间  / 152 
    8.2.1 总浮动时间  / 153 
    8.2.2 自由浮动时间  / 153 
    8.2.3 计算浮动时间  / 154 
    8.2.4 可视化浮动时间  / 155 
    8.3 基于浮动时间的进度安排  / 157 
    第9章 时间和成本  / 159 
    9.1 加速软件项目  / 159 
    9.2 进度压缩  / 162 
    9.2.1 利用更好的资源  / 162 
    9.2.2 并行工作  / 162 
    9.2.3 并行工作和成本  / 164 
    9.3 时间-成本曲线  / 164 
    9.3.1 时间-成本曲线上的要点  / 165 
    9.3.2 离散建模  / 167 
    9.3.3 避免经典错误  / 168 
    9.3.4 项目可行性  / 168 
    9.3.5 找到常规方案  / 169 
    9.4 项目成本要素  / 171 
    9.4.1 直接成本  / 171 
    9.4.2 间接成本  / 172 
    9.4.3 会计与价值  / 172 
    9.4.4 总成本、直接成本和间接成本  / 172 
    9.4.5 压缩和成本要素  / 173 
    9.4.6 人员配备和成本要素  / 176 
    9.4.7 固定成本  / 178 
    9.5 网络压缩  / 178 
    第10章 风险  / 181 
    10.1 选择选项  / 181 
    10.2 时间-风险曲线  / 182 
    10.3 风险建模  / 184 
    10.3.1 标准化风险  / 185 
    10.3.2 风险和浮动  / 185 
    10.3.3 风险和直接成本  / 186 
    10.3.4 临界风险  / 186 
    10.3.5 斐波那契风险  / 188 
    10.3.6 活动风险  / 189 
    10.3.7 临界风险与活动风险  / 191 
    10.4 压缩和风险  / 191 
    10.5 风险缓解  / 192 
    10.5.1 如何缓解  / 192 
    10.5.2 缓解目标  / 193 
    10.6 风险指标  / 194 
    第11章 实践中的项目设计  / 196 
    11.1 使命  / 196 
    11.1.1 静态架构  / 197 
    11.1.2 调用链  / 197 
    11.1.3 活动清单  / 199 
    11.1.4 网络图  / 200 
    11.1.5 计划假设  / 201 
    11.2 寻找常规的解决方案  / 203 
    11.2.1 无限的资源(迭代1)  / 203 
    11.2.2 网络和资源问题  / 204 
    11.2.3 基础设施优先(迭代2)  / 204 
    11.2.4 有限的资源  / 205 
    11.2.5 亚临界化(迭代7)  / 208 
    11.2.6 选择常规的解决方案  / 211 
    11.3 网络压缩  / 211 
    11.3.1 使用更好的资源进行压缩  / 211 
    11.3.2 引入并行工作  / 213 
    11.3.3 压缩迭代结束  / 219 
    11.3.4 产出分析  / 219 
    11.4 效率分析  / 221 
    11.5 时间-成本曲线  / 221 
    11.5.1 时间-成本相关模型  / 222 
    11.5.2 死亡区域  / 224 
    11.6 规划与风险  / 225 
    11.6.1 风险缓解  / 226 
    11.6.2 重建时间-成本曲线  / 228 
    11.6.3 风险模型化  / 230 
    11.6.4 风险包含与排除  / 232 
    11.7 SDP评审  / 232 
    第12章 高级技巧  / 234 
    12.1 上帝活动  / 234 
    12.2 风险交叉点  / 235 
    12.3 找到缓解目标  / 238 
    12.4 几何风险  / 240 
    12.4.1 几何临界风险  / 241 
    12.4.2 几何斐波那契风险  / 241 
    12.4.3 几何活动风险  / 242 
    12.4.4 几何风险行为  / 243 
    12.5 执行复杂度  / 244 
    12.5.1 圈复杂度  / 244 
    12.5.2 项目类型与复杂度  / 245 
    12.5.3 项目压缩与复杂度  / 246 
    12.6 超大型项目  / 247 
    12.6.1 复杂系统与脆弱性  / 248 
    12.6.2 网络群  / 250 
    12.6.3 设计网络群  / 250 
    12.7 小项目  / 253 
    12.8 基于层次设计  / 253 
    12.8.1 基于层次设计的利弊  / 254 
    12.8.2 层次与构造  / 255 
    第13章 项目设计示例  / 256 
    13.1 估算  / 257 
    13.1.1 单个活动估算   / 257 
    13.1.2 总体项目估算  / 258 
    13.2 依赖关系和项目网络  / 259 
    13.2.1 行为依赖  / 259 
    13.2.2 非行为依赖  / 259 
    13.2.3 覆盖某些依赖  / 260 
    13.2.4 完整性检查  / 260 
    13.3 常规方案  / 261 
    13.3.1 网络图  / 261 
    13.3.2 计划进度  / 263 
    13.3.3 计划的人员配备分布  / 263 
    13.3.4 成本和效率   / 264 
    13.3.5 结果总结   / 264 
    13.4 压缩方案  / 264 
    13.4.1 添加启用活动   / 264 
    13.4.2 分配资源  / 265 
    13.4.3 计划进度  / 266 
    13.4.4 计划的人员配备分布  / 266 
    13.4.5 成本和效率  / 266 
    13.4.6 结果总结  / 267 
    13.5 分层设计  / 268 
    13.5.1 分层设计和风险  / 268 
    13.5.2 人员配备分布  / 269 
    13.5.3 结果总结  / 269 
    13.6 亚临界方案  / 269 
    13.6.1 持续时间、计划进度和风险  / 270 
    13.6.2 成本和效率  / 270 
    13.6.3 结果总结   / 270 
    13.7 比较选项   / 271 
    13.8 计划与风险   / 271 
    13.8.1 风险缓解  / 271 
    13.8.2 重新计算成本  / 274 
    13.9 为SDP评审做准备  / 274 
    第14章 总结  / 276 
    14.1 项目设计时间  / 276 
    14.1.1 真实的答案  / 277 
    14.1.2 迈向未来  / 278 
    14.2 一般性指导  / 279 
    14.2.1 架构与估算  / 279 
    14.2.2 设计立场  / 280 
    14.2.3 可选性  / 280 
    14.2.4 压缩  / 281 
    14.2.5 计划与风险  / 283 
    14.3 项目设计的设计  / 283 
    14.4 不同的视角  / 285 
    14.5 交接  / 287 
    14.5.1 初级交接  / 287 
    14.5.2 高级交接  / 287 
    14.5.3 资深开发人员作为初级架构师  / 288 
    14.6 实践  / 289 
    14.7 项目设计的口头汇报  / 290 
    14.8 关于质量  / 291 
    14.8.1 质量控制活动  / 291 
    14.8.2 质量保证活动  / 292 
    14.8.3 质量与文化  / 293 
    |附录| 
    附录A 项目跟踪  / 296 
    附录B 服务契约设计  / 310 
    附录C 设计标准  / 323 

查看详情
12
相关图书 / 更多
架构之道:软件构建的设计方法
架构演变实战:从单体到微服务再到中台
潘志伟
架构之道:软件构建的设计方法
架构启示录
Steenson 著;[美]莫莉·赖特·斯廷森(Molly、Wright、爱飞翔 译
架构之道:软件构建的设计方法
架构真意:企业级应用架构设计方法论与实践
范钢;孙玄
架构之道:软件构建的设计方法
架构师应该知道的37件事
[美]格雷戈尔·霍培(Gregor Hohpe)
架构之道:软件构建的设计方法
架构大数据(大数据技术与算法的深入解析研究)
黄思行、段昂、韦鹏程 著
架构之道:软件构建的设计方法
架构设计2.0:大型分布式系统架构方法论与实践
余春龙
架构之道:软件构建的设计方法
架构师的自我修炼:技术 架构和未来
李智慧
架构之道:软件构建的设计方法
架构师修炼之道――思维、方法与实践
张云鹏 著
架构之道:软件构建的设计方法
架构师启示录:知识模型、落地方与思维模式 图形图像 灵犀 新华正版
灵犀
架构之道:软件构建的设计方法
架构思维:从程序员到CTO
郭东白
架构之道:软件构建的设计方法
架构基础:从需求到架构
尹洪亮
架构之道:软件构建的设计方法
架构解密:从分布式到微服务(第2版)
吴治辉