软件架构师定义
-
软件架构师:
- 制定高级设计决策,并确定技术标准,包括编程标准,工具和平台的软件专家
-
软件架构:
- 系统的基本组织构成,这种组织主要体现在其组件,组件之间关系,组件与环境之间的关系,以及决定系统设计与演化原则
- 系统的基本组织构成,这种组织主要体现在其组件,组件之间关系,组件与环境之间的关系,以及决定系统设计与演化原则
软件架构层级
应用级
- 最低层级的架构
- 层级低,但是很详细
- 这种层级的交流一般是在一个开发团队内展开
解决方案级
- 架构的中间层
- 关注一个或多个满足业务需求的应用,即商业方案
- 这之中有些设计是高层次的,但大部分还是低层次的设计
- 这种层级的交流开始涉及多个开发团队
企业级架构
- 架构的最高层级
- 关注多个设计方案
- 这种架构的设计层次高且抽象,因此也需要方案级和应用级的架构师对此进行细化
- 这种层级的架构需要多个组织进行沟通
- 架构师可以被看作是不同工作组之间的粘合剂:
- 横向: 在业务部和开发人员或者不同的开发团队之间架起沟通的桥梁
- 纵向: 在管理者和开发人员之间架起桥梁
- 技术: 将不同的技术或应用整合在一起
软件架构师职责
- 定义和确定所需的开发技术和平台
- 定义开发标准,如编程标准,工具,审核流程,测试方法等
- 对确定和理解业务需求提供技术支持
- 设计系统并根据需求作出决策
- 对架构定义,设计和决策进行讨论记录
- 检查并审核架构和代码,比如检查前期确定的模式与编程标准是否被正确实施
- 与其他部门和架构师合作
- 对开发人员的引导和咨询
- 将高级设计细化,并转化为较低级的设计
软件架构师技能
设计
-
理论层面:
- 了解基本的设计模式
- 研究一下模式与反模式
- 了解质量度量
-
实践层面:
- 尝试理解不同的技术栈
-
分析和理解应用模式:
- 查看当前流行的框架
- 在实践中学习很多模式
- 理解如何在框架中应用模式,为什么要这样做
- 深入地研究代码并了解如何实现的
决策
架构师需要制定决策,指引项目甚至整个公司的正确方向
-
分清主次:
- 概念完整性
- 一致性
- 优先级
- 认清自己的能力,明确自己的职责
- 评估多种选择
简化
- 多方位观察解决方案
- 分而治之
- 重构
编程
-
开发副项目:
- 大量的编程语言,框架,工具,流程和实践
- 只尝试需要尝试的事情
记录
- 架构文档
- 代码整洁
-
在可能的情况下生成文档:
- 利用工具生成文档: Swagger, RAML
-
尽可能多记必需的东西,内容尽可能少:
- 用于理解该文件的所有必要信息都包括在内了吗
- 哪些信息是真正需要的,哪些是可以省略的
- 更多地了解架构框架