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

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

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

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

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

逻辑视图的表示:

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

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

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

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

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

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

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

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

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

物理视图表示法

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

连接件:通信协议等

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

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

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

开发视图表示方法

构件:模块、子系统、层

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

用例视图(场景)

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

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

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

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

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

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

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

场景视图:用例图

逻辑视图:类图和对象图

开发视图:类图和组件图

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

部署视图:部署图

相关推荐
雾江流11 小时前
虚拟来电 4.3.0 |集虚拟来电与短信于一体,解锁VIP优雅脱身
软件工程
勤不了一点12 小时前
小白上手RPM包制作
linux·运维·服务器·软件工程
meisongqing14 小时前
【软件工程】符号执行与约束求解缺陷检测方法
人工智能·算法·软件工程·软件缺陷
meisongqing2 天前
【软件工程】机器学习多缺陷定位技术分析
人工智能·机器学习·软件工程·缺陷定位
widder_2 天前
软考软件设计师中级——软件工程笔记
软件工程·软考·软件设计师
meisongqing3 天前
【软件工程】软件缺陷 基于动态分析的方法
软件工程·缺陷
-qOVOp-3 天前
zst-2001 上午题-历年真题 软件工程(38个内容)
软件工程
workflower4 天前
使用谱聚类将相似度矩阵分为2类
人工智能·深度学习·算法·机器学习·设计模式·软件工程·软件需求
搏博4 天前
软件工程之软件项目管理深度解析
软件工程·软件构建·需求分析·软件需求
爱吃java的羊儿5 天前
信息系统项目管理师-软考高级(软考高项)2025最新(十八)
信息可视化·软件工程·产品经理·可用性测试