软件架构师定义

  • 软件架构师:
    • 制定高级设计决策,并确定技术标准,包括编程标准,工具和平台的软件专家
  • 软件架构:
    • 系统的基本组织构成,这种组织主要体现在其组件,组件之间关系,组件与环境之间的关系,以及决定系统设计与演化原则
      如何成为更好的软件架构师

软件架构层级

应用级

  • 最低层级的架构
  • 层级低,但是很详细
  • 这种层级的交流一般是在一个开发团队内展开

解决方案级

  • 架构的中间层
  • 关注一个或多个满足业务需求的应用,即商业方案
  • 这之中有些设计是高层次的,但大部分还是低层次的设计
  • 这种层级的交流开始涉及多个开发团队

企业级架构

  • 架构的最高层级
  • 关注多个设计方案
  • 这种架构的设计层次高且抽象,因此也需要方案级和应用级的架构师对此进行细化
  • 这种层级的架构需要多个组织进行沟通
  • 架构师可以被看作是不同工作组之间的粘合剂:
    • 横向: 在业务部和开发人员或者不同的开发团队之间架起沟通的桥梁
    • 纵向: 在管理者和开发人员之间架起桥梁
    • 技术: 将不同的技术或应用整合在一起

软件架构师职责

  • 定义和确定所需的开发技术和平台
  • 定义开发标准,如编程标准,工具,审核流程,测试方法等
  • 对确定和理解业务需求提供技术支持
  • 设计系统并根据需求作出决策
  • 对架构定义,设计和决策进行讨论记录
  • 检查并审核架构和代码,比如检查前期确定的模式与编程标准是否被正确实施
  • 与其他部门和架构师合作
  • 对开发人员的引导和咨询
  • 将高级设计细化,并转化为较低级的设计

软件架构师技能

设计

  • 理论层面:
    • 了解基本的设计模式
    • 研究一下模式与反模式
    • 了解质量度量
  • 实践层面:
    • 尝试理解不同的技术栈
    • 分析和理解应用模式:
      • 查看当前流行的框架
      • 在实践中学习很多模式
      • 理解如何在框架中应用模式,为什么要这样做
      • 深入地研究代码并了解如何实现的

决策

架构师需要制定决策,指引项目甚至整个公司的正确方向

  • 分清主次:
    • 概念完整性
    • 一致性
  • 优先级
  • 认清自己的能力,明确自己的职责
  • 评估多种选择

简化

  • 多方位观察解决方案
  • 分而治之
  • 重构

编程

  • 开发副项目:
    • 大量的编程语言,框架,工具,流程和实践
  • 只尝试需要尝试的事情

记录

  • 架构文档
  • 代码整洁
  • 在可能的情况下生成文档:
    • 利用工具生成文档: Swagger, RAML
  • 尽可能多记必需的东西,内容尽可能少:
    • 用于理解该文件的所有必要信息都包括在内了吗
    • 哪些信息是真正需要的,哪些是可以省略的
  • 更多地了解架构框架

相关文章: