作者 |
[美]居瓦·洛瑞(Juval L&ouml wy) |
丛书名 |
架构师书库 |
出版社 |
机械工业出版社 |
ISBN |
9787111687702 |
简要 |
简介 |
内容简介书籍计算机书籍 本课程通过自顶向下的程序设计演示和解释,教授学生如何在机器层面上编写和调试程序,并将有效的设计技巧应用于多种程序设计课程。这种方法简化并消除了学生在学习更高级的计算机体系结构和操作系统课程之前需要掌握的概念。 |
目录 |
赞誉 译者序 前言 作者介绍 第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 |