什么是软件架构
代码组成模块,模块组成应用、应用组成业务
软件系统架构:描述计算组件和组件的交互
架构设计:拆解、定义、关联组件、画图和实现
工作中的两种架构工作派:
- “组成派”:技术选型,组件拆分,画框架图、E-R图、类图等,贴合实际开发,业务实战能力强
- “决策派”:对技术选型做决策,给文案提出意见,分析方案的优劣,不做太多设计工作,脱离架构组件拆分的过程,脱离设计的核心,站的更高,与公司上层与业务更靠近
我们应选择做一个“中间派”,即做决策,也做架构设计
各个大师们眼中的软件架构:
- 结构、元素、内部、外部
- 组件、连接件、约束、需求和理智
- 模块、过程、管道、消息、条件
- 组件、关系、环境、结构、演化
- 元素、接口、子系统、协作、风格
- 处理元素、数据元素、连接元素
- 决策、方向、过程
- 组件是我的眼、决策是我的手
做IT界的莫扎特:
有人采访过莫扎特,问他“为什么一坐到钢琴前就能演奏出新的优秀乐章”,莫扎特说平时会去听不同优秀音乐家作品,了解听众需求,感受什么样的东西是听众喜欢的,再将这些元素融入到自己的作品中。
- 桥梁:从听众获取灵感
- 指引:指引乐队完成演奏
- 分割:将长篇大作切割成小段乐章
- 交互:将乐章和声部交叠协奏
- 决策:在思考中挣扎,在决策中完美
软件架构的过去:
- 语言:C、Java、Python、Go
- 结构设计:数据结构、设计模式、算法
- 统一建模:UML、CBM
软件架构的现在:
- 多视角:逻辑、物理、应用、技术、功能、部署
软件架构的未来:
- 云化:IaaS、PaaS、SaaS资产复用
- 演进式架构:拆迁、修缮、绞杀
面试题1:作为框架师,你的日常工作主要内容是哪些?
题眼:工作广度、组成和决策
加分项:方法论、新架构框架、新技术框架
面试题2:作为架构师,有什么推崇的书或大师?
题眼:学习能力、知识体系
加分项:体系书籍、新技术书籍、大师互动分享
面试题3:你在架构设计过程中碰到过什么难点?
题眼:安全深度,决策思路
加分项:决策依据,理论->实际