本学期开始了软件架构的相关知识学习,在阅读了王概凯的几篇博文后,对架构和架构师有了一定的理解。

  软件架构师是的工作有着很强的体挈性,如同《梦想改造家》中的高级设计师,从建筑材料,室内布局、室内装修、家具选用、施工时间等等问题,全部任务有一个人或一个组织(设计师组)完成。架构师的工作任务决定了架构师有着工时分配权,所以理应拥有一定的领导权。架构师的工作

 在回答软件架构师是如何工作之前,需要先要明确软件架构师的地位,即软件架构师的应有的权利与义务。软件架构师的任务是在软件实际开发之前进行的,却覆盖了软件开发的全过程。

软件架构师的工作任务

(1)领导与协调整个项目中的技术活动(分析、设计和实施等)

(2)推动主要的技术决策,并最终表达为软件构架

(3)确定和文档化系统的相对构架而言意义重大的方面,包括系统的需求、设计、实施和部署等“视图”

(4)确定设计元素的分组以及这些主要分组之间的接口

(5)为技术决策提供规则,平衡各类涉众的不同关注点,化解技术风险,并保证相关决定被有效的传达和贯彻

(6)理解、评价并接收系统需求

(7)评价和确认软件架构的实现 专业技能

一言以蔽之,软件架构师需要以全局的视角在项目开始前,对所有问题给出解决方案。类似于诸葛亮去东吴前留给赵云的三个锦囊妙计。所以除去相关专业性的学习,软件架构师更需要丰富的项目开发经验去应对未知的问题与风险。这就要求软件架构师应能迅速抓住问题要害,并做出合理的关键决定的能力,具备战略性和前瞻性思维能力,善于把握全局,能够在更高抽象级别上进行思考,所以软件架构师需要具备以下素养:

对项目开发涉及的所有问题领域都有经验,包括彻底地理解项目需求,开展分析设计之类软件工程活动等;

具备领导素质,以在各小组之间推进技术工作,并在项目压力下做出牢靠的关键决策;

拥有优秀的沟通能力,用以进行说服、鼓励和指导等活动,并赢得项目成员的信任;

以目标导向和主动的方式来不带任何感情色彩地关注项目结果,构架师应当是项目背后的技术推动力,而非构想者或梦想家(追求完美);

精通构架设计的理论、实践和工具,并掌握多种参考构架、主要的可重用构架机制和模式(例如J2EE架构等);

具备系统设计员的所有技能,但涉及面更广、抽象级别更高;活动确定用例或需求的优先级、进行构架分析、创建构架的概念验证原型、评估构架的概念验证原型的可行性、组织系统实施模型、描述系统分布结构、描述运行时刻构架、确定设计机制、确定设计元素、合并已有设计元素构架文档参考构架分析模型设计模型实施模型部署模型、构架概念验证原型、接口、事件、信号与协议等。基于上述定义可以说,一个软件架构师工作的好坏决定了整个软件开发项目的成败。

软件架构师,和建筑设计师的工作很类似,建筑设计师不需要亲自去搬灰拌水泥,但是他需要知道每个型号的水泥强度、干燥时间。同样软件架构师不会直接参与进底层编程,但是他一定能够在这一领域有足够的实力,精通软件过程管理、软件项目计划。可以说,出色的软件架构师不仅是一个好的领导人、最起码曾经还是一个优秀的程序员