软件架构
不以实现为目的的架构,都是无意义的。
系统架构的基本判断
1. 无法上线的应用架构,算不上好的软件架构
2. 没人能完成开发的软件架构,算不上具有可行性的软件架构
3. 在现有技术上不可行的架构,算不上合理的软件架构
软件架构参与人员
实施者、维护者:系统可以以预计的方式构建
实施规范、原则:系统可以按预期的方式实施项目
包含内容
- 系统之间的关系
- 系统内的关系
- 应用内架构
- 规范和原则
收集架构需求
了解相关者的利益
寻找架构关注点
明确跨功能需求
罗列技术风险点
架构风格
分层架构
OSI 七层模型
TCO/IP 五层模型
MVC 架构
发布-订阅风格
管理-过滤器
架构开发方法
4+1 视图法
逻辑视图:设计期的模块、接口划分,职责及协作方式等
流程视图:运行期的运行数据同步
开发视图:开发期的框架、库、技术选型及对应的编译
物理视图:部署视图,在部署期与持续交付相关的技术决策
场景:用例视图
TOGAF及ADM
TOGAF:开放组体系结构框架
架构域
业务架构
应用架构
数据架构
技术架构
ADM:创建企业级架构,8个阶段 A-H
架构上下文:【预备阶段、架构远景(A)】
架构交付:【业务架构(B)、信息系统架构(C)、技术架构(D)】
迁移计划:【机会及解决方案(E)、迁移计划(F)】
架构治理:【实施治理(G)、架构变更管理(H)】
架构产物
架构图、迭代计划、技术栈及选型、示例代码、测试策略、部署方式、持续集成方式
设计原则
不多不少、演进式、持续性
对于低级别设计:尽量避免进入细节设计,宝贵的资源投入到业务开发
对于高级别设计:不预先设计模块和组件,仅从架构考虑,即为未来预留扩展的空间
适配器、代理模式对第三方组件进行二次封装
敏捷开发:适应用户不断变化的需求
瀑布模式:完全计划式设计
20% 计划式设计,80% 演进式设计
延迟决策
前端架构
构建工具:Grunt、Gulp
包管理工具:Bower、NPM
模块管理:ADM、Common.js
微前端
跨框架、应用拆分、遗留系统迁移
架构设计层级
系统级:前后端分离、微前端
应用级:模块库、组件库、设计系统
模块级:组件化、模块化
代码级:规范、原则、质量
技术架构实施
质量、能力、进度
技术准备期
架构设计、概念验证POC、迭代0(搭建完整环境)
业务回补期
成长优化期