周爱民 关于架构之我的观点

30
QCon Beijing 2009 周爱民

Upload: george-ang

Post on 13-Jul-2015

3.293 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: 周爱民 关于架构之我的观点

QCon Beijing 2009

周爱民

Page 2: 周爱民 关于架构之我的观点
Page 3: 周爱民 关于架构之我的观点

生于无

Page 4: 周爱民 关于架构之我的观点

1、架构不是设计出来的

“设计架构”从根本上就是错误的。

2、架构源于分析,而非设计-设计可以拼搭,架构不可以-设计是既有,架构是源无

“架构(的)设计”讲述了架构的实现和细化过程,但不是“架构”的源起。

Page 5: 周爱民 关于架构之我的观点

系统整合

需求变更

版本升级

插件技术

消息接口

组件技术

Page 6: 周爱民 关于架构之我的观点

计算机科学是研究将现实系统“抽象”为计算机可以理解和运算的系统,并……

问题是,“什么是抽象?”

反过来的问题是,“什么不是抽象?”

既然我们所述的一切,都是“抽象系统”,那么我们——人——是怎么办到的?

Page 7: 周爱民 关于架构之我的观点

抽象思维 形象(具象)思维 灵感思维

Page 8: 周爱民 关于架构之我的观点

问题总是掩盖在需求之后

Felix跑来问我,《现实问题的结构化分析》中讲的为什么都是需求。其实这是错 的。温伯格给问题的定义是“现实与期望之间的差异”,而需求不是这样,需求只 包括“需要的目标”。

Page 9: 周爱民 关于架构之我的观点

你如何描述我们这个会场?

一个大房间? 上百个人? 一个投影仪?

房间、人、投影仪……就是抽象。它们并非是具象的,当我用这个名词时,你并不知道它们确指什么、是什么形貌、质量、重量……

Page 10: 周爱民 关于架构之我的观点

我们描述这个会场时,大体还是知道这个“样子”的。

从抽象概念中,我们首先知道共性的东西。但是,由这种共性抽象组织的系统,并不是计算机系统的全部。

例如:原始人开会吗?蚂蚁开会吗?或者,我——一个人——自己可以开会吗?

Page 11: 周爱民 关于架构之我的观点

共性抽象:更加准确地描述系统 本质抽象:更加泛义地描述系统

会场=开会的地方 开=交流 会=集中在一起的群体 地方=上述行为所依赖的一个位置

所以,一个会议系统,需要: 语音或视频之类的,用于交流的工具,及其管理系统、支持与保障系统;

人员,与会者与听众的管理系统(包括登记、回访等)

位置,例如预约、排程以及会议(地址)通知等。

Page 12: 周爱民 关于架构之我的观点

本质抽象更适合描述架构,而共性抽象更适合于实现、实施系统。

架构本身,是要具备长期的不变性的。它描述的是系统中不变的部分。例如:本质上一个系统是什么?或本质上一个系统应该提供什么?等等。

Page 13: 周爱民 关于架构之我的观点

大系统是必然变化的 变化本身不可预知 战略或目标是确定的、一贯的

当前系统

远期系统

我们关注这个过程中不变的部分

Page 14: 周爱民 关于架构之我的观点

架构的目标是 战略、产品线 具体策略(战术)

大多数情况下,BOSS知道“是什么”,而不知道“如何做”。

大多数情况下,架构师应该知道“如何实现”,以及“实现的目标‘是什么’”。

(同样是)大多数情况下,(一般的)架构师未能了解什么是“战略目标”。

Page 15: 周爱民 关于架构之我的观点

架构通常需要围绕战略目标来提出。

架构师通常最难做到的是了解需求,以及确定变化与不变的部分。

架构是得到一个形式系统,以描绘上述不变部分的一个抽象过程。

在上述这个过程中,“系统”是未得的、不可见的,以及完全“概念化”的。

Page 16: 周爱民 关于架构之我的观点

在上述这个过程中,“系统”是未得的、不可见的,以及完全“概念化”的。“架构”的这个过程,是从无到有的一个过程。

相关物

相关物

相关物

相关物

抽象

原始需求 架构 体系结构

Page 17: 周爱民 关于架构之我的观点

例如外包,就只有实现,没有架构。反过来说,我们要外包给别人,就需要做好架构的工作。要知道整个项目中确定的,不可或缺的,不能失败的是什么。至于哪部分谁做,那是第三步、第四步的问题。

观点:架构是过程而非结果——从无到有的是架构(从未存在过的东西,才是架构)

观点:没有创生(而非创新),就没有架构。

Page 18: 周爱民 关于架构之我的观点

Prospectus

Requirements

Architecture

High‐LevelDesign

计划和架构设计阶段

发现评审(Discovery Review)

架构评审(Architecture Review)

Low‐LevelDesign

from:Joe MaranzanoATT Bell Labs,USG

“想”,但不是“空想”。凭空想像杜撰出来的是玄幻,不是架构。

Page 19: 周爱民 关于架构之我的观点

看不见

Page 20: 周爱民 关于架构之我的观点

如果你手里有一把锤子,所有东西看上去都像钉子。 心中有锤,就容易为其奴役; 始终莫要忘记提醒自己,“问题是什么?” 没有锤子是万万不行的,没有谁会傻到徒手钉钉

正确的态度应该是:手中有锤,心中无锤。 不要忘掉其适用前提 别忘记自己要解决的问题是什么。Why 永远在 How 之前。

如果你想钉一个钉子,所有东西看上去都像是锤子。 专注于你想要解决的问题,那么你所看到的东西就会呈现出以往你没有看到的一面。

Page 21: 周爱民 关于架构之我的观点

阿基米德洗了一辈子的澡,然而,只有那一次,当他想要解决皇冠密度问题的时候,想到可以利用排水体积来测量不规则物体体积。

Page 22: 周爱民 关于架构之我的观点

1、有时候说实话就是笑话; 2、我们很多笑话是想出来的,是结构出来的。

Page 23: 周爱民 关于架构之我的观点

架构的存在,不要影响业务

大到看不见

小到看不见

设计做大与实施做小

如何做到影响最小?

Page 24: 周爱民 关于架构之我的观点

架构没有好不好,只有合适不合适

关注你的每一项决策

你的建议是否正确?

你在实施团队里吗?

好不好,与能不能

Page 25: 周爱民 关于架构之我的观点

架构的实现是渐次的

如果做不到,那么折衷

折衷,并不是放弃

柔,与弱

勇,与敢,勇敢与勇于不敢

有备无患

Page 26: 周爱民 关于架构之我的观点

若大有

Page 27: 周爱民 关于架构之我的观点

.NET架构概要的历史与影响

Page 28: 周爱民 关于架构之我的观点

架构师要有全局观 现在很多架构只是拥有着一个架构师的头衔,只负责也只了解一个系统局部的、细节的知识。这并不是一个架构师应该的状态,没有全局观的架构师其实只是“负有更大责任的设计师”,因为他们细化、完善乃至于成就这个项目、系统,但是,并不创生它。

Page 29: 周爱民 关于架构之我的观点

从无到有(生于无)观点:架构是过程而非结果——从无到有的是架构           (创生从未存在过的东西,才是架构)观点:架构抽象的两种基本思想方法——由表及里,由此及彼观点:架构不是设计出来的——架构源于分析,而非设计

从有到无(看不见)观点:架构的实现是渐次的——做不出来,则为做出来做准备           (架构实现依赖技术的成熟,而技术成熟是一个过程)观点:架构没有好不好,只有合适不合适观点:架构的存在,不要影响业务——大到看不见,或小到看不见

从无到有(若大有)观点:架构的可变性——无限深远地适应未来

Page 30: 周爱民 关于架构之我的观点

花絮

1、为什么你能吃苹果2、枝节与细节3、尊重反动派