面向方面的 UML 建模

一、基本信息

标题:面向方面的 UML 建模
时间:2011年
来源:南京工业大学 电子与信息工程学院
关键词:面向对象; 面向方面; UML 建模;

二、研究内容

1.摘要
为了解决软件开发中建模对于系统级关注点被忽略的问题,提出了面向方面的 UML 建模模型。对面向方面技术和 UML 进行全面介绍,使其了解它们的主要构成及参数,并基于 AspectJ 语言扩展 UML 中的特征文件(profile),来实现面向方面 UML 建模(AUML)。该扩展是 UML 体系的一种扩充,它既结合了 UML 面向对象的特点,又对面向方面横切关注点在语义和 结构上进行了规范。最后就图书管理系统进行举例说明,总结了面向方面软件开发(AOSD)profile 的参数。

2.相关知识
2.1 AOP 技术的组成部分
AOP 的概念是 Gregor Kiczales 在 Xerox Parc 团队于 20 世 纪 90 年代后期提出的。AOP 将涉及系统多个方面的功能、特 性、信息抽象为横切关注点,用方面Aspect来定义和实现横切 关注点。通过将横切关注点集中到方面(Aspect),AOP 就取得 一种单一结构化的行为,它分布在代码中。Aspect 之于 AOP 等价于 CLASS 类之于面向对象编程(OOP)。AOP 组成结构(见 图 1)如下:
(1) 连接点 (joinpoint) AOP 的最基本组成元素,程序中的 点,在这些点可以执行方面代码。
(2) 切点(pointcut)是连接点的集合,收集有关信息。
(3) 通知(Advice)描述切点的属性,对功能进行定义,如be-fore advice, after advice, around advice。

AOP 还有两个重要的概念:关注点(Concern)和核心关注 点(Crosscutting Conern)。关注点式一个特定的目标、概念或兴 趣域。一个软件系统包含核心级关注点和系统级关注点。核 心级关注点是系统要完成的业务功能;系统级关注点式完成 核心级关注点必须的系统特性以及业务功能的功能约束。核 心关注点就是对关注点的横向关注,是单个方法都要关注的 焦点。AOP 实现的重大突破就是关注点分离,将系统看成关 注点的组合,不是完全抛弃面向对象,而是将关注点分为两 类,对于核心关注点采用 OOP 技术,对于系统级关注点采用 AOP 技术,然后再重新组合编织起来。如图 2 所示。

2.2 UML 建模语言
UML是一种通用的标准建模语言,由著名的面向对象技 术专家 Booch、Rumbaugh、Jacobson 综合各自的方法几经修改 完成的,已被 OMG 采纳为标准,是面向对象软件开发方法的 一部分。但是 UML 不是一种程序设计语言,语言实现系统,而UML则负责建立系统的模型,这个模型可以用Java、C++或 任何一种程序语言来实现。UML 包含 3 类主要元素:基本构 造模块,语义规则,公共机制。UML 不依赖于特定的软件开 发过程,因此具有强大的生命力,其结构如图 3 所示。

3.面向方面的 UML 建模
3.1 AspectJ
AspectJ 是一个用于 Java 语言的面向方面的编程环境。包 含语言规范、语言应用、切面(与类相同)。。AspectJ 语言也是现今较为成熟的语言之 一,本文的语言基础为 AspectJ 语言,各方面的关系如图 4 所 示(AUML 为面向方面 UML 建模)。

2.2 基于 UMLprofile 扩展的面向方面建模
UML 有多种视图,能很好的表示一个系统 的关系及属性,把系统的结构很好的展示出来。UML 提供了 有限制的扩展能力,有构造型,约束和标记值,这也在理论上 为扩展提供了可能。UML 特征文件 (profile) 就是上述的一种 集合。它允许自定义和扩展 UML 模型元素,特定数目可以是 无限的,遵循 UML 规范就可以创建自己的特征文件用来建模。这种建模方式被称为 AOSD(面向方面软件开发) profile。 特征文件包扩展于核心库中的 constructs 见图 5。

3.图书管理系统的面向方面 UML 建模 (AUML) 的 实现过程
图书管理系统中,从读者角度出发,与它相关的类有读者 类、图书类、罚金类、借阅类、图书条目类。图书条目只是图书 的一份复制,所以关联的名称为“copy of”,读者跟罚金和借阅 类之间存在“has”的关系,并且一个读者可以有零次或多次罚 金,零次或多次借阅。一本书可以被借阅零次或多次,一本书 在系统中可能存在一个或多个条目。如图 7 所示。

我们对此系统进行扩展成逻辑结构图,加入如果出错的 处理类 ERROR,设计 4 个成员:date,reason,exceptionDealer(), ID 放出现错误的读者 ID,date 用来放错误的时间,reason 存放 出现错误的原因,exceptionDealer () 对出现的错误进行处理。 ReaderLogging Aspect 对 Fine、Reaservation、Error 这 3 个类进行 横切,并用构造型 impose_L 记录出错的 ID 和时间,Impose_A 的行为 record 被引入到 Error 中。对于消息 advice 来说,Log- gingPointcut1 应为 after return,作用于 Login动作成功并返回以 后,LoggingPointcut2 应为 before,作用于 Logout 动作之前,在 退出系统前将记录存档。如图 8 所示。

三、结论
本文将 AOP 思想引入 UML 建模中,并对基于 AspectJ 语 言的面向方面软件开发 AOSD profile 进行重点介绍。可能今后会使用到这种方式,先了解一下加深一个记忆。

四、参考文献
[1] 刘瑞成. 基于 UML 和形式化方法的面向方面实时系统模型 [D].广州:广东工业大学,2006.
[2] 吴军华.软件工程-理论、方法与实践[M].西安:西安电子科技 大学出版社,2010.
[3] 史玉珍,李波.一种面向方面的 UML 建模方法研究[J].计算机 测量与控制,2009,17(12):2497-2499.
[4] 朱俭. 面向方面编程 (AOP) 介绍 [J]. 计算机工程, 2004,30 (3): 170-172.
[5] 马欣, 杨连贺. 面向方面编程技术的研究 [J]. 仪器仪表用户, 2009,16(2):72-73.
[6] 景秀丽,吕洪林.软件工程[M].北京:中国水利水电出版社,2010.
[7] 丁辉.基于UML面向方面系统的建模和测试[D].南京:东南大 学,2006.
[8] 刘畅.基于UML的面向方面建模框架的研究和实现[D].广州: 中山大学,2008.

posted @ 2020-11-23 14:19  onesing  阅读(273)  评论(0编辑  收藏  举报