一种技术架构,主要负责搭建技术框架,公共组件以及对产品技术难点的解决和处理。同时要在项目上线的过程中,对架构的运作效率,开发效率等进行优化和升级。
一种是业务架构,主要跟随产品团队一起发展。这种业务架构师要理解具体的业务,要了解业务中具体的功能要求以及功能模块之间的关系。并且选择合适的公共组件和技术架构,用于产品发展的不同阶段。
很多小团队,技术架构和业务架构不再进行拆分。很多时候一个架构组前期负责技术选型,后期负责产品规划。或者很多技术架构的事情交给一个专门的团队进行规划。
从我们团队的职责需要支持整个公司的架构,我们需要两个架构师团队同时存在并且要求保持稳定。
从一般意义上来说,一个公司的架构师能力如何,将直接决定一个公司或者公司产品的技术路线是否先进、技术架构是否合理、技术积累成熟度、甚至于整个公司人员的技术水平。从这个角度上来说,系统架构师对公司来说具有非常重要的意义。
从普遍的情况来看,为了实现更好的技术积累,提升代码开发的质量,缩短开发周期,应该按照不同的所属行业,不同的技术路线来设置系统架构师。
举例来说:
1. 按照行业不同,照明事业部和市政事业部都应该单独设置架构师。
2. 按照技术路线不同,需要分为:.NET架构师,J2EE架构师,Android架构师,大数据架构师,微服务架构师等
1. 从项目的组织维度看,架构师从属于项目开发经理或者产品开发经理。
2. 从公司或者部门的组织维护看,架构师独立于项目,从属于部门经理。从部门级的组织关系看,系统架构师与开发经理同级。
要说明这个问题,首先要明确公司部门的组织结构,考虑到系统架构师工作职责的问题,一般采取以下架构(矩阵型组织架构)的公司比较多(个人建议)。
而我们公司事业部制的组织结构(项目型组织架构)如下:
- 负责产品或者项目的技术路线选型。
- 负责产品或者项目的系统架构设计。
- 负责产品技术路线和技术架构的技术积累,优化和升级。
- 负责新技术的研究和应用。
- 负责技术课题的攻关。
- 负责相关技术体系的培训工作。
首先,架构师能够准确把握第一手的需求,防止出现需求理解偏差;
其次,分析人员在与客户交流时,往往不会深入挖掘需求,因为有很多隐藏的需求客户自己都不见得意识的到,而架构师则可以依靠敏感的软件嗅觉发现这些需求,减少以后的变数;
第三,分析人员往往脱离开发团队,盲目接受客户需求,而架构师能够清楚把握现有的研发团队能做什么,不能做什么,提前预知风险,降低项目失败的机率。
总结:
系统架构师参与需求的整体理解工作,可以给出指导意见,但是需求分析由需求分析师负责。
在收集完信息后,架构师需要将用户需求转化为软件需求,同时要补充非业务需求,如健壮性,扩展性等等。如何区分和化解用户需求与软件需求,如何有效把握用户需求与软件需求的区别,是系统分解的核心。这是最考验架构师的地方,也是只有架构师参与的工作。
总结:系统架构师负责产品的系统分解,系统整体软件架构设计,但是不负责产品的业务功能设计和业务流程设计。
这一步要根据对软件需求决定项目该使用何种架构,开发模型,及依赖选项。如使用多层架构还是分布式架构,是使用MySQL还是SQLServer,是否需要使用企业库,是否需要使用ORM。但是,架构师对项目的技术选型要提供多种不同的方案,并为每种不同方案提供详细说明文档,用来阐述每种方案的优势,劣势,可行性等内容。这些文档供项目经理或领导决策最终的技术选型。
这里的技术选型,包含第三方产品的选型以及技术框架的技术选型。
同时要提出相应的技术规范,开发流程规范,代码规范,概要设计中相关规范(服务接口规范,性能要求,功能设计,UI规范等)以及部分详细设计规范(包含数据库设计规范(具体列表),重点流程设计规范,重点界面设计规范)。
总结:
1. 负责技术选型。
2. 负责技术标准制定。
3. 负责技术框架实现。
依据软件需求和技术选型,架构师需要和软件工程师一起将软件需求落实到软件详细设计说明书中。架构师负责将软件需求分解,重组织为子项目,子系统,组件和模块,以及它们之间的逻辑关系,从而形成不同的逻辑组成部分,最后还需要确定各个子系统及组件间的接口。这些都是作为进一步的团队分工的依据。同系统分解一样,系统设计是考验架构师能力的重要职责。
在进入到系统的详细设计阶段,架构师负责协助系统分析师,软件工程师等进行数据库设计,集成环境搭建等工作。
系统架构师负责系统的非功能性设计,数据库表结构设计等详细设计工作,但是UI设计不属于架构师,属于UI设计师。
在软件详细设计说明书完成后,为保证项目的顺利进行,架构师需要对整个团队进行技术培训。
沟通是保证项目顺利开展的有效保障。架构师要从多方面跟踪项目进度,及时与项目经理或直属领导汇报项目进展,与技术开发人员沟通遇到的问题,如果是迭代开发,还需要与用户沟通需求变更。
个人以为的系统架构师的发展规划主要流程应该是:
说明:
a) 单一产品的系统架构师:负责单个产品的技术架构设计,实现,维护以及技术积累。
b) 同行业体系下,多项目系统架构师:负责相同行业中单一个技术架构的多项目应用。能够根据项目的不同需求实现架构的优化。
c) 结合业务负责产品设计和系统设计的系统架构师:在负责技术架构的基础上,具备单个产品的产品架构设计能力。要具备一定的UI设计能力,协助UI设计师进行产品架构的设计。
d) 整合行业的系统架构师:对整个行业进行整体设计,更强调的是行业内个系统之间的关系设计。
e) 公司级的系统架构师:对整个公司的技术系统,技术路线等负责。