写点什么

理想的架构并不总是和理想的技术相关

2008 年 2 月 25 日

根据公认的定义,软件架构师的角色是定义“系统的宏观方面,这个系统则基于来自其利益相关方的投入。”这意味着架构师不能只由技术因素来驱动。他们需要记住不同利益相关方的需求,这往往制约着对技术和架构设计做出选择。

Phillip Calçado 在他的 blogpost 上强调,除了系统用户和项目赞助商之外,软件开发团队也是一个重要的利益相关方,因为开发者会直接受到架构决策的影响。因此,尽管开发环境可能会限制架构师的选择,甚至会导致放弃对项目而言客观上最好的技术,但架构师还是应该考虑开发环境

举例来说,Calçado 强调考虑团队的技术背景是极其重要的:

试想你加入一个长期从事 VB6 开发的团队去开发一个新的网站。尽管你知道 Ruby on Rails 是完成这项工作最好的工具,但是没有人有 Ruby on Rails 的相关经验。而这个网站又必须在短时间内交付,没有时间进行培训。你还会主张选择最好的技术吗?

另一个限制因素可能会来自团队的分布,无论是不是物理分布。在 Claçado 举的例子中,为证券交易所经纪人开发的系统有三个部分——数据采集、用户交互和事务,其中每一个部分由不同的团队处理。从技术上讲,即使将系统设计为单一模块可能是最好的选择,但是架构师将不得不设计三个黑盒模块,以便“团队在完全独立的组里面工作。”

总的来说,Calçado 强调道“收集那些受你的决定影响最大的小组的反馈、尊重他们的意见是很有必要的”。评论家 Alberto Brandolini 用“持续性架构(sustainable architecture)”的概念来支持同样的思路,持续性架构要求架构师保证他的“架构设计能由团队成员完成交付。”

将这种制约因素考虑在内对项目的成功是非常重要的。但是,这并不意味着因为团队在时间和技能可用度方面的约束和阻力,就一定要放弃那些真正为项目增值的技术。架构师的角色实际上是为引入变更创建策略,并将策略整合到设计当中:

[……] 架构师应该在系统的线路图中包含一个移植方案。[……] 举例来说,无论任何时候需要一段脚本或小程序,你就可以开始使用 Ruby[或任何需要的技术]、慢慢引入新的 Web 开发平台。最重要的是,你应该对系统以后应该是什么样子、以及怎么实现它有一个清楚的认识。

查看英文原文: Ideal Architecture is not always about Ideal Technology or Techniques

2008 年 2 月 25 日 03:18338
用户头像

发布了 151 篇内容, 共 54.1 次阅读, 收获喜欢 16 次。

关注

评论

发布
暂无评论
发现更多内容

2021年阿里Java高级面试题及答案

策划Java工程师

Java 程序员 后端

2021必看-Java高级面试题总结

策划Java工程师

Java 程序员 后端

2021最值得加入的互联网公司有哪些

策划Java工程师

Java 程序员 后端

2021大厂Java知识点总结

JVM调优资料

Java 程序员 后端

2021大厂Java面试真题集锦

JVM调优资料

Java 程序员 后端

DDD 领域驱动设计·学习应用·二

小诚信驿站

领域驱动设计 领域 领域驱动模型DDD 中台架构 领域驱动

2021年最新Java大厂面试题来袭

策划Java工程师

Java 程序员 后端

2021年最新大厂Java面试笔试题目

策划Java工程师

Java 程序员 后端

2021最新Java中级面试题目汇总解答

策划Java工程师

Java 程序员 后端

2021最新Java开发者学习路线

策划Java工程师

Java 程序员 后端

一次Http Get请求健壮性问题的排查过程

liuzhen007

8月日更

kubernetes入门:简介与基础操作命令

小黄鸡1992

8月日更

【Flutter 专题】78 图解 Android Native 集成 FlutterBoost 小尝试 (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 8月日更

2021年冲刺年薪40w

Java 程序员 后端

2021年大厂Java面经

Java 程序员 后端

2021京东最新Java面试真题解析

JVM调优资料

Java 程序员 后端

2021我的Java路要怎么走

策划Java工程师

Java 程序员 后端

2021Java面试笔试总结

JVM调优资料

Java 程序员 后端

2021大厂Java面试最火问题

JVM调优资料

Java 程序员 后端

2021年字节跳动+京东+美团面试总结

Java 程序员 后端

极客-大数据-作业4 Hive

西伯利亚鼯鼠

取经之旅第 55 天,Python OpenCV 透视变换前置知识轮廓坐标点

梦想橡皮擦

8月日更

2021大厂Java开发面试总结+解答

JVM调优资料

Java 程序员 后端

netty系列之:netty中的ByteBuf详解

程序那些事

Java Netty nio 程序那些事

手撕环形队列系列三:多生产者并行写入

实力程序员

程序员 数据结构 C语言 编程开发 环形队列

2021Java进阶者的新篇章

JVM调优资料

Java 程序员 后端

2021年上半年最接地气的Java面经

Java 程序员 后端

2021年抓住金三银四涨薪好时机

Java 程序员 后端

2021年春招Java面试题

Java 程序员 后端

2021年阿里Java高级面试题分享

策划Java工程师

Java 程序员 后端

iOS开发:NSSet的使用

三掌柜

8月日更

理想的架构并不总是和理想的技术相关-InfoQ