《面向特征的领域建模技术FeatureOrientedDomainModeling.ppt》由会员分享,可在线阅读,更多相关《面向特征的领域建模技术FeatureOrientedDomainModeling.ppt(67页珍藏版)》请在三一办公上搜索。
1、1,面向特征的领域建模技术(Feature-Oriented Domain Modeling),梅 宏北京大学信息科学技术学院软件研究所高可信软件技术教育部重点实验室2008年2月25日交通大学,新竹,2,领域工程与应用工程,3,主要内容,Domain Analysis,DRM,Domain Design,DSSA,Requirements Analysis,ARM,主要问题1 DRM的结构2 DRM的建立3 基于DRM的ARM的建立4 基于DRM的DSSA的设计,4,领域需求模型(DRM)的结构,相关研究成果发表于 ICRE05,REJ06,SoSyM06.,5,DRM的结构,使用 特征模型
2、 作为DRM基本思想把 特征 作为问题空间的基本实体使用 特征 以及 特征间的关系 刻画问题空间,Problem space,Feature,Relation between features,Feature-oriented view of the problem space,6,特征,什么是特征?从外延来看:一个特征描述了一种具有用户/客户价值的软件特点。从内涵来看:一个特征是由一组紧密关联的单个需求构成的单元。,7,特征模型,FM,三种视图,记录了特征间的精化关系,记录了特征间的交互关系,记录了特征间的约束关系,特征模型=特征+关系(精化+约束+交互),8,特征的属性,名称(Name)特
3、征的助记符号描述(Description)对特征所指需求的详细叙述可选性(Optionality)Optional;Mandatory绑定时间(Binding-Time)Reuse-time,Compile-time,Install-time,Load-time,Run-time,绑定状态(Binding-State)Bound;Removed;Undecided,9,精化关系(Refinements),精化 是一种存在于 不同 粒度/抽象层次 的特征之间的关系不同 粒度/抽象层次 的特征 通过精化关系形成层次式的结构层次结构提供了一种描述复杂系统的手段,10,三种精化关系,分解(Decomp
4、osition)把一个特征精化为一组作为其构成成分的子特征称为 分解属性化(Characterization)识别出一个特征具有的属性型特征 称为 属性化特殊化(Specialization)把一个特征精化为一个包含更多细节的特征 称为 特殊化,11,三种精化关系,编辑,拷贝,粘贴,删除,图元移动,移动模式,移动约束,虚框移动,整体移动,水平约束,垂直约束,Decomposition,Characterization,Specialization,Specialization,整体,部分,实体,行为属性,简单示例,12,约束关系(Constraints),约束 是一种特征间的 静态依赖关系更严
5、格而言,约束是不同特征的绑定状态之间的依赖关系约束提供了对特征模型的剪裁结果进行验证的手段剪裁是对特征模型进行复用的手段约束有助于验证剪裁结果的完整性和一致性,13,约束关系,几种不同类型的约束二元约束(Binary Constraints)组约束(Group Constraints)绑定谓词(Binding Predicates)组合约束(Composite Constraints),14,二元约束,requiresmutual-requiresexcludes,mutual-requires(A,B:Feature)=def require(A,B)AND require(B,A),req
6、uires(A,B:Feature)=def(A.Binding-State=bound)(B.Binding-State=bound),excludes(A,B:Feature)=defNOT(A.Binding-State=bound)AND(B.Binding-State=bound),15,组约束,mutex-group一组相互排斥的特征all-group一组相互依赖的特征none-group一组松散的特征,mutex-group(P:set Feature)=def A,B P:exclude(A,B),all-group(P:set Feature)=def A,B P:mutua
7、l-require(A,B),none-group(P:set Feature)=def TRUE,16,绑定谓词,single-bound一组特征中只有一个特征处于绑定状态multiple-bound一组特征中有多个特征处于绑定状态all-bound一组特征全部处于绑定状态,single-bound(P:set Feature)=def one A P:(A.Binding-State=bound),multiple-bound(P:set Feature)=def some A P:(A.Binding-State=bound),all-bound(P:set Feature)=def A
8、 P:(A.Binding-State=bound),17,组合约束,示例:single-bound(A,B,C)requires multiple-bound(D,E),18,图形化约束标记,19,图形化约束标记,简单示例,Constraints:,A,require,E,C,exclude,F,,,mutex,-,group,(A,B,C),single,-,bound,(A,B,C),require,D.,Graphical Notation:,20,交互关系,交互 是一种特征间的 动态依赖关系交互 是 约束 在软件系统运行时刻的体现交互提供了将各个相对独立的成分组装生成系统的手段即:系
9、统=构成成分+构成成分之间的交互同时,关注交互和约束之间的追踪关系,21,几种特征之间的交互关系,InvokeMeta-level configureResource configureNotifyFlow,22,Invoke 调用,定时邮件收取,邮件收取,邮件收取用例,invoke,invoke,尝试从预先设定的邮件服务器上收取邮件,当用户点击特定的UI构件时,尝试从预先设定的邮件服务器上收取邮件,在每一个预先设置的时间点上尝试从预先设定的邮件服务器上收取邮件,23,Meta-level configure 元层配置,定时邮件收取,定时邮件收取配置器,Meta-level configure
10、,根据用户的请求设定 定时邮件收取 的绑定状态,即在 bound 和 undecided 两个状态之间切换,这是一个运行时刻绑定的特征,24,Resource configure 资源配置,邮件过滤器,邮件过滤配置器,Resource configure,根据预先设定的过滤规则对收到的邮件进行过滤,根据用户的请求修改邮件过滤规则,25,Notify 通知,对特征 A 和 B,“A notify B”表示:A 向 B 发送一条消息,以指明某种条件已满足或某事件已发生。,A,B,Notify,26,Flow 流,邮件收取,邮件解密,邮件过滤,垃圾箱,收件箱,Flow,Flow,过滤规则集合,Rea
11、d rules,Put into,27,二元交互分类框架,二元交互中的角色TriggerTriggee,28,二元交互分类框架,DIMENSION 2:Trigger 和 Triggee 是否存在如下的约束requires(trigger,triggee).VALUES:Explicit(显式),Implicit(隐式).,DIMENSION 1:Trigger 是否于 Triggee 发生直接的交互.VALUES:Direct(直接),Indirect(间接).,29,二元交互分类框架,DIMENSION 2,DIMENSION 1,direct,indirect,explicit,impl
12、icit,notify,invoke,resource configure,flow,meta-level configure,30,领域需求模型(DRM)的建立,Domain Analysis,DRM,Domain related resource,相关研究成果发表于 COMPSAC03.,31,几种具体类型的特征,功能(Function)输入和输出之间的关系行为特点(Behavior Characteristic)对从输入到输出的变换过程的限制服务(Service)一组相关的功能以及行为特点构成的单元用例(Use-Case)用户和软件之间的交互序列质量属性(Quality)对软件的非功能性
13、需求,32,一种更具体的特征模型,33,支持工具,实践应用:在与云南昆明863软件企业孵化器的合作中,在 办公自动化 和 公路工程管理 等领域中得到了成功的应用,34,基于DRM的ARM的建立,DRM,Requirements Analysis,ARM,The Reuse context,相关研究成果发表于 ICFEM04.,35,基于DRM的ARM的建立,ARM 的生产过程是对 DRM 进行复用的过程这种复用是通过 定制 达到的剪裁:从 DRM 中选择一组符合当前复用上下文的特征扩充:把 特定于当前应用的需求 添加到剪裁后的DRM中,DRM,Requirements Analysis,ARM
14、,The Reuse context,36,基于DRM的ARM的建立,DRM,ARM,Customization,Partially-Customized Feature Model 1,Partially-Customized Feature Model 2,Partially-Customized Feature Model N,在绑定时间1 做出的剪裁决策,在绑定时间2 做出的剪裁决策,复用过程,在绑定时间N 做出的剪裁决策,在绑定时间N+1 做出的剪裁决策,37,剪裁决策,An UndecidedFeature,A RemovedFeature,A BoundFeature,删除,绑定
15、,38,基于DRM的ARM的建立,一个问题目前的研究 缺乏对 非完全绑定的特征模型 进行验证的有效手段后果增加了定制过程的困难性在当前绑定时间中做出的错误的剪裁决策得不到及时的检查,从而进一步向后续的绑定时间传播,39,三条验证准则,40,三条验证准则,41,基于DRM的DSSA的设计,相关研究成果发表于 MODELS05,REJ06,42,基于DRM的DSSA的设计,在设计阶段如何利用特征模型中的信息我们的途径:,43,三个重要的层次,需求层单个需求 被聚集成具有更大粒度的特征一个特征包含了一组紧密关联的单个需求规约层规约 是对 需求的 操作化(Operationalization)软件开发
16、人员按照规约去编写软件,从而满足需求规约 被聚集成具有更大粒度的责任(Responsibility)一个责任包含了一组紧密关联的规约实现层该层中包含了预先编程实现的软件构件,使用这些构件能够快速实现特定的责任称之为 基础设施构件,44,基于DRM的DSSA的设计,45,基于DRM的DSSA的设计,A:特征的操作化每一个特征分别被操作化为 一组责任 以及 责任之间/责任与资源容器之间 的交互,46,基于DRM的DSSA的设计,B:资源容器分析从特征之间的间接交互中发现资源容器资源容器往往是间接交互的特征之间的媒介从特征的描述中发现资源容器,Interaction,Resource Contain
17、er,Feature,47,基于DRM的DSSA的设计,通过 A.特征操作化 和 B.资源容器分析,特征以及特征之间的交互被转化为 责任、资源容器、以及 直接的交互,Direct,-,Interaction,Requirement,1.*,Interaction,Responsibility,Resource Container,1.*,Operationalized,-,into,1,Feature,Direct,-,Interaction,The Requirement Level,The Specification Level,48,基于DRM的DSSA的设计,C:种子构件创建对于每一个
18、特征,在规约层上建立一个对应的实体,称为 种子构件种子构件 解决了 构件的“原罪问题”,即:构件从哪里来在后继活动中,将对种子构件进行进一步的合并,以获取更大粒度的构件,Component Seed,1,1,Feature,49,基于DRM的DSSA的设计,D:责任分配把 责任 分配到 种子构件 上从这种意义上,特征构件 可以被视为 责任容器根据责任分配的结果可以区分两种类型的责任核心责任(Core-Responsibility)附加责任(Added-Responsibility),Component Seed,Core,Responsibility,Added,Responsibility,
19、Responsibility,*,*,50,核心责任和附加责任,:Core-Responsibility,:Added-Responsibility,51,基于DRM的DSSA的设计,E:概念构件分析把 种子构件/资源容器 聚集成 更大粒度的单元,称为 概念构件把具有较紧密联系的 种子构件/资源容器 聚集成 概念构件把具有相同相同交互上下文的 种子构件 聚集成 概念构件,Direct,-,Interaction,Component Seed,Core,Responsibility,Added,Responsibility,Responsibility,Conceptual Component,
20、Resource Container,*,*,Direct,-,Interaction,*,*,Direct,-,Interaction,52,基于DRM的DSSA的设计,F:基础设施构件分析分析概念构件的实现上下文,发掘出 对其实现有益的 基础设施构件,Conceptual Component,Infrastructure Component,Depend,-,on,53,一个简单的示例,一个简单的文档编辑软件特征1:Save将当前文档保存到 磁盘 上特征2:Copy将当前文档中被选择的文字拷贝到 粘贴板 上特征3:Cut将当前文档中被选择的文字剪切到 粘贴板 上特征4:Paste将 粘贴板
21、 上的文字粘贴到当前文档光标所在位置特征5:Un/Re-do根据用户的请求,撤销/重做 那些未被存盘的编辑操作,54,一个简单的示例,特征间的交互分析,Save,Copy,Cut,Paste,Notify,2,3,4,5,1,Resource configure,Resource configure,Resource configure,55,种子构件建立,Save,Copy,Cut,Paste,Un/Re-do,2,3,4,5,1,56,特征操作化;资源容器分析;责任分配,Save,Copy,Cut,Paste,Un/Re-do,Copy,Cut,Paste,Save,Clipboard,2
22、,3,4,5,1,6,:Core Responsibility,:Added Responsibility,57,交互分析,Save,Copy,Cut,Paste,Un/Re-do,Copy,Cut,Paste,Save,Clipboard,write,write,read,2,3,4,5,1,6,:Core Responsibility,:Added Responsibility,58,特征 Un/Re-do的操作化;资源构件分析;责任分配,Save,Copy,Cut,Paste,Un/Re-do,Copy,Cut,Paste,Save,Inform Saved,Undo,Redo,Clea
23、r URI,Record URI,Record URI,Record URI,Clipboard,write,write,read,Un/Re-do Info(URI),2,3,4,5,1,6,7,:Core Responsibility,:Added Responsibility,59,交互分析,Save,Copy,Cut,Paste,Un/Re-do,Copy,Cut,Paste,Save,Inform Saved,Undo,Redo,Clear URI,Un/Re-do Info(URI),Record URI,Record URI,Record URI,Clipboard,inform
24、,write,write,read,write,write,write,consume,consume,clear,2,3,4,5,1,6,7,:Core Responsibility,:Added Responsibility,60,概念构件分析,Save,Copy,Cut,Paste,Un/Re-do,Copy,Cut,Paste,Save,Inform Saved,Undo,Redo,Clear URI,Un/Re-do Info(URI),Record URI,Record URI,Record URI,Clipboard,inform,write,write,read,write,w
25、rite,write,consume,consume,clear,2,3,4,5,1,6,7,:Core Responsibility,:Added Responsibility,61,概念构件及其之间的交互,Clipboard,Clipboard,Edit,Copy,Cut,Paste,URI,URI,Save,Save,Un/Re-do,Un/Re-do,62,概念构件分析,Save,Copy,Cut,Paste,Un/Re-do,Copy,Cut,Paste,Save,Inform Saved,Undo,Redo,Clear URI,Un/Re-do Info(URI),Record U
26、RI,Record URI,Record URI,Clipboard,inform,write,write,read,write,write,write,consume,consume,clear,2,3,4,5,1,6,7,:Core Responsibility,:Added Responsibility,63,概念构件及其之间的交互,Un/Re-do,Clipboard,Clipboard,Edit,Copy,Cut,Paste,URI,Save,Un/Re-do,Save,64,基础设施构件分析,Clipboard Component(Provided by OS),Stack Component(Provided by API),Depend-on,Depend-on,I/O Component(Provided by OS),Depend-on,65,支持工具,下一阶段:基于责任的软件体系结构 转换为 UML2.0中的软件体系结构,从而实现与工业标准的兼容,特征的操作化视图,特征模型视图,责任到构件的分配视图,66,总结,67,总 结,使用 特征模型 组织需求以及需求之间的关系;利用 约束 实现对需求的有效剪裁与复用;利用 特征到责任的操作化 和 责任的聚合 实现从特征模型到软件体系结构的过渡;,