软件工程----4+1架构模型

架构视图是对从某一视角或某一点上看到的系统所做的简化描述,描述中涵盖了系统的某一特定方面,而省略了与此方面无关的实体。

架构要涵盖的内容和决策太多,采用分而治之的方法从不同视角分别设计;同时,也为软件架构的理解、交流和归档提供方便。

为了最终处理大型的、富有挑战性的架构,该模型包含五个主要的视图:

逻辑视图:逻辑视图用来描述系统的功能需求,即在为用户提供服务方面系统所应该提供的功能。在逻辑视图中,系统分解成一系列的功能抽象、功能分解与功能分析,这些主要来自问题域。在面对对象技术中,表现为对象或对象类的形式,采用抽象、封装和继承的原理。用对象模型来代表逻辑视图,可以用类图来描述逻辑视图。借助于类图和类模版的手段,类图用来显示一个类的集合和它们的逻辑关系:关联、使用、组合、继承等。相似的类可以划分成类集合。类模版关注于单个类,它们强调主要的类操作,并且识别关键的对象特征。

逻辑视图的表示:

构件:类、类服务、参数化类、类层次

连接件:关联、包含聚集、使用、继承、实例化

逻辑视图的风格采用面向对象的风格,其主要的设计准则是视图在整个系统中保持单一的、一致的对象模型,避免就每个场合或过程产生草率的类和机制的技术说明。

过程视图:又称进程视图、处理视图。

过程架构考虑一些非功能性的需求,如性能和可用性。它解决并发性、分布性、系统完整性、容错性的问题,以及逻辑视图的主要抽象如何与进程结构结合在一起,即定义逻辑视图中的各个类的具体操作是在哪一个线程中被执行。过程视图侧重系统的运行特性。服务于系统集成人员。

构件:进程、简化进程、循环进程

连接件:消息、远程过程调用RPC、双向消息、事件广播

过程视图:关注进程、线程、对象等运行时概念,以及相关的并发、同步和通信等问题。

物理视图:主要描述硬件配置。服务于系统工程人员,解决系统的拓扑结构、系统安装、通信等问题。主要考虑如何把软件映射到硬件上,也要考虑系统性能、规模、可靠性等。物理架构主要关注系统非功能性需求,如可用性、可靠性、性能和可伸缩性

物理视图表示法

构件:处理器、计算机、其他设备

连接件:通信协议等

开发视图:描述了在开发环境中软件的静态组织结构,即关注软件开发环境下实际模块的组织,服务于软件编程人员。

系统的开发结构用模块和子系统图来表达,显示了输出和输入关系,完整的开发架构只有当所有软件元素被识别后才能加以描述。但是,可以列出控制开发架构的规则:分块、分组和可见性。

开发视图的风格通常是层次结构,每一层为上一层提供良好定义的接口,层次越低,通用性越好。

开发视图表示方法

构件:模块、子系统、层

连接件:参照相关性、模块/过程调用。

用例视图(场景)

用于刻画构件之间的相互关系,将四个视图有机地联系起来。可以描述一个特定的视图内的构件关系,也可以描述不同视图间的构件关系

四种视图的元素通过一组重要场景进行无缝协同工作,我们为场景描述相应的脚本。子啊某种意义上场景式最重要的需求抽象,它们的设计使用对象场景图和对象交互图。

场景式其他视图的冗余,但它起到了两个作用:

作为一项驱动因此来发现架构设计过程中的架构元素

作为架构设计结束后的一项验证和功能说明,即以视图的角度来说明,又作为架构原型测试的出发点。

作为一项驱动因素,源于迭代开发中有场景驱动方法。场景驱动方法认为系统大多数关键的功能以场景的形式被捕获。

UML中的图和各视图的对应关系

场景视图:用例图

逻辑视图:类图和对象图

开发视图:类图和组件图

进程视图:顺序图、协作图、状态图、活动图、组件图

部署视图:部署图

相关推荐
爱思德学术4 天前
中国计算机学会(CCF)推荐学术会议-C(软件工程/系统软件/程序设计语言):MSR 2026
人工智能·机器学习·软件工程·数据科学
郝学胜-神的一滴4 天前
深入探索 C++ 元组:从基础到高级应用
开发语言·c++·stl·软件工程
健康有益科技4 天前
家庭健康智能终端:解锁智能家居时代的健康管理
大数据·软件工程·智能家居·健康医疗
1candobetter4 天前
软考中级习题与解答——第六章_计算机硬件基础(2)
软件工程
深圳行云创新5 天前
BizDevOps 是什么?如何建设企业 BizDevOps 体系
软件工程·devops·bizdevops
NMGWAP6 天前
AI辅助编程:软件工程的终结还是进化新阶段?
人工智能·软件工程
疯狂的Alex7 天前
2010-2022 同等学力申硕国考:软件工程简答题真题汇总
数据库·oracle·软件工程
中电金信8 天前
中电金信:AI重构测试体系·智能化时代的软件工程新范式
人工智能·重构·软件工程
小马哥编程9 天前
【软考架构】第五章 软件工程基础知识:5.1软件工程概述
架构·软件工程
爱思德学术9 天前
中国计算机学会(CCF)推荐学术会议-C(软件工程/系统软件/程序设计语言):REFSQ 2026
软件工程·软件需求·需求工程