十四、系统架构设计(SA)

1,架构描述

软件架构:一个程序和计算机系统软件体系结构。结构包括软件的构件、构件的外部可见属性、及它们之间的联系。

简单理解软件架构是指从需求分析到软件设计之间的过渡过程。(桥梁) 数据设计(提供数据基础)和体系结构设计(为整体结构提供了规划和设计)

详细解释:软件架构为软件系统提供了一个结构、行为、和属性的高级抽象;由构件的描述、构件的相互作用(连接件)、指导构件集成的模式以及模式的约束组成

软件架构设计与生命周期

(需求分析--设计--实现--构件组装--部署--后开发)

需求分析将用户需求转化为软件架构模型

2,构件

构件:component,功能上独立且可以被替代或者拓展的模块或单元,外界通过接口访问其提供的服务。可以包括软件模块、类、库、服务等。

区别

构件:(类库,松耦合,可复用,侧重结构、构件不可拆分,外部不可见)

服务:(侧重功能) 服务通常是独立的、可复用的,并且可以通过网络进行访问。服务的典型示例包括Web服务、RESTAPI和微服务。

三大流派的构件标准:

EJB(会话Bean、实体Bean、消息Bean)

COM、DCOM、COM+(微软)

CORBA(公共)分为三层:(对象请求代理ORB、公共对象服务、公共设施)

3,软件架构风格:

特定领域系统组织方式的一种惯用模式(一个架构定义、一个词汇表、一组约束)

软件复用,架构设计重用

1,数据流风格:

批处理(一个接一个,以整体为单位) bat 一次性处理大量数据,离线执行

管道过滤器(前一个输出是后一个输入)grep 任务分阶段,每个阶段逐个处理,实时处理。

2,调用/返回风格

主程序/子程序(显式调用)main方法

面向对象(封装,属性,对象调用封装的方法和属性)

层次结构(分层,只影响上下两级,分层会影响效率):1, 客户端服务器(C/S 后期加了应用服务器)2,MVC

3,独立构件风格:

进程通信(消息传递,同步异步,点对点) 进程

事件驱动(隐式调用) 鼠标点击事件

4,虚拟机风格:(自定义流程,机器人)

解释器(自定义规则,强调数据结构,细粒度,执行效率低) 编程语言的解释器

规则系统(规则集,规则解释器,数据选择器,工作内存,DSS决策支持系统,人工智能,粗粒度)

5,仓库风格(以数据为中心风格):存储共享

数据库系统(中央共享数据源,独立处理单元)

超文本(数据共享,网状链接,互联网,组件访问共享数据仓库来交互)

黑板(多个独立的组件共享一个公共的存储区,复杂的非结构化问题,不断提交结果,共同决策)

6,闭环过程控制风格:发出控制命令并接受反馈,循环反复达到平衡。不断更正。适合嵌入式。定速巡行

7,C2: 自顶向下绑定构件网络(构件通过连接件连接起来)

4,软件复用、ABSD、DSSA

软件架构复用根据复用的时机包括机会复用和系统复用。

机会复用是指开发过程中,只要发现有可复用的资产,就对其进行复用。

系统复用是指在开发之前,就要进行规划,以决定哪些需要复用。

DSSA(特定领域的软件架构)

领域分析:获取领域模型(领域需求)

领域设计 :获得DSSA

领域实现

领域专家,领域分析人员,领域设计人员,领域实现人员

垂直域:一个特定领域中的通用的软件架构。

水平域:在多个不同的特定领域之间的相同的部分的小工具。

ABSD(基于架构的软件设计)

是架构驱动,强调由业务、质量和功能需求的组合驱动架构设计。

采用视角和视图描述软件架构

用例描述功能需求,质量属性场景描述质量需求

基于架构的软件开发过程:

体系结构需求--体系结构设计(映射成构件)--体系结构文档化(架构规格说明和测试架构需求的质量设计说明书)--体系结构复审(外部人员复审)--体系结构实现--体系结构演化(使架构可复用)

5,层次架构风格和面向服务架构风格(补充)

层次架构:B/s C/S 混合

三层C/S:三层CS架构:将处理功能独立出来,表示层和数据层都变得简单。

混合架构风格:内外有别模型:企业内部使用CS,外部人员访问使用BS。

查改有别模型:采用B/S查询,采用C/S修改。

混合架构实现困难,且成本高

富互联网应用RIA RIA是一种用户接口,小程序。结合了C/S的传播范围广,容易传播.

MVC架构

控制器(Controller)处理用户交互的部分 从负责从视图读取数据,控制用户输入,向模型层发送数据

模型(Model)处理数据逻辑 负责在数据库中存取数据

视图(View) 处理数据显示 用户看到的交互界面

缺点:视图和模型层直接交互,数据库暴漏,不安全

MPV架构:把控制器(Controller)换成了呈现层(Presenter)

避免了MVC架构中视图和模型的交互。

MVVM架构

分离了视图和模型,实现双向绑定

低耦合,可重用性。

面向服务的架构风格(SOA):粗粒度、松耦合服务架构。多个服务通过企业服务总线(ESB)提出服务请求。解决信息孤岛。和微服务的区别这个粒度更大,

特点:

服务分级

标准化的接口

与语言无关

通过构件容器提供QoS的服务。

SOA中的关键技术

--功能-- --协议--

发现服务 UDDI DISCO

描述服务 WSDL XML Schema

消息格式层 SOAP REST

编码格式层 XML(DOM,SAX)

传输协议层 HTTP TCP/IP SMTP

UDDI:用于WEB服务注册统一描述、发现及集成.用于Web服务注册和服务查找。

WSDL:描述服务,用于描述web服务的接口和操作功能。

SOAP(简单对象访问协议):用于传递信息。建立Web服务和服务请求之间的通信提供支持。

XML(可拓展标记语言):数据的基本格式 用于数据交换

BPEL(面向WEB服务的业务流程执行语言) 将多个服务组合到一个新的复合服务(业务流程)中

SOA的三种实现方式: WEB Service、服务注册表和企业服务总线ESB

WEB Service:服务提供者、服务注册中心(中介、提供交易平台,可有可无)、服务请求者

服务注册表:服务注册 服务定位 服务绑定。

企业服务总线ESB:绑定所有服务,集成在一起。