软件架构涉及软件系统抽象的高级架构,通过使用分解和组合,具有架构风格和质量属性。软件体系架构设计必须符合系统的主要功能和性能要求,并满足可靠性、可伸缩性、可移植性和可用性等非功能性要求。
软件体系架构必须描述其组件组、它们的连接、它们之间的交互以及所有组件的部署配置。
软件架构可以通过多种方式定义 -
-
UML(统一建模语言) - UML是软件建模和设计中使用的面向对象解决方案之一。
-
架构视图模型 (4+1视图模型) − 架构视图模型表示软件应用程序的功能和非功能需求。
-
ADL(架构描述语言) - ADL正式和语义地定义软件架构。
UML
UML 代表 统一建模语言。它是一种用于制作软件蓝图的图形语言。UML 由对象管理组 (OMG) 创建。UML 1.0规范草案于1997年<>月提交给OMG。它作为软件需求分析和设计文档的标准,这些文档是开发软件的基础。
UML 可以被描述为一种通用的可视化建模语言,用于可视化、指定、构建和记录软件系统。虽然UML通常用于对软件系统进行建模,但它并不局限于这个边界。它还用于对非软件系统进行建模,例如制造单元中的工艺流程。
这些元素就像组件,可以以不同的方式关联以制作完整的UML图片,这称为 图 。因此,了解不同的图表以在现实生活中实施知识非常重要。我们有两大类图表,它们进一步分为子类别,即 架构 图和 行为图 。 架构图
架构图表示系统的静态方面。这些静态方面表示图中形成主要架构并因此稳定的部分。
这些静态部分由类、接口、对象、组件和节点表示。架构图可以细分如下-
下表提供了这些关系图的简要说明 -
序号 | 图表和描述 |
1 |
类
表示系统的对象方向。显示类如何静态相关。 |
2 |
对象
表示一组对象及其在运行时的关系,还表示系统的静态视图。 |
3 |
元件
描述系统的所有组件、它们的相互关系、交互和接口。 |
4 |
复合架构
描述组件的内部架构,包括组件的所有类、接口等。 |
5 |
包
描述包架构和组织。涵盖包中的类和另一个包中的类。 |
6 |
部署
部署关系图是一组节点及其关系。这些节点是部署组件的物理实体。 |
行为图
行为图基本上捕获了系统的动态方面。动态方面基本上是系统的变化/移动部分。UML 具有以下类型的行为图:
- 用例图
- 序列图
- 通信图
- 状态图图
- 活动图
- 交互概览图
- 时间图
下表提供了这些图的简要说明 -
序号 | 图表和描述 |
1 |
用例
描述功能及其内部/外部控制器之间的关系。这些控制器称为参与者。 |
2 |
活动
描述系统中的控制流。它由活动和链接组成。流可以是顺序的、并发的或分支的。 |
3 |
状态机/状态图
表示系统的事件驱动状态更改。它基本上描述了类、接口等的状态变化。用于通过内部/外部因素可视化系统的反应。 |
4 |
序列
可视化系统中执行特定功能的调用序列。 |
5 |
交互概述
结合活动和序列图,以提供系统和业务流程的控制流概述。 |
6 |
通信
与序列图相同,只是它侧重于对象™的角色。每个通信都与序列顺序、编号加上过去的消息相关联。 |
7 |
时间顺序
描述消息在状态、条件和事件中的更改。 |
体系架构视图模型
模型是对软件架构的完整、基本和简化的描述,它由来自特定视角或观点的多个视图组成。
视图是从一组相关关注点的角度对整个系统的表示。它用于从不同利益相关者(如最终用户、开发人员、项目经理和测试人员)的角度描述系统。 4+1 视图模型
4+1视图模型由Philippe Kruchten设计,用于描述基于使用多个并发视图的软件密集型系统的架构。它是一个 多视图 模型,可解决系统的不同功能和问题。它标准化了软件设计文档,并使所有利益相关者都易于理解设计。
它是一种用于研究和记录软件架构设计的架构验证方法,涵盖了所有利益相关者的软件架构的所有方面。它提供了四个基本视图 -
-
逻辑视图或概念视图 - 它描述了设计的对象模型。
-
流程视图 - 它描述了系统的活动,捕获了设计的并发和同步方面。
-
物理视图 - 它描述了软件到硬件的映射并反映了其分布式方面。
-
开发视图 - 它描述了软件在其开发环境中的静态组织或架构。
可以通过为最终用户或软件系统的客户再添加一个称为场景视图或 用例 视图的视图来扩展此 视图 模型。它与其他四个视图一致,并用于说明作为“加一”视图(4+1)视图模型的体系架构。下图描述了使用五个并发视图 (4+1) 模型的软件体系架构。
为什么叫4+1而不是5?
用例视图具有特殊意义,因为它详细说明了系统的高级别要求,而其他 视图 则详细说明了这些需求是如何实现的。当所有其他四个视图都完成后,它™实际上是多余的。但是,没有它,所有其他观点都是不可能的。下图和表格详细显示了 4+1 视图 -
|
逻辑 |
过程 |
发展 |
物理的 |
场景 |
描述 |
显示系统的组件(对象)及其交互 |
显示系统的进程/工作流规则以及这些进程如何通信,重点是系统的动态视图 |
提供系统的构建块视图并描述系统模块的静态组织 |
显示软件应用程序的安装、配置和部署 |
通过执行验证和插图来显示设计已完成 |
查看者/利益相关者 |
最终用户、分析师和设计师 |
集成商和开发人员 |
程序员和软件项目经理 |
系统工程师、操作员、系统管理员和系统安装人员 |
他们的观点和评估者的所有观点 |
考虑 |
功能要求 |
非功能性需求 |
软件模块组织(软件管理重用、工具约束) |
与底层硬件相关的非功能性需求 |
系统一致性和有效性 |
UML - 图 |
类、状态、对象、序列、通信图 |
活动图 |
组件、封装图 |
部署图 |
用例图 |
体系架构描述语言 (ADL)
ADL 是一种为定义软件体系架构提供语法和语义的语言。它是一种符号规范,它提供了对软件系统™的概念架构进行建模的功能,与系统的™实现区分开来。
ADL 必须支持体系架构组件、其连接、接口和配置,它们是体系架构描述的构建基块。它是一种用于体系架构描述的表达式形式,并提供分解组件、组合组件和定义组件接口的能力。
架构描述语言是一种正式的规范语言,它描述了软件功能,如进程、线程、数据和子程序,以及硬件组件,如处理器、设备、总线和内存。
很难对 ADL 和编程语言或建模语言进行分类或区分。但是,将语言归类为 ADL 有以下要求 -
-
它应该适合将体系架构传达给所有相关方。
-
它应该适用于架构创建、优化和验证的任务。
-
它应该为进一步实现提供基础,因此它必须能够向 ADL 规范添加信息,以使最终系统规范能够从 ADL 派生。
-
它应该能够表示大多数常见的体系架构样式。
-
它应该支持分析功能或提供快速生成的原型实现。
|