架构师需要参与项目开发的全过程,包括需求分析、架构设计、系统实现、集成、测试和部署阶段,负责技术活动和技术在整个项目的描述中进行指导和协调。架构师的职责主要有四项:1.确认需求在项目开发过程中,需求规格说明完成后架构师介入,需求规格说明必须得到架构师的认可。架构师需要与分析师反复沟通,确保他们对用户需求有完整准确的理解。2.系统分解架构师根据用户需求,将整个系统分解成更小的子系统和组件,从而形成不同的逻辑层或服务。随后,架构师将确定每一层的接口和层与层之间的关系。架构师不仅需要将整个系统分层进行“纵向”分解,还需要划分同一逻辑层进行“横向”分解。一个软件架构师的功力在这里基本体现出来了,是一个比较复杂的工作。3、技术选型架构师通过对系统的一系列分解,最终形成软件的整体架构。技术的选择主要取决于软件架构。Web服务器是在Windows还是Linux上运行?数据库是用MSSql,Oracle还是Mysql?是否需要使用MVC或Spring等轻量级框架?前端是用富客户端还是瘦客户端?此阶段呈现和评估。架构师对产品和技术的选择仅限于评估,没有决策权。最终决策权属于项目经理。架构师提出的技术方案为项目经理提供了重要的参考信息。项目经理会权衡项目预算、人力资源、时间安排等实际情况,最后确认。4.制定技术规范,说明架构师是项目开发过程中的技术权威。他需要协调所有开发人员,与开发人员保持沟通,始终确保开发人员按照其架构意图实现各种功能。架构师和开发人员之间最重要的交流形式是技术规范,它可以是多种形式,例如UML视图、Word文档和Visio文件。通过架构师提供的技术规范,保证开发人员可以从不同的角度观察和理解他们所负责的子系统或模块。架构师不仅需要与开发人员保持沟通,还需要与项目经理、需求分析师,甚至最终用户保持沟通。因此,对于建筑师来说,不仅有技术上的要求,还有人际交往方面的要求。架构师的误区一、架构师是项目经理架构师不是项目经理。项目经理侧重于预算控制、工期控制、人员管理、对外联络与协调等,具有管理职能。在一般的小项目中,项目经理和架构师很常见。2.架构师负责需求分析架构师不是需求分析师。需求分析师的工作是收集和分析需求,并与最终用户和产品经理保持联系。架构师只是对最终的需求进行评审和确认,提出不明确、不完整的需求部分。他将始终与需求分析师保持联系。架构师是技术专家,而不是业务专家。3.架构师从不写代码这是一个悬而未决的问题。目前有两种观点:观点一:架构师不写代码,写代码是纯体力活,架构师写的代码是大材小用。架构师将UML的各种视图交给开发人员,如果有不明确的地方可以随时与架构师沟通。观点二:架构师本来就是程序员出身,但比程序员层次更高。唯一比程序员更重要的是经验和知识,所以架构师不能避免写代码。我个人认为,这两种说法与建筑师的出身和环境有关。架构师首先是一个技术角色,所以肯定是来自于技术人员的群体,比如系统架构师,多来自于运维人员,他们自己可能写的代码不多,或者不能写出非常漂亮的代码。大多数软件架构师出身于程序员,有着程序员的血脉和情怀,所以在项目开发过程中,可能会编写一些核心代码。我们的理想是架构师不用写代码,但实际上,有时候太理想了。架构师是否编写代码可能取决于公司的规模、文化和开发人员素质的实际情况。
