什么是架构
-
软件架构是一张开发蓝图,是一个整体的规划,即软件工程的指导方针,软件开发的主要目标如图所示:
-
优秀的软件架构提供迅速响应,扩展灵活;还要具备美观性,代码要简洁,易于阅读、维护、能使维护者对功能产生更清晰的认识,能够快速地处理变化
软件架构设计的关注点
- 软件架构设计应该关注 – 变化
软件架构设计的本质和目的
- 本质降低软件熵
- 目的:降低因需求增加导致的软件熵增加从而导致的成本增加
架构设计模式原则
- 架构的细节需要运用一些经典的设计模式原则,比较常用的原则之一为SOLID原则
SOLID原则
- 单一职责原则(SRP): 每一个类都应该只具有一种职责
- 开放封闭原则(OCP) : 对于软件对象扩展是开放的,修改是封闭的,应该将统一的功能抽象成一个共有的接口,具体到每个对象中去实现
- 里氏替换原则 (LSP) : 继承应该保证有关超类型对象的任何属性也适用于子类型对象
- 依赖倒置原则 (ISP) : 程序要依赖抽象的接口而不要依赖具体的实现 – 面向接口编程
- 接口分离原则 (DIP): 客户端不应该依赖于它不需要的接口或方法,类于类之间的依赖应该建立在最小的接口之上(接口不应该设计的过于臃肿而导致系统解耦困难,增加重构的复杂度)
架构设计步骤
- 认识系统:认识系统的数据模型、业务组成、模块组成
- 设计系统:选择合适的架构模式,对架构模式调研分析,确定系统架构设计方案
- 创建系统:选择系统的实现环境,对系统进行部署,进入开发/改造阶段
- 收集反馈:系统创建完成,持续调研,收集反馈,对系统做下一步优化规划
认识系统
- 目标:
- 设计者希望系统是什么?
- 使用者希望系统是什么?
- 成本预估目标如何?
- 明确的问题
- 现有系统存在的问题(内部)
- 影响系统的外部条件是什么(外部)
设计系统
- 两个阶段
- 技术选型
- 架构模式选型
- 注意的问题
- 对于选定的技术和架构模式,团队学习成本和接受度如何
- 选定的模型存在什么优势和劣势,团队成员对此情况的了解程度
- 选定技术模型流行度如何,以及流行原因
创建系统
- 托管代码
- 跟踪进度
- 完成后进行复盘
收集反馈
- 代码评审
- 匿名留言
- 合作交流
- 社区讨论