如何评价架构的优劣

上传人:wm****3 文档编号:42465555 上传时间:2018-06-02 格式:DOC 页数:10 大小:26.56KB
返回 下载 相关 举报
如何评价架构的优劣_第1页
第1页 / 共10页
如何评价架构的优劣_第2页
第2页 / 共10页
如何评价架构的优劣_第3页
第3页 / 共10页
如何评价架构的优劣_第4页
第4页 / 共10页
如何评价架构的优劣_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《如何评价架构的优劣》由会员分享,可在线阅读,更多相关《如何评价架构的优劣(10页珍藏版)》请在金锄头文库上搜索。

1、如何评价架构的优劣如何评价架构的优劣 这是我在今年上海参加亚太软件研发团队管理年会时,InfoQ 对我的一次采访内容(我自以为普通话还算行,听了视频,才觉得自己的普通话真是糟透了。而且在采访之初,看得出来,我有些小小的紧张啊)。本次发言,仅代表个人观点,未必正确。如有不妥,敬请指正。视频请链接:张逸谈如何评价架构的优劣大家好,我现在是在亚太软件研发团队管理年会,坐在我旁边的是大家好,我现在是在亚太软件研发团队管理年会,坐在我旁边的是软件设计精要与模式软件设计精要与模式的的作者张逸。张逸你好。作者张逸。张逸你好。你好。能给我们读者先介绍一下您自己吗?能给我们读者先介绍一下您自己吗?我 叫张逸,是

2、麦思博(MSUP)的金牌讲师,主要负责架构和设计的培训和咨询工作。在今年的上半年,我刚刚完成我这本书的第二版。目前从读者的反馈来看,这 个书本的情况还是比较满意。我对开发和设计架构的经验,大约有十年左右的时间,先后在中兴通迅、惠普和中软国际工作,担任的职务也有普通的开发人员、软件 开发工程师、架构师、项目经理、技术总监,在技术这块很多角色我都担任过,主要是在.NET 方向有一定的经验,是 2006 年到 2010 年连续四年的微软的 MVP。同时,我主要是在基于架构和设计掌握了一定的知识,也愿意和大家一块来分享架构和设计这一块,我的一些心得体会,谢谢。那您是如何看待架构师这个角色的?因为架构师

3、都包括很多职责,那您认为他的主要的职责都那您是如何看待架构师这个角色的?因为架构师都包括很多职责,那您认为他的主要的职责都有哪些,而其中最重要的又是什么?有哪些,而其中最重要的又是什么?说 到架构师,从在技术方面讲,它应该是很高的一个级别。我们都知道软件的这个架构是从建筑学里边引喻过来的,我们称为架构 Architecture,架构师 是 Architect。那么相对于建筑行业来说,架构师就相对于是建筑的设计师。但是软件行业,它跟建筑行业还有很大的区别,那么从我们业界来说,从几个 不同的视角来看,一般的架构师可能会把它分解为,业务架构师、系统架构师、软件架构师。那么整体来看,我可以打一个比方,

4、比如说这个项目是坐在一个车上, 项目经理就是这个开车的司机,那么架构师,他的职责应该是来规定汽车的行驶的路线,保障在这个车在整个行驶过程中不会出现任何问题,并且能够毫无障碍的最 后能够达到我们的目标位置,我觉得架构师就应该在把握整个技术,这个项目的方向,行驶的方向。那么他的职责,首先从技术方面,要非常满足客户需求。同时,在非功能需求方面,也能够满足要求的这样一个解决方案。第 二,他是要在业务和技术人员两者之间搭建一个很好的桥梁。在日本的外包开发里面,把架构师有时候称为 Bridge,桥梁的工程师,它的意思就是相当于把架 构、技术和业务之间搭建一个沟通的桥梁,怎么样把业务需求给理解分析,得到我们

5、的领域模型。同时,再把这个分析后得到的结果用模型设计出来。设计出来之 后,由我们的开发人员来进行实现,这是第二方面。第三方面应该是一个技术的带头人,就是负责在项目当中出现的技术问题,我们的开发人员应该首先通过架构师得到比较好的指导的意见。第 四个应该是作为一个规划师,就像我们整个改革开放有一个规划,几步走,分几步走,这样一个规划。那么对架构师来说,更多的是着眼于大局,而不是细节的这种 实现,尤其是针对产品开发来说,产品研发来说,有一个产品线的这样一个规划,这个整体的规划,我认为是架构师非常重要的一个职责。那刚才您也提到了架构师与项目经理不同的职责,那如何来权衡一个好的团队中架构师与项目那刚才您

6、也提到了架构师与项目经理不同的职责,那如何来权衡一个好的团队中架构师与项目经理之间的责权呢?经理之间的责权呢?首 先,不同的开发团队,不同的开发周期,选择不同的软件开发生命周期,可能在职责方面,他们的关系方面是有些区别的。从传统的软件开发管理来说,比如说瀑布 式的、迭代的、RUP 的,这些方面的组织结构相对来说,不是一个平行的结构,是有一个上下级的这种关系。但是在这种团队里面,项目经理和架构师应该是两个 不同的关系,一方面是一个上下级的关系,也就是说架构师还是要向项目经理来负责,项目经理负责安排架构师的一些工作,这是一方面的关系。但 是另外一个更重要的关系是,架构师和项目经理应该是一个 Par

7、tner 的关系,就是合作的这种关系。因为项目经理是负责整个项目管理这一块,他更多的是操 心的是怎么完成项目的进度,进度的安排,任务的跟踪,还有跟客户的协调。而架构师则是从技术方面以及业务的分析方面来完成,所以他们两个在这个层面上来 说,应该是一个平行的这种关系。但是在很多敏捷的团队里边,因为这个角色的划分就不是很清晰。例如以 Scrum 来说,那么 Scrum Master就相当于是我们传统所谓的项目经理,但是他的管理的职责权限被弱化了很多,而更多的是起到一个指导以及配合的这样一个作用。同时 Scrum Master 主要是负责把我们这个团队,把Scrum 这个团队能够更好的运作起来。那么在

8、这个团队里面,就没有所谓架构师这样一个职责,那么也许每个团队 成员可能都会成为架构师。像这样一个情况的话,根据我以前呆的项目来看的话,如果我们过于强化这种架构师的这种角色,有可能会对我们整个团队,会造成一定 伤害。像这种情况,我们就需要每个团队成员,发挥自己的这种自主能力,以平行的方式,在设计方面,更多的是以协作的方式,而不是以管理的方式来完成,这是 我的一个理解。您刚才说会带来一些伤害,是过于强调架构师带来的伤害吗?您刚才说会带来一些伤害,是过于强调架构师带来的伤害吗?因为 之前,我在惠普有一个项目,我们在实施 Scrum,但是我们原来有一种传统的,由于在公司,实施 Scrum 也是第一次,

9、大家都没有经验。我们当时我们的团 队成员,在开发能力方面、经验方面,还是有一定欠缺,所以当时由我来担任整个团队的架构师这个角色。但是在Scrum 里面,本来是没有这个角色的,但是由 于我们这个团队的特殊情况,增加这个角色。结果后来导致什么呢,就是我们这个团队,每个团队成员的这种主动性、积极性有一定的影响,他会对架构师产生一种 依赖,觉得有什么问题都会去找我,出现了技术方面把握不好,乃至于从需求方面把握不好的,都会来找我,这样就会导致我们没有形成一个 Team。我觉得这一 方面来说,可能会造成一些影响,其实这也是在敏捷,在咱们中国有些小的公司,或者来自于一些大的公司推广起来,出现一个障碍的一个大

10、的问题,就是我们团队 成员,在能力上还很难达到每个人都够完整的来完成业务的分析、设计,最后编码实现一些测试。在宏观这个角度来说,很多人不具备这个大局观。因此,在架构方 面也有很多欠缺,这是我的一个心得体会。很多架构师都是从程序员转型过来的,在转型的过程中,您认为哪些要素是比较重要的,哪些很多架构师都是从程序员转型过来的,在转型的过程中,您认为哪些要素是比较重要的,哪些要素又是比较难于把握的,如何来应对这个转型之痛呢?要素又是比较难于把握的,如何来应对这个转型之痛呢?这 件事确实是存在一个问题,我也跟很多一些刚刚踏入这个行业的程序员有过沟通,首先我问到他们的理想,如果是选择技术这块,他们的理想都

11、是架构师。这个问题 在我们这个行业来说是很突出的,我也和很多刚刚踏入这个行业的一些开发人员有过交流,我问到他们的理想,将来准备做什么,有的是想做管理,有的是想做技 术。那么想做技术的这些开发人员来说,他们都很向往这种架构师的角色,应该说架构师也确实是站在技术这块是最高的级别。但是他们怎么成为架构师,在这个过 程当中,他们应该做什么事情,应该怎么去往这个方向努力,其实他们都很茫然。事实上我们也知道,现在我们这个行业很多架构师,尤其是做技术的这些架构师,他们很多都是从开发人员这样一步一步走上来的。但是在这个过程当中,有的人就倒下了,有的人就一直就是成为一名普通的开发人员,或者软件 工程师,没有走上

12、这样一个层面。原因就在于,架构师需要的能力和开发人员需要的能力还是有区别的,我们要求架构师要有实现方面能力,这跟做建筑这块不一 样,建筑方面可以直接培养一个架构师,但是就我们这个行业来说,从学院里面培养出来一个架构师是不大可能的,是需要有很多经验的积累,也是要有编码的这样 一些技巧,这是必须的。就是架构师必须要了解实现,但是如果停留在实现这个层面,就不可能成为一名合格的架构师,是因为架构师把握的更多的是大局的东西, 是一个更高层面的、抽象方面的知识。怎么才能成为一名架构师呢,需要在这方面有意识的培养自己,第一个培养,就是从行业这块,因为做我们 这个软件行业,根据不同的领域,领域模型可能不一样,

13、业务流程不一样,业务规则不一样。那么如果你对这个行业的业务规则、业务流程不清楚,你也很难得到一 个好的理论模型,也就很难得到一个好的架构,所以从行业这方面,要有意识的培养这方面的能力。就是你可以集中在你公司所从事的一些行业,比如金融行业,或 者制造行业,或者保险行业,电信、通讯这方面的行业,要有这方面的能力,你要有意识去积累。而不是要埋头光顾着写代码,而是有意识的去参与一些需求这块的 理解和分析,这是我认为第一个。第二个,就是要去掌握一些提高自己的抽象能力,提高自己的建模能力。因为架构师所需要具备的最大的、最强 的一个能力,就是能够从很纷繁复杂的需求当中,从很多细节实现当中,能够去抽象出一个共

14、同的东西出来,能够从不同的地方,能够找到共同的地方,也就是所谓 的共性和可变性这样一种分析,他们在这一方面的能力把握的非常好。然后这一方面的能力,把握抽象出来以后,还要把它形成为一个模型,形成出领域模型、分析 模型、设计模型,通过这个模型的方式来把它表达出来,就是我认为要有意识的要积累这方面的能力。第三个,我认为应该有意识的、有前瞻性的 去了解这方面的知识,不管是从网络上,包括像咱们 InfoQ 也有一个架构的专区,架构专区有很多很优秀的文章,都是国内外一流的架构师写的一些文章,可以 有意识的去看这些方面的文章,或者是读一些优秀的书籍。那么从这方面来培养你在架构这一块的能力。第四个我觉得还有一

15、个交流,有意识的提 高交流,很多开发人员为什么没有在最后成为架构师,就是因为他们很多技术人员可能比较内向,偏向于研究,偏向于和机器打交道,而忽略了和人打交道。而架构 师,我刚才也说了,架构师是在业务和实现的技术人员两者之间搭建一个桥梁,这桥梁一方面是从书面的角度、文档的角度来进行协作、交流,另外一方面就是口头 方面来交流,而我们开发人员在这一方面还有所欠缺。所以我认为,开发人员要最后成长为一个架构师,第一个你要把目标定好,定好之后,就要有意识的往这个方 向去发展,要培养架构师具备的这些能力。再根据多做一些项目,有效的、及时的去总结这些项目的经验,或者说及时的去学习一些,因为你可能是开发人员,但

16、是 在你的项目组里边,肯定有架构师类似这样的角色存在,那么你可以有意识的向这个架构师去学习,或者说从他那个地方得到的一些东西、方案,你学会去思索,去 思考,这样我觉得慢慢的从经验上去积累,从技术上去积累,从能力上去提高,慢慢的我想,给你一个好的机会,一定能会成为一名合格的,乃至于优秀的架构师。那您刚才说的这几点中,其中哪一点是比较难以把握的?对一个程序员来说,比较困难的反面那您刚才说的这几点中,其中哪一点是比较难以把握的?对一个程序员来说,比较困难的反面具体有哪些?具体有哪些?困 难应该还是抽象的能力和大局观的能力。因为我们要求开发人员的能力,就是要求他具体的实现能力,把握细节,某一个算法的一个实现,然后某一个业务流程,他 怎么去实现,或者某一个技术,不管是什么语言,或者什么平台,某一个技术,比如说安全,或者是写一个 Web Service,或者是写一个权限管理。在这一块来说,他们的能力是很强的,但是怎么把它提取到更高的抽象能力和大局观这块,我觉得很多开发人员都比较欠 缺。那您刚才也提到了对技术和业务对于架构师的影响,架构师需要成为技术专家吗?或者是他也那您刚才也提到了对技术和

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号