架构视图是对从某一视角或某一点上看到的系统所做的简化描述,描述中涵盖了系统的某一特定方面,而省略了与此方面无关的实体。
架构要涵盖的内容和决策太多,采用分而治之的方法从不同视角分别设计;同时,也为软件架构的理解、交流和归档提供方便。
为了最终处理大型的、富有挑战性的架构,该模型包含五个主要的视图:
逻辑视图:逻辑视图用来描述系统的功能需求,即在为用户提供服务方面系统所应该提供的功能。在逻辑视图中,系统分解成一系列的功能抽象、功能分解与功能分析,这些主要来自问题域。在面对对象技术中,表现为对象或对象类的形式,采用抽象、封装和继承的原理。用对象模型来代表逻辑视图,可以用类图来描述逻辑视图。借助于类图和类模版的手段,类图用来显示一个类的集合和它们的逻辑关系:关联、使用、组合、继承等。相似的类可以划分成类集合。类模版关注于单个类,它们强调主要的类操作,并且识别关键的对象特征。
逻辑视图的表示:
构件:类、类服务、参数化类、类层次
连接件:关联、包含聚集、使用、继承、实例化
逻辑视图的风格采用面向对象的风格,其主要的设计准则是视图在整个系统中保持单一的、一致的对象模型,避免就每个场合或过程产生草率的类和机制的技术说明。
过程视图:又称进程视图、处理视图。
过程架构考虑一些非功能性的需求,如性能和可用性。它解决并发性、分布性、系统完整性、容错性的问题,以及逻辑视图的主要抽象如何与进程结构结合在一起,即定义逻辑视图中的各个类的具体操作是在哪一个线程中被执行。过程视图侧重系统的运行特性。服务于系统集成人员。
构件:进程、简化进程、循环进程
连接件:消息、远程过程调用RPC、双向消息、事件广播
过程视图:关注进程、线程、对象等运行时概念,以及相关的并发、同步和通信等问题。
物理视图:主要描述硬件配置。服务于系统工程人员,解决系统的拓扑结构、系统安装、通信等问题。主要考虑如何把软件映射到硬件上,也要考虑系统性能、规模、可靠性等。物理架构主要关注系统非功能性需求,如可用性、可靠性、性能和可伸缩性
物理视图表示法
构件:处理器、计算机、其他设备
连接件:通信协议等
开发视图:描述了在开发环境中软件的静态组织结构,即关注软件开发环境下实际模块的组织,服务于软件编程人员。
系统的开发结构用模块和子系统图来表达,显示了输出和输入关系,完整的开发架构只有当所有软件元素被识别后才能加以描述。但是,可以列出控制开发架构的规则:分块、分组和可见性。
开发视图的风格通常是层次结构,每一层为上一层提供良好定义的接口,层次越低,通用性越好。
开发视图表示方法
构件:模块、子系统、层
连接件:参照相关性、模块/过程调用。
用例视图(场景)
用于刻画构件之间的相互关系,将四个视图有机地联系起来。可以描述一个特定的视图内的构件关系,也可以描述不同视图间的构件关系
四种视图的元素通过一组重要场景进行无缝协同工作,我们为场景描述相应的脚本。子啊某种意义上场景式最重要的需求抽象,它们的设计使用对象场景图和对象交互图。
场景式其他视图的冗余,但它起到了两个作用:
作为一项驱动因此来发现架构设计过程中的架构元素
作为架构设计结束后的一项验证和功能说明,即以视图的角度来说明,又作为架构原型测试的出发点。
作为一项驱动因素,源于迭代开发中有场景驱动方法。场景驱动方法认为系统大多数关键的功能以场景的形式被捕获。
UML中的图和各视图的对应关系
场景视图:用例图
逻辑视图:类图和对象图
开发视图:类图和组件图
进程视图:顺序图、协作图、状态图、活动图、组件图
部署视图:部署图