软件架构

不以实现为目的的架构,都是无意义的。

系统架构的基本判断

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(搭建完整环境)

业务回补期
成长优化期