分析:项目团队需要重新认识架构师的职责
51CTO 发表于:12年08月21日 00:50 [转载] 51CTO
面向架构的思考
一个目标或一件设计任务,在架构师的头脑中,永远是有层次感的,是立体的,就如同草稿中的一个建筑物:它应该是一个什么类型的建筑物,需要多少个支撑面、大概需要多高(几层楼)、需要满足多少功能…。
实际上,这是一种考虑问题的习惯:分类思考,分层观察。
架构师的一个重要素养或价值是将一个问题或者方案的“分类学”搞清楚 - 从几个方面来考虑,最重要的“动因”是什么,关键的需要是什么,关键的设计要素是哪几个。当然,做到这一点需要很强的理论功底,也需要很丰富的经验,这样你拿出来的解决方案才有说服力。
总结和分析问题
要善于总结经验,找到解决问题的最佳方法—架构模式。
要善于分析和归纳问题,找到事情的变化点和风险点,并能够采取良好的设计规避这些不稳定因素,这是普通和优秀架构师的重要区别。
站在巨人的肩山
“我之所以成功,是因为站在巨人的肩上。”
——牛顿
“既全面又面向重点细节的思路,参考前人的实践经验,聚焦问题的症结,采用安全且有创意的手段,追求完美的精神。”
——西门子中国首席架构师 李伟
不要重复造轮子,把轮子的样式和制造方法告诉我吧!架构也是一样,业界有很多通用的商业或者开源软件架构,比如Java的 Spring,Hibernate,.NET的Enterprise Library,Entity Framework 。我们可以参考别人用过的成功的架构,把它们作为参考架构。他们可以是现成的架构模式、架构机制和框架,也可以是具有已知特征并证实已在使用的完整系统。 使用经测试的参考架构是处理许多非功能性需求(尤其是质量需求)的一种有效方法。
先知其然,再知其所以然
“你们现在学的东西可能觉得对你们现在的工作没有太大的实际意义,但你应该先了解它,知道有这么回事,然后当你遇到问题的时候,想想有没有以前学习过的,有你就拿出来,仔细研究,使用,总结,最后你就能够驾驭它,这样你就成了专家,成了大师了。”
——这是老师最常给我们讲的一句话。
先知道有它,了解它,再使用它,驾驭它,这就是先知其然,再知其所以然。这是一种循序渐进的学习方式,软件架构的知识这么多,面这么广,不可能一下子全部掌握,现在学的以后可能会使用到的,到时候再来深研也不迟。
如果你不知道这些知识,这些方法,等你以后遇到问题,辛苦钻研出来,兴高采烈的宣称自己多么聪明,多么伟大的时候,说不定有人就会给你破盆冷水—这个问题某某人在很久之前就有好的解决方案了。
这不是说自己钻研不重要,而是这么做不值得,就像前面说的,不要重复造轮子,而在这之前,要有“先知其然,再知其所以然”的思维方式。
架构师的素养
不是谁都可以段时间内直接成为架构师的,需要有一些必备的素质和培养成的良好习惯。
沟通能力
一个人拥有知识,但是却没有能力清晰的表达自己,这简直就和他从来没有任何思想一样。
——亚里士多德
交流不完全是一种知识,而是本领,是生产力。
——吴建民
沟通能力是通过书面、口头和其它沟通方式表达自己的观点的能力。架构师要和客户,领导,开发人员,测试人员,维护人员等架构涉众进行沟通交流,要能够清晰的表达架构目的。
光沟通还不行,还要会沟通,要深入浅出的展现沟通。把书看厚难,再把书看薄更难。理解起来是说,看很多很多书、掌握很多很多知识很难,可是能够把很多很多知识再融汇贯通、抽象成为言简意赅的、深入浅出的“浓缩版”知识更难。为什么一定要架构师具备这样的本领?架构师需要很多沟通:其中最重要的沟通是向上,与管理层沟通,向管理层报告方案的要点,获取管理层的理解、支持和批准。
广博的知识面
架构师不是美术师(把建筑图纸画的很漂亮),架构师也不是力学家或材料学家。他精通主要技术,熟悉业界的最新动向,为我所用,甚至进而形成自己的设计风格和vision,然后说服管理层和团队成员。这是架构师(Architect)和某个专项专家(SME, Subject Matter Expert)的区别。
架构师从产品的生命周期上来看,他所涉及的层面很广,而且他所需要的知识面也会很广,需要过程更需要时间的学习和磨练。
另外,掌握很多知识,也是有备无患,说不定哪天就能够用上,就像上面说的“先知其然,再知其所以然”。软件架构师除了技术知识和行业知识,还应该掌握一些其它行业和学科的知识,比如建筑学,美学,甚至哲学。
不追求完美主义
前面说过,架构是有生命力的,要明白软件架构的生命周期,设计合适的架构而不是超前的最新的架构。
架构师不仅需要掌握各种相关知识,还需要有一个能够评判利弊并进行最优组合的能力。有时候,还不得不考虑到开发团队的实际水平和效率,否则设计再理想却难以实现,也成了纸上谈兵.因此,还需要对开发团队的成员的知识水平能有准确的判断能力。
关注成本
企业的IT技术不同于科学研究,技术永远都不能脱离成本来讨论,这就是你不能问奔驰和赛欧孰好孰坏的原因。
架构没有好坏之分,只有成本高低之分,如果成本过高,高过营收了,那公司赔钱,虽然也能把建筑物修建起来,但是没有意义了,因此,架构师最核心的要务是节约成本,通过合理的架构,在尽可能满足需求的前提下,节约成本。
出色的架构师拥有很强的成本概念,熟悉不同的技术方案的成本属性,了解不同的业务需求对于成本的基本限制。所以,出色的架构师可以向管理层和用户提供“适用”的、“可靠的” 的技术方案。
架构师之路
软件架构师是软件项目的总体设计师,是软件组织新产品开发与集成、新技术体系的构建者,是从宏观上驾驭大型系统的战略家,是对软件项目中所有重要架构事情做出决策的人,是策略制定者、组织协调高手、称职的顾问与领导者。
作为一个软件架构师,在整个软件系统的开发过程中是乐趣无穷的,因为这个角色很具有挑战性,有时需要左右逢源八面玲珑,有时又需要果断坚定不留情面。Philippe Kruchten曾经说过:当一个伟大的架构师领导开发团队时,团队的每个成员都感觉不到他的存在。次一点的架构师使开发团队的每个成员都喜欢他,再次一点的是害怕他,最次的是鄙视他。
具体来讲,架构师的职业道路有三个方向:
(1)行业应用架构。行业架构师往往是行业专家,了解行业应用需求,其架构行为主要是将需求进行合理分析布局到应用模型中去,偏向于应用功能布局。
(2)应用系统技术体系架构。技术架构师往往是技术高手中的高手,掌握各类技术架构、掌握应用设计模式,其架构行为考虑软件系统的高效性、复用性、安全性、可维护性、灵活性、跨平台性等。
(3)规范架构。规范架构师是通过多年磨砺或常年苦思顿悟后,把某一类架构抽象成一套架构规范。
这三个方向上面的道路怎么走,实在是一个太复杂的问题,而且国内很多公司可能要求一个架构师同时具备这三个方向上面的能力。所以,这路实在是不好走,而要成为前面说的那种优秀的架构师,这条道路实在是很长很长。