软件架构师

工学领域术语
收藏
0 有用+1
0

定义

要求

(5)精通 构架 设计的理论、实践和工具,并掌握多种参考构架、主要的可重用构架机制和模式(例如J2EE架构等);
(6)具备系统设计员的所有技能,但涉及面更广、抽象级别更高;活动确定用例或需求的优先级、进行构架分析、创建构架的概念验证原型、评估构架的概念验证原型的可行性、组织系统实施模型、描述系统分布结构、描述运行时刻构架、确定设计机制、确定设计元素、合并已有设计元素、构架文档、参考构部署模型、构架概念验证原型、接口、事件、信号与协议等。架、分析模型、设计模型、实施模型。 [1]
1、领导与协调整个项目中的技术活动(分析、设计和实施等)。
2、推动主要的技术决策,并最终表达为软件构架。
3、确定和文档化系统的相对构架而言意义重大的方面,包括系统的需求、设计、实施和部署等“视图”。
4、确定设计元素的分组以及这些主要分组之间的接口。
5、为技术决策提供规则,平衡各类涉众的不同关注点,化解技术风险,并保证相关决定被有效的传达和贯彻。
6、理解、评价并接收系统需求。
7、评价和确认 软件架构 的实现 专业技能。

培养

软件架构师
软件架构师一般都是具备计算机科学或软件工程的知识,由程序员做起,然后再慢慢发展为架构师的。在国内,很多大学还没有设立软件架构的学位课程,虽然IT业界对设计和架构的兴趣日渐高涨,但各学校还是无法在课程中增加相应的内容来体现这一趋势。从这个方面来说,学校教育已经远远落后于产业发展。因此,促进和发展软件架构学课程的任务将落在软件架构师身上。软件架构师应该帮助各大院校建立相关课程体系,一旦教育课程建立起来,知识体将不仅通过新毕业生的工作成果来得到扩展,同时也会从适合软件架构的教育研究和出版物中得到扩展。
虽然大学要加强软件架构学课程的建设,但是,软件架构师的成长应该有一个实践的教育过程,并不是简单的学校的理论学习或者通过大型软件公司的认证就能成为合格的软件架构师。除了信息系统综合知识在学校学习外,软件架构师的大部分知识和经验将来自实际开发工作。根据软件架构师的任职条件,一名合格的软件架构师的成长应该经历8年以上的软件项目开发实际工作经验。一般需要经历程序员、 软件设计师 等阶段,然后再发展成为软件架构师。
当然,并不是每一位程序员经过8年后都可以成长为软件架构师的。一个软件工程师在充分掌握了软件架构师工作所必需的基本理论和技能后,如何得到和利用机会、如何利用所掌握的技能进行应用系统的合理架构、如何不断的抽象和总结自己的架构模式、如何深入行业成为能够胜任分析、架构为一体的精英人才,这就在于机遇、个人的努力和天赋了。
国内软件架构师的培养途径主要有两种方式,一种是大学(软件学院)教育方式,另一种是个人自我培养然后再进行相应的培训和认证。但是,不管哪种方式都有其不足之处。
软件学院的培养方式能够系统的学习软件架构师必需的知识体系,但是,软件架构师不是简单的通过理论学习就能够培养出来的,软件学院的学生可能缺乏必要的设计、开发经验和相关的领域知识。尽管软件学院也强调给予学生实践的机会,但毕竟这种机会是有限的。有关“三分之一的师资来自企业”的规定,在部分软件学院中也没有得到真正落实,导致传授给学生的还是一些纯理论知识。
自我培养方式的主要对象是具有一定年限的软件开发和设计人员,如Microsoft、IBM、Sun等公司的软件架构师认证对学员的基础并没有具体的要求,只要交纳规定的费用,然后进行几天的集中培训,通过考试就发给学员证书,甚至不需要考试就直接发放证书。这些开发人员在自我培养的过程中不一定能够系统的学习软件架构师的理论知识,他们只具有一定的开发和设计经验,仅仅经过几天的培训,是不太可能培养出合格的软件架构师的。而且,作为某个厂商的培训和认证,其最终目的是培育自己的市场,培养一批忠诚的用户,而不是为中国培养软件架构师。因此,也存在很大的问题和缺陷。

职责

除了上述任务以外,检查初期架构规划设计、影响因素与成本,维持与组织架构决策的一致性也是 架构设计师 的重要职责之一。这通常要找出制定项目的架构决策与其优先级的判断基准、定义问题领域、决定可能解决方案的制约条件、确认有关可能解决方法的假设状况以及辨识模块重用的可能性。软件架构师也必须负责确保需求的达成,以及硬件、软件、基础结构、性能、安全性、容量、可用性和系统运行、管理与维护等属于系统层次相关技术之间的协调与平衡。在某些关键时刻,软件架构师也要做出系统与架构在协调、平衡上种种必须当机立断但又很难判断的决策。
软件架构师必须设法降低可能的技术风险对系统的冲击。在规划初期,技术风险对一般人来说通常都是不可知、不可验证也不可测的。风险大多与系统层次的需求有关,有时也会与组织需求有关。不论任何类型的风险,有经验的 架构设计师 都可在项目的先期也就是构建架构时期,预先列出这些可能的风险,然后在后续的开发时期配合开发人员予以适当地处理与解决。另外,架构设计师也必须领导开发团队,保持与其他成员的良好互动,确保开发人员是根据架构蓝图来构建系统。
总之,软件架构师的主要任务就是规划与系统架构层次相关的事务,评估可能的风险与成本,并有效运用有限的人力、物力资源满足系统层次的需求。优秀的软件架构师是保证软件系统强大生命力的核心人物。专业架构师能够帮助组织全面研究现有架构和设计模式、评估系统设计的优缺点和可能存在的风险,通过一系列的专题指导和具体案例帮助组织掌握先进的、成熟的设计模式,简化复杂的业务逻辑和需求,确定系统最佳方案。在必要的情况下,还可就特定领域或课题,为开发人员提供定制指导。 [3]