什么是软件架构

代码组成模块,模块组成应用、应用组成业务
软件系统架构:描述计算组件和组件的交互
架构设计:拆解、定义、关联组件、画图和实现

工作中的两种架构工作派:

  • “组成派”:技术选型,组件拆分,画框架图、E-R图、类图等,贴合实际开发,业务实战能力强
  • “决策派”:对技术选型做决策,给文案提出意见,分析方案的优劣,不做太多设计工作,脱离架构组件拆分的过程,脱离设计的核心,站的更高,与公司上层与业务更靠近

我们应选择做一个“中间派”,即做决策,也做架构设计

各个大师们眼中的软件架构:

  • 结构、元素、内部、外部
  • 组件、连接件、约束、需求和理智
  • 模块、过程、管道、消息、条件
  • 组件、关系、环境、结构、演化
  • 元素、接口、子系统、协作、风格
  • 处理元素、数据元素、连接元素
  • 决策、方向、过程
  • 组件是我的眼、决策是我的手

做IT界的莫扎特:
有人采访过莫扎特,问他“为什么一坐到钢琴前就能演奏出新的优秀乐章”,莫扎特说平时会去听不同优秀音乐家作品,了解听众需求,感受什么样的东西是听众喜欢的,再将这些元素融入到自己的作品中。

  • 桥梁:从听众获取灵感
  • 指引:指引乐队完成演奏
  • 分割:将长篇大作切割成小段乐章
  • 交互:将乐章和声部交叠协奏
  • 决策:在思考中挣扎,在决策中完美

软件架构的过去:

  • 语言:C、Java、Python、Go
  • 结构设计:数据结构、设计模式、算法
  • 统一建模:UML、CBM

软件架构的现在:

  • 多视角:逻辑、物理、应用、技术、功能、部署

软件架构的未来:

  • 云化:IaaS、PaaS、SaaS资产复用
  • 演进式架构:拆迁、修缮、绞杀

面试题1:作为框架师,你的日常工作主要内容是哪些?
题眼:工作广度、组成和决策
加分项:方法论、新架构框架、新技术框架

面试题2:作为架构师,有什么推崇的书或大师?
题眼:学习能力、知识体系
加分项:体系书籍、新技术书籍、大师互动分享

面试题3:你在架构设计过程中碰到过什么难点?
题眼:安全深度,决策思路
加分项:决策依据,理论->实际