- 推荐序一:架构师真正要学会的事情
- 推荐序二
- 译者序 2.0
- 序
- 关于本书
- Part Ⅰ 什么是软件架构
- 第 1 章 什么是架构
- 第 2 章 架构的种类
- 第 3 章 软件架构是什么
- 第 4 章 敏捷软件架构是什么
- 第 5 章 架构对上设计
- 第 6 章 软件架构重要吗
- 第 7 章 问题
- Part Ⅱ 软件架构的角色
- 第 8 章 软件架构的角色
- 第 9 章 软件架构师应该编码吗
- 第 10 章 软件架构师应该是建造大师
- 第 11 章 从开发者到架构师
- 第 12 章 拓展 T
- 第 13 章 软技能
- 第 14 章 软件架构不是接力运动
- 第 15 章 软件架构要引入控制吗
- 第 16 章 小心鸿沟
- 第 17 章 未来的软件架构师在哪里
- 第 18 章 每个人都是架构师,除非他们有其他身份
- 第 19 章 软件架构咨询师
- 第 20 章 问题
- Part Ⅲ 设计软件
- 第 21 章 架构驱动力
- 第 22 章 质量属性(非功能需求)
- 第 23 章 处理非功能需求
- 第 24 章 约束
- 第 25 章 原则
- 第 26 章 技术不是实现细节
- 第 27 章 更多分层等于更高复杂度
- 第 28 章 协同设计是一把双刃剑
- 第 29 章 软件架构是对话的平台
- 第 30 章 SharePoint 项目也需要软件架构
- 第 31 章 问题
- Part Ⅳ 可视化软件
- 第 32 章 沟通障碍
- 第 33 章 对草图的需要
- 第 34 章 无效的草图
- 第 35 章 C4:语境、容器、组件和类
- 第 36 章 语境图
- 第 37 章 容器图
- 第 38 章 组件图
- 第 39 章 是否包含技术选择
- 第 40 章 你会那样编码吗
- 第 41 章 软件架构和编码
- 第 42 章 你不需要 UML 工具
- 第 43 章 有效的草图
- 第 44 章 C4 的常见问题
- 第 45 章 问题
- Part Ⅴ 为软件生成文档
- 第 46 章 代码不会讲述完整的故事
- 第 47 章 软件文档即指南
- 第 48 章 语境
- 第 49 章 功能性概览
- 第 50 章 质量属性
- 第 51 章 约束
- 第 52 章 原则
- 第 53 章 软件架构
- 第 54 章 外部接口
- 第 55 章 代码
- 第 56 章 数据
- 第 57 章 基础设施架构
- 第 58 章 部署
- 第 59 章 运营和支持
- 第 60 章 决策日志
- 第 61 章 问题
- Part Ⅵ 开发生命周期中的软件架构
- 第 62 章 敏捷和架构的冲突:神话还是现实
- 第 63 章 量化风险
- 第 64 章 风险风暴
- 第 65 章 恰如其分的预先设计
- 第 66 章 初识软件架构
- 第 67 章 问题
- Part Ⅶ 金融风险系统
- 第 68 章 金融风险系统
- Part Ⅷ 附录:技术部落 的软件指南
第 14 章 软件架构不是接力运动
更敏捷的软件团队很可能由除了一项核心专长,还具备更多综合知识和经验的通才组成。理想状况下,这些跨领域的团队成员会一起工作,运作和交付一个软件项目,承担从收集需求和架构到编码和部署的所有事情。尽管很多软件团队都朝自组织的方向努力,然而现实中他们往往更大、更混乱,而且由专才构成。因此,这些团队往往需要,也确实有一个人担任技术领导。
解决方案架构师
有很多人,特别是在大型组织里,自称“解决方案架构师”或“技术架构师”。他们设计好了软件,为自己的方案编写文档,然后扔给一个单独的开发团队。这个方案一旦“完成”,架构师就会去别的地方重复这个过程,甚至往往对开发团队的进展看都不看一眼。如果再加上“不是我发明的”综合症,结果往往就是接手的团队不会对这个方案负责,最初创建的“架构”变得脱离现实。
我曾见过不少这样的架构师,我主持过的一次面试就是这种软件开发方法的缩影。在照例抛出“谈谈你的角色和最近的项目”这个问题之后,我就清楚地知道,面前这个(为一个大型“蓝筹”咨询公司工作的)架构师的所作所为,就是给一个项目创建软件架构,写好文档然后到其他地方重复这个过程。他告诉我,给出“方案”后就很少或不再参与项目,然后我问他怎么知道他的软件架构是管用的。他被这个问题困住了,最后他声明这是“实现细节”。他自信地认为自己的软件架构是正确的,如果开发团队没有让它工作,那是他们的问题。在我看来,这种说法简直荒谬,这让他看起来像头蠢驴。他的方法也就是AaaS……“架构即服务”1!
1AaaS,即Architecture as a Service。——译者注
要有人负责大局
不同于典型的软件开发者,软件架构角色需要通才。这肯定是在软件项目起航阶段掌舵的角色,包括管理非功能性需求,整理出对上下文和环境因素敏感的软件设计。但也要不断地转向,因为你选择的航线可能需要在途中调整。毕竟,敏捷方法已经向我们展示了,不一定预先就有(或需要)所有的信息。
创建一个最初的愿景,交流,并在整个软件开发的声明周期中潜在地演化它,这些对一个成功的软件项目是必需的。单是这个原因,让某人来创建这个愿景,然后让另一个团队去(试着)交付,就毫无意义。当这种事情发生时,初始的设计方案本质上就成了在架构师和开发团队中传递的指挥棒。这很低效,甚至无效,文档交换也意味着很多与创建愿景相关的决策上下文也丢失了。祈祷开发团队永远不需要问任何关于设计或其意图的问题吧!
真正的自组织团队不会有这样的问题,但大多数团队还没有成熟到那个程度。在整个交付中,要有人负责大局,同时为保证软件顺利交付承担责任。软件开发不是接力运动,顺利交付也不是“实现细节”。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论