类似于建筑设计师,软件体系结构师就是在一个软件项目的开发过程中将客户的需求转换为规范的开发计划及文本,并制定这个项目的整体架构,直到整个团队完成这个计划。通过阅读资料了解到软件体系结构师的主要任务不是从事软件的程序的编写,而是从事更高层次的开发构架工作。他必须对开发技术十分了解,并且具有良好的组织管理能力,可以说一个软件体系结构师的好坏决定着整个软件开发项目的成败。
软件体系结构师的主要职责是1、确定需求,在开发过程中,软件体系结构师是在需求规格说明书完成后介入的,需求规格说明书必须得到软件体系结构师的认可。他需要和分析人员反复交流,以保证自己完整并准确的理解用户的需求。2、系统分解,依据客户的需要软件体系结构师将系统整体分解为更小的子系统和组件,从而形成不同的逻辑层或服务。软件体系结构师不仅要对整个系统进行分层,进行“纵向”分解,还要对同一逻辑层分块,进行“横向”分解。这个职责更加的体现一个软件体系结构师的功力,这是一项相对复杂的工作。3、技术选型,软件体系结构师通过对系统的一系列分解,最终形成了软件的整体架构。软件体系结构师对产品和技术的选型仅仅限于评估,没有决定权,最终的决定权归项目经理。4、制定技术规格说明,软件体系结构师在项目开发过程中,是技术权威。他需要协调所有的开发人员,与开发人员一直保持沟通,始终保证开发者依照他的架构意图去实现各项功能。软件体系结构师不仅要保持对开发者的沟通,也需要与项目经理、需求分析员、甚至于最终用户保持沟通。
软件体系结构师的能力要求,在技术全面、成熟练达、洞察力强、经验丰富,具备在缺乏完整信息、众多问题交织一团、模糊和矛盾的情况下,软件体系结构师能迅速抓住问题要害,并做出合理的关键决定的能力,具备战略性和前瞻性思维能力,善于把握全局,能够在更高抽象级别上进行思考。主要包括如下:1、对项目开发涉及的所有问题领域都有经验,包括彻底地理解项目需求,开展分析设计之类软件工程活动等2、具备领导素质,以在各小组之间推进技术工作,并在项目压力下做出牢靠的关键决策;⒊拥有优秀的沟通能力,用以进行说服、鼓励和指导等活动,并赢得项目成员的信任;⒋以目标导向和主动的方式来不带任何感情色彩地关注项目结果,软件体系结构师应当成为项目背后的技术推动力,而非构想者或梦想家(追求完美);⒌精通构架设计的理论、实践和工具,并掌握多种参考构架、主要的可重用构架机制和模式(例如J2EE架构等);⒍具备系统设计员的所有技能,但涉及面更广、抽象级别更高; 活动确定用例或需求的优先级、进行构架分析、创建构架的概念验证原型、评估构架的概念验证原型的可行性、组织系统实施模型、描述系统分布结构、描述运行时刻构架、确定设计机制、确定设计元素、合并已有设计元素、构架文档、参考构架、分析模型、设计模型、实施模型、部署模型、构架概念验证原型、接口、事件、信号与协议等。
软件体系结构师在整个软件开发过程中都起着重要的作用,并随着开发进程的推进而其职责与关注点不断地发生着变化,在需求阶段,软件体系结构师主要负责理解和管理非功能性系统需求,比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性几个方面,此外,软件体系结构师还要经常审查和客户及市场人员所提出的需求,满足用户的需求,确认开发团队所提出的计划;在需求越来越明确后,软件体系结构师的关注点开始转移到组织开发团队成员和开发政策的设计;在软件设计阶段,软件结构设计师负责对整个软件体系结构、关键构件、接口和开发政策的设计;在编程阶段,软件体系结构师则成为详细设计者和代码编写者的顾问,并经常行的要举行一些技术研讨会、技术培训班等;随着软件的开始测试、集成和交付,集成和测试支持将成为软件体系结构师的工作重点;在软件维护开始时,软件体系结构师就开始为下一版本的产品是否增加新的功能模块进行决策。