一、软件架构
1、定义:
什么是软件架构:在一定的设计原则基础上,从不同角度对组成系统的各部分进行搭配和安排,形成系统的多个结构而组成架构,它包括该系统的各个组件、组件的外部可见属性及组件之间的相互关系。 组件的外部可见属性是指其它组件可对该组件所做的假设,如该组件提供的服务、具备的质量特征、错误处理、共享资源的使用。
2、相关概念
架构商业周期—架构是软件开发的必经之路和必要手段,它受到来自客户和开发组织的影响,也受到设计师的素质和经验以及技术环境的影响;反过来,构架也影响着被开发的系统,对客户、开发组织、构架和技术环境也都有影响,还影响着客户及其开发组织的未来目标。围绕着构架的这些影响和反馈循环构成构架商业周期。
涉众—也叫风险承担者,利益相关者,他们是对构建软件系统感兴趣的人或组织,包括合同中的客户、系统最终用户、开发人员、开发组织、系统维护人员等,他们所关注的问题各不相同,但都要求系统在他们所关注的方面提供保证或优化。
二、软件架构的样式(风格)与框架
1、软件架构样式的概念
构架样式(风格)—是对各组件类型和运行控制/数据传送模式的描述。可以把构架样式看作是对构架的一组制约条件,即对各组件类型及其交互模式的限制条件,而这些制约条件就确定了一组或一系列能满足它们的构架。
- 一组在系统运行时执行一定功能的组件类型。
- 能够表明在系统运行时组件的相互关系的拓扑结构。
- 一组语义约束条件的集合。
- 一组连接件的集合,这些连接件为组件之间的通信提供中介
2、种类
1)以数据为中心的样式
主动仓库式(黑板式)
2) 数据流样式
批处理:传统的数据处理、程序编译/CASE(computer aided software engineering)工具
管道过滤器风格:DOS
Batch Sequential | Pipe-and-Filter |
整体传递数据 组件粒度较大 延迟高,实时性差 无并发 | 增量 组件粒度较小 实时性好 可并发 |
3) 虚拟机样式
虚拟机构架的目标是实现可移植性。虚拟机是模拟硬件功能或抽象软件环境的构架样式。 虚拟机构架常见的示例有解释程序、基于规则的系统、句法shell程序、命令语言处理器等。
4)调用--返回风格
主程序-子过程风格
远过程调用风格
面向对象风格
分层风格
5)独立组件样式
通过解除各运算部分之间的耦合实现可更改性
事件系统样式
通讯进程样式
6)C/S样式
浏览器/服务器(B/S)是三层C/S风格的一种实现方式
三层C/S结构是将应用功能分成表示层、业务层和数据层三个部分:
优点:1、合理地划分三层结构的功能 2、灵活有效地选用相应的软硬件平台 3、各层可以并行开发 4、允许充分利用业务层有效地隔离开表示层与数据层
7)C2样式
基于组件和消息的体系结构模式,用于构建灵活的、可伸缩的软件系统。它的结构是一个层次型的网络,网络中的交互由一组相互协作的组件和负责将它们链接在一起的连接件按照一套风格规则来实现 。
8)正交样式
正交样式由层和线索的组件构成。层是由一组具有相同抽象级别的组件构成。线索是子系统的特例,它是由完成不同层次功能的组件组成(通过相互调用来关联),每一条线索完成整个系统中相对独立的一部分功能。
9) MVC样式
3、构架的异质性
实际系统的构架是异质的,既是多种样式的综合,这种异质可以分为3类:
1 局部异质 2 层次异质 3 并行异质
3、参考模型
1)概念
参考模型—是一种考虑数据流的功能划分,是对已知问题的标准分解,分解所得的各个部分相互协作,构成问题的解决方案。
参考构架—是映射到软件组件及组件之间数据流上的参考模型
2)相互关系
参考模型、构架样式、参考构架和 软件构架之间的相互关系:
4、软件架构、框架和设计模式
1)概念
框架:框架就是一组相互协作的类,对于特定的一类软件,框架构成了一种可重用的设计。
软件设计模式(Design pattern):又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。举例:代理模式、工厂模式、单例模式……
2)关系
框架和架构的关系: 框架不是构架。构架确定了系统整体结构、层次划分、不同部分之间的协作等设计考虑。框架比架构更具体,更偏重于技术。确定框架后,其所对应的架构也随之确定,但在一个系统架构中可以集成多种框架,例如J2EE的SSH、SSM。
框架和设计模式的关系: 设计模式和框架在软件设计中是两个不同的研究领域。设计模式研究的是一个设计问题的解决方法,一个模式可应用于不同的框架和被不同的语言所实现;而框架则是一个应用的体系结构,是一种或多种设计模式和代码的混合体虽然它们有所不同,但却共同致力于使人们的设计可以被重用,在思想上存在着统一性的特点,因而设计模式的思想可以在框架设计中进行应用。
三、质量属性
1、概念
系统在其生命周期过程中所表现出的各种特征。
2、 关系
架构和质量属性:
架构是获取许多质量属性的基础;质量属性既和架构有关,也和具体实现有关。
质量属性之间:
一个质量属性的获取对其他质量属性可能产生正面或负面的影响。
任何质量属性都不可能在不考虑其他属性情况下单独获取。
3、有哪些质量属性
可用性(Availability)
是指系统正常运行时间的比例。
可修改性
可修改性是进行快速修改并使修改代价尽可能低的能力,这种能力直接受到构架的限制。
可修改性有时也称做可维护性。
可重用性
可重用性是指要合理地设计系统,使系统的结构或其某些组件能够在以后的应用开发中重复使用。
性能
性能是指系统的响应能力—即对外部刺激(事件)做出反应时所需要的时间或在某段时间内所处理的事件个数。
安全性
安全性是衡量系统在向合法用户正常提供服务的情况下,阻止非授权使用和抗拒拒绝服务攻击的能力。
易用性
可移植性
可移植性是系统能够在不同计算环境下运行的能力。
可集成性
可集成性是使独立开发的系统组件能够协同运行的能力
4、限制条件
限制条件包括商业限制、技术限制、法律限制、社会限制等。限制条件会对系统架构产生直接影响,也会对系统功能和质量产生影响。从而间接影响架构。
5、构架本身的质量属性
- 一致性
- 正确性和完整性
- 可构建性