1、软件架构的概念
架构的本质
1、软件架构为软件系统提供了一个结构、行为和属性的高级抽象。
2、软件架构风格是特定应用领域的惯用模式,架构定义一个词汇表和一组约束。
架构的作用
1、软件架构是项目干系人进行交流的手段。
2、软件架构是可传递和可复用的模型,通过研究软件架构可能预测软件的质量。
3、软件架构使推理和控制的更改更加简单,有助于循序渐进的原型设计,可以作为培训的基础。
架构设计就是需求分配,满足需求的职责分配到组件上。
通过不同的视角和视图
架构的4+1视图
以场景为核心、
逻辑视图为最终用户描述功能需求。
UML4+1视图
以用例为核心、建立需求分析模型
逻辑视图为系统分析、设计人员提供类与对象。
2、软件架构风格
架构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个构件有效地组织成一个完整的系统。
架构风格定义了用于描述系统的术语表和一组指导构建系统的规则
2.1、数据流风格
前一步的结果是后一步的输入内容【数据驱动】、分步处理
2.2、调用/返回风格
构件之间直接交互、紧耦合
2.3、独立构件风格
构件之间不直接交互、松耦合
丢失了对子函数的控制权、
事件触发,添加了事件管理机制、隐式调用
2.4、虚拟机风格
解释器、规则引擎
2.5、仓库风格
以数据为中心,建立仓库,实现数据共享
1、数据库系统
2、黑板系统:记录、交换、跟进信息、触发知识源。如语音识别、知识推理。
3、超文本系统
现代软件编译器:以仓库风格为主,以 源码编译后作为数据中心 ,集成各类开发、调试工具
传统编译器:数据流-批处理
断点调试->事件风格
操作系统注册表->仓库风格
2.6、闭环控制架构(过程控制)
适合于嵌入式系统,用于解决简单闭环控制问题。
经典应用:空调温控,定速巡航。
2.7、C2风格
构件和连接件都有一个顶部和一个底部。
构件的顶部要连接到连接件的底部,构件的底部要连接到连接件的顶部,构件之间不允许直连。
一个连接件可以和任意数目的其他构件和连接件连接。
当两个连接件进行直接连接时,必须由其中一个的底部到另一个的顶部。
层次性架构风格、总线系统
2.8、层次架构风格
属于调用/返回风格
2.8.1、两层C/S架构
客户端:表示层、业务处理
服务端:数据层、数据读取/存储
2.8.2、三层C/S架构
表示层:客户端,只用于内容显示、提交请求
功能层:应用服务器,接受表示层数据,并读取数据层数据,业务处理。
数据层:数据服务器,数据存储
2.8.3、B/S架构
2.8.4、三层B/S架构
2.8.4.1、MVC架构风格
打破了层与层的独立交互
J2EE体系结构中:
视图(View): JSP
控制(Controller): Servlet
模型(Model): EntityBean、Session Bean 、EJB
2.8.4.2、MVP架构风格
主要的程序 逻辑在Presenter里实现 。
通过定义好的接口进行交互
用于处理view频繁的修改
如:点赞、收藏等。
定时异步发送请求
2.8.4.3、MVVM架构
视图View
View-Model:动态渲染、监听数据变动
模型Model
2.8.4.4、RIA架构
富互联网 rich internet
Flex 相当于小程序,伪客户端
2.8.5、混合架构风格
内外有别模型
查改有别模型
2.9、基于服务的架构SOA
对象、构件、服务
Web Service、ESB
特点:
WSDL就是WebService接口对应的WSDL文件,该文件通过xml格式说明如何调用,可以看作WebService的接口文档(使用说明书)
2.10、微服务
特点
优势
挑战
2.11、MDA模型驱动架构
3、架构描述语言ADL
形式化的语言
基本元素:
1、构件:计算或数据存储单元
2、连接件:用于构件之间交互建模的体系结构构造块及其支配这些交互的规则。
3、架构配置:描述体系结构的构件与连接件的连接图
4、特定领域软件架构DSSA
基本活动:
建立过程
5、基于架构的软件开发ABSD
开发过程: