面向软件模糊自适应的UML用例扩展

时间:2022-09-09 11:05:31

面向软件模糊自适应的UML用例扩展

摘 要:现有统一建模语言(UML)设施及一般软件自适应工具难以直接支持软件模糊自适应(SFSA)需求分析与设计阶段的建模,为此,提出一种基于UML用例扩展的SFSA需求分析与设计方法――Fuzzy Case。该方法结合SFSA的概念模型,应用UML扩展机制引入新的构造型和标记值,建立了Fuzzy Case的一般模型;同时定义了Fuzzy Case的语法结构,并用对象约束语言(OCL)定义了其语义描述,形成了完整的SFSA建模设施。实例验证表明,与传统方法相比,Fuzzy Case能更清晰地表达SFSA的结构,准确定义软件的内部语义,建模过程更加简单方便,能有效提高SFSA的开发效率。

关键词:用例;模糊用例;统一建模语言扩展;软件自适应;模糊自适应

0 引言

近年来,随着软件规模和复杂程度的不断增加,用户需求的频繁变化,给软件的维护和运行提出了巨大挑战。如何找到一种新的软件开发方法,使其能够有效降低软件维护压力、增强自身容错和应对变化的能力,成为国内外研究的热点[1]。软件自适应技术应运而生,这类软件能够在运行过程中,实时收集系统的各种变化信息,并根据预先设定好的策略,在必要时对自身进行自动调整,以更好地为用户提供服务[2]。

软件模糊自适应(Software Fuzzy SelfAdaptation,SFSA)[3]是在软件自适应技术的基础上提出的,它是把模糊控制逻辑应用到自适应软件领域的一种新的自适应软件范型。它的提出试图解决软件自适应环中日益凸显的不确定性和模糊性,消除模糊不确定性对自适应过程的影响,实现在不确定条件下软件基于不完备信息的感知、决策和自适应。

随着软件模糊自适应技术的提出与应用,迫切需要一套能够贯穿从需求分析到设计、实现等全过程的软件模糊自适应开发方法,文献[3-4]针对SFSA的开发阶段做了大量工作,设计了专门的开发工具包。但针对软件模糊自适应需求分析与设计阶段的研究还比较少,而需求分析建模是开发优秀软件的重要环节,因此,需要一套专用辅助工具进行分析和设计。

目前,可借鉴的用于软件模糊自适应需求分析与设计阶段建模的方法主要有以下两类:

1)软件自适应研究领域提出的方法和工具。如文献[5-7]提出的RELAX规约语言、文献[8]提出的MAPEK(MonitorAnalyzePlanExecuteKnowledge)方法、文献[9]提出的Adapt Case方法等,这些方法可很好地支持一般软件自适应软件需求分析与设计阶段的建模,但对SFSA缺少可变性支持。

2)直接利用统一建模语言(Unified Modeling Language,UML)建模。如文献[10-11]提出的软件自适应设计模式。UML用例作为面向对象建模的核心技术,可用于软件需求分析与设计阶段的建模。但由于其缺乏相关设施,使得模糊自适应用例模型的语法结构表示不清晰、语义表述不准确,且模糊自适应逻辑[3]与应用逻辑交织在一起,不便于模糊自适应逻辑的封装与重用。

针对以上情况,本文基于UML用例提出了模糊用例(Fuzzy Case),专门用于SFSA自适应逻辑的需求分析与设计阶段建模。Fuzzy Case具有以下特点:

1)Fuzzy Case能以图形化的方式定义SFSA的结构,保证了SFSA模型的直观性和易理解性;

2)Fuzzy Case用对象约束语言(Object Constraint Language, OCL)定义对象的约束条件,保证了模型描述的准确性;

3)利用模糊用例建模SFSA,在需求设计早期阶段就实现了模糊自适应逻辑与应用逻辑的分离,提高了软件模块化程度,降低了软件开发难度。

1 预备知识

本章首先给出软件模糊自适应的定义及基本构架,然后简单介绍UML扩展机制。

1.1 软件模糊自适应概述

软件自适应[2-3]是指软件为持续、高质量地提供服务,在运行时通过感知环境变化和自身状态,对自身行为、内部参数和软件结构进行的有效调整。具有自适应能力的软件被称为自适应软件。

软件模糊自适应(SFSA)是在软件自适应基础上提出的,它利用模糊控制原理实现自适应逻辑,是软件自适应的一种具体实现方式。根据软件模糊自适应架构搭建的软件系统称为模糊自适应软件(Fuzzy SelfAdaptive Software)[3],如图1所示。根据软件自适应外部机制[3]要求,该软件系统可划分为两个单元:模糊自适应逻辑(Fuzzy SelfAdaptive Logic)单元和应用逻辑(Application Logic)单元。

1)模糊感知器(FuSensor):

定义2

主要负责采集软件内部状态及外部环境的实时数据,并将其进行模糊化处理,筛选出需要进行模糊自适应调节的有效信息。

具体构成及作用如下:

a)传感器(Sensor):检测系统内部状态、外部环境的变化,收集用户新的需求。在该软件实体中添加了标记值“Kind”,用以显示地说明传感器的类型(如Kind=Resource)。

b)模糊化(Fuzzification)单元:调用隶属度函数(MemeberShipFunction)[13],对传感器采集的信息执行模糊化操作。在该单元添加了一种新的属性“subsets1”,用以存储执行模糊操作“fuzzy”后得到的数据。

c)边界值(Bound):在该单元添加新的属性“upper”和“lower”用以设定系统正常运行时的参数。

d)比较器(Comparator):将模糊子集与对应边界值作比较,超出边界范围则生成对应触发事件event,触发模糊自适应器动作的执行。

2)模糊自适应器(FuAdaptor):

定义3 模糊自适应器(FuAdaptor)。是一类基于模糊推理规则进行模糊自适应决策的软件实体。

在该单元添加了布尔型变量“event”作为模糊自适应器执行与否的触发事件。

3)模糊执行器(FuActuator):

定义4 模糊执行器(FuActuator)。是一种将模糊决策施加到应用逻辑上的软件实体。

模糊执行操作分两步完成:

a)解模糊化操作,将模糊语言变量解析成执行器可识别的清晰值;

b)将清晰的模糊决策施加到应用逻辑,调整应用逻辑的参数、行为或结构。

对应模糊执行操作的两步,模糊执行器可分成如下两个子单元:

a)解模糊化(Defuzzification)单元:该单元添加了新的属性“subsets2”用以存放解模糊之前的数据。

b)执行器(Actuator):执行系统决策,对软件应用单元进行参数、结构或行为的调整。在该单元添加标记值“Kind”显示地标记执行器的类型(如Kind=Parametric)。

4)知识库(KnowledgeBase)。

在知识库单元定义了两个特殊的数据集合“MembershipFunction”和“FuzzyRoleBase”,用以存放隶属度函数和模糊推理规则。

隶属度函数实现软件上下文空间的模糊化与解模糊化,常用的隶属度函数(如三角形函数、梯形函数、高斯函数等)都会存放在数据集“MembershipFunction”中供系统调用。

模糊推理规则存储用于实现目标软件模糊自适应的知识。每条规则由一组“Ifthen”语句组成,每一条语句的前件(antecedent)是经模糊化的感知量,其后件是(consequent)对应的控制量。作为一种特殊的数据类型,其存放于数据集“FuzzyRoleBase”中。

3.3 Fuzzy Case语义描述

本节以UML顺序图的形式详细给出“Relation Definition”中各软件实体的交互关系,用对象约束语言(OCL)给出Fuzzy Case约束条件“Constraint Definition”的描述。

1)Fuzzy Case各单元顺序图。

如图4所示,传感器Sensor将检测到的系统信息发送给模糊器Fuzzification,模糊器调用隶属度函数执行模糊操作生成模糊子集subsets;比较器Comparator取出事先设定好的边界值上限upper、下限lower,与对应模糊子集比较,若超出边界值则生成对应触发事件event,触发自适应操作。这是FuSensor内部各对象动作序列(图4中的操作1~10)。

FuAdaptor被触发后,调用模糊推理规则,进行模糊推理,制定模糊决策,推理操作inference执行完即触发FuActuator单元动作(图4中的操作11~14)。

FuActuator将FuAdaptor制定的模糊决策解模糊化,解析为清晰的可执行控制信号,并由Actuator实施到软件应用逻辑上(图4中的操作15~17)。

从上述案例建模过程可以看出,本文提出的Fuzzy Case具有结构清晰、语义准确、易读性较强等特点,能够较好地直接用于模糊自适应需求分析与设计。

5 相关工作和讨论

软件模糊自适应作为新的软件自适应范型,目前还缺乏关于需求分析和设计方面的研究工作。但在软件自适应需求分析与设计方面已有一些相关研究工作,本文将这类工作分为两个方面:

1)通过定义新的规约语言描述用户需求,进行需求建模与设计;

2)通过扩展UML,使其支持特定领域建模。

在形式化规约语言研究方面,代表性工作是Whittle等[5-7]提出的RELAX语言。这种方法能精确描述软件自适应相关元素及其之间的关系,并很好地实现了不确定性问题的描述;但其缺少图形化的支持,可视性、通用性不强。而在本文的方法中,直接引用了标准化规约语言OCL,通用性比较强。

在面向软件自适应的UML扩展研究方面,其主要思想是通过给UML增加新的设施使其支持特定领域建模。根据对UML扩展粒度的不同,这方面研究工作又可分为两个方面:

1)对UML作细粒度的扩展,添加构造型、标记值等,使其支持特定领域建模。这方面代表性工作是Hebig等[14]提出的控制环显示化表达的方法。他利用构造型、标记值等方式实现了“controlloop”的显示化,并且定义了自适应的三大角色;但对定义的元素,没有给出详细的语法结构与语义约束。本文的Fuzzy Case方法中用顺序图给出各对象交互的语义描述,弥补了上述方法的不足。

2)在UML元模型层添加新的设施,构造扩展包Profile,构建软件自适应逻辑。代表性研究是Luckey等[9]提出的Adapt Case,通过在元模型层添加软件自适应相关的设施,使其支持特定领域建模;但其对各对象动作序列的描述不够完整,且没有对“sencedecideact”控制环的“decide”环节单独设计,决策逻辑表述不完整。本文Fuzzy Case方法以SFSA概念模型为指导,完整地定义了模糊自适应环的各个角色。

6 结语

软件模糊自适应是一种正处于发展的、新兴的软件自适应范型,通过把模糊控制逻辑应用到软件自适应架构上,最终实现系统。该范型的开发方法正处于研究、探讨中,没有统一的方法和工具进行建模设计。本文结合现有的研究对自适应软件开发方法进行了扩充和补充,提出Fuzzy Case的概念,对SFSA相关概念诸如FuSensor、FuAdaptor、FuActuator等的语法结构和语义描述给出详细说明,并以任务关键系统Lon893OPCServer进行用例建模给出其模糊自适应逻辑详细描述,验证了本文方法的有效性。

本文的模糊用例仅能给出模糊自适应单元的逻辑描述,它必须映射为具体的类,系统才能最终得到实现。下一步研究方向主要集中在软件模糊自适应各实体的结构建模上。初步打算结合AOP(AspectOriented Programming)与UML技术,研究软件模糊自适应的结构建模,逐渐形成一整套贯穿从需求分析到设计、实现等全过程的软件模糊自适应开发建模方法。

参考文献:

[1]KARSAI G, SZTIPANOVITS J. A modelbased approach to selfadaptive software [J]. IEEE Intelligent Systems and their Applications, 1999, 14(3): 46-53.

[2]SALEHIE M, TAHVILDARI L. Selfadaptive software: landscape and research challenges [J]. ACM Transactions on Autonomous and Adaptive Systems, 2009, 4(2): 14.

[3]YANG Q L, LYU J, TAO X P, et al. Fuzzy selfadaptation of missioncritical software under uncertainty [J]. Journal of Computer Science and Technology, 2013, 28(1): 165-187.

[4]YANG Q, LU J, XING J, et al. Fuzzy controlbased software selfadaptation: a case study in mission critical systems [C]// COMPSACW11: Proceedings of the 2011 IEEE 35th Annual Computer Software and Applications Conference Workshops. Piscataway: IEEE, 2011: 13-18.

[5]WHITTLE J, SAWYER P, BENCOMO N, et al. RELAX: a language to address uncertainty in selfadaptive systems requirement [J]. Requirements Engineering, 2010, 15(2): 177-196.

[6]CHENG B H, SAWYER P, BENCOMO N, et al. A goalbased modeling approach to develop requirements of an adaptive system with environmental uncertainty [C]// Proceedings of the 12th International Conference on Model Driven Engineering Languages and Systems. Berlin: Springer, 2009: 468-483.

[7]WHITTLE J, SAWYER P, BENCOMO N, et al. RELAX: incorporating uncertainty into the specification of selfadaptive systems [C]// Proceedings of the 17th IEEE International Requirements Engineering Conference. Washington, DC: IEEE Computer Society, 2009: 79-88.

[8]KEPHART J O, CHESS D M. The vision of autonomic computing [J]. Computer, 2003, 36(1): 41-50.

[9]LUCKEY M, NAGEL B, GERTH C, et al. Adapt cases: extending use cases for adaptive systems [C]// Proceeding of the 6th International Symposium on Software Engineering for Adaptive And SelfManaging Systems. New York: ACM, 2011: 30-39.

[10]RAMIREZ A J, CHENG B H C. Design patterns for developing dynamically adaptive systems [C]// Proceedings of the 2010 ICSE Workshop on Software Engineering for Adaptive and SelfManaging Systems. New York: ACM, 2010: 49-58.

[11]RAMIREZ A J, CHENG B H C. Design patterns for developing dynamically adaptive systems [C]// SEAMS10: Proceedings of the 2010 ICSE Workshop on Software Engineering for Adaptive and SelfManaging Systems. New York: ACM, 2010: 49-58.

[12]XU B, ZHOU Y, LU H. UML and software modeling [M]. Beijing: Tsinghua University Press, 2010: 13-26.(徐宝文,周毓明,卢红敏.UML与软件建模[M].北京:清华大学出版社,2010:13-26.)

[13]ZHU J. Principles and application of fuzzy control [M]. Beijing: China Machine Press,2005:53-57.(诸静.模糊控制原理与应用[M].北京:机械工业出版社,2005:53-57.)

[14]HEBIG R, GIESE H, BECKER B. Making control loops explicit when architecting selfadaptive systems [C]// Proceedings of the Second International Workshop on SelfOrganizing Architectures. New York: ACM, 2010: 21-28.

上一篇:邂逅春日里的氤氲温泉 下一篇:基于剖分理论的遥感影像模板数据模型