面向特征的领域建模技术FeatureOrientedDomainModeling_第1页
面向特征的领域建模技术FeatureOrientedDomainModeling_第2页
面向特征的领域建模技术FeatureOrientedDomainModeling_第3页
面向特征的领域建模技术FeatureOrientedDomainModeling_第4页
面向特征的领域建模技术FeatureOrientedDomainModeling_第5页
已阅读5页,还剩62页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

面向特征的领域建模技术

(Feature-OrientedDomainModeling)北京大学高可信软件技术教育部重点实验室1领域工程与应用工程2主要内容DomainAnalysisDRMDomainDesignDSSARequirementsAnalysisARM主要问题1DRM的结构2DRM的建立3基于DRM的ARM的建立4基于DRM的DSSA的设计3领域需求模型(DRM)的结构相关研究成果发表于[ICRE05],[REJ06],[SoSyM06]

.4DRM的结构使用特征模型作为DRM基本思想把特征作为问题空间的基本实体使用特征以及特征间的关系刻画问题空间ProblemspaceFeatureRelationbetweenfeaturesFeature-orientedviewoftheproblemspace5特征什么是特征?从外延来看:一个特征描述了一种具有用户/客户价值的软件特点。从内涵来看:一个特征是由一组紧密关联的单个需求构成的单元。6特征模型FM三种视图FeaturesTheRefinementViewsTheConstraintViewsTheInteractionViews记录了特征间的精化关系记录了特征间的交互关系记录了特征间的约束关系特征模型=特征+关系(精化+约束+交互)7特征的属性名称(Name)特征的助记符号描述(Description)对特征所指需求的详细叙述可选性(Optionality)Optional;Mandatory绑定时间(Binding-Time)Reuse-time,Compile-time,Install-time,Load-time,Run-time,…绑定状态(Binding-State)Bound;Removed;Undecided8精化关系(Refinements)精化是一种存在于不同粒度/抽象层次的特征之间的关系不同粒度/抽象层次的特征通过精化关系形成层次式的结构层次结构提供了一种描述复杂系统的手段9三种精化关系分解(Decomposition)把一个特征精化为一组作为其构成成分的子特征称为分解属性化(Characterization)识别出一个特征具有的属性型特征称为属性化特殊化(Specialization)把一个特征精化为一个包含更多细节的特征称为特殊化10三种精化关系编辑拷贝粘贴删除图元移动移动模式移动约束虚框移动整体移动水平约束垂直约束DecompositionCharacterizationSpecializationSpecialization整体部分实体行为属性简单示例11约束关系(Constraints)约束是一种特征间的静态依赖关系更严格而言,约束是不同特征的绑定状态之间的依赖关系约束提供了对特征模型的剪裁结果进行验证的手段剪裁是对特征模型进行复用的手段约束有助于验证剪裁结果的完整性和一致性12约束关系几种不同类型的约束二元约束(BinaryConstraints)组约束(GroupConstraints)绑定谓词(BindingPredicates)组合约束(CompositeConstraints)13二元约束requiresmutual-requiresexcludesmutual-requires(A,B:Feature)=def

require(A,B)ANDrequire(B,A)requires(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))14组约束mutex-group一组相互排斥的特征all-group一组相互依赖的特征none-group一组松散的特征mutex-group(P:setFeature)=def

A,BP:exclude(A,B)all-group(P:setFeature)=defA,BP:mutual-require(A,B)none-group(P:setFeature)=defTRUE15绑定谓词single-bound一组特征中只有一个特征处于绑定状态multiple-bound一组特征中有多个特征处于绑定状态all-bound一组特征全部处于绑定状态single-bound(P:setFeature)=def

oneAP:(A.Binding-State=bound)multiple-bound(P:setFeature)=def

someAP:(A.Binding-State=bound)all-bound(P:setFeature)=def

AP:(A.Binding-State=bound)16组合约束multiple-boundall-bound+single-bound

multiple-bound+all-bound

single-boundrequiresmutual-requires

excludes示例:

single-bound(A,B,C)requires

multiple-bound(D,E)17图形化约束标记(require)(mutualrequire)(exclude)(single-bound)(multiple-bound)(all-bound)CompositeConstraints:BasicConstraints:GroupConstraints:BindingPredicates:(Mutex-Group)(None-Group)(All-Group)18图形化约束标记简单示例Constraints:ArequireE,CexcludeF,mutex-group(A,B,C),single-bound(A,B,C)requireD.GraphicalNotation:19交互关系交互是一种特征间的动态依赖关系交互是约束在软件系统运行时刻的体现交互提供了将各个相对独立的成分组装生成系统的手段即:系统=构成成分+构成成分之间的交互同时,关注交互和约束之间的追踪关系20几种特征之间的交互关系InvokeMeta-levelconfigureResourceconfigureNotifyFlow21Invoke–调用定时邮件收取邮件收取邮件收取用例invokeinvoke尝试从预先设定的邮件服务器上收取邮件当用户点击特定的UI构件时,尝试从预先设定的邮件服务器上收取邮件在每一个预先设置的时间点上尝试从预先设定的邮件服务器上收取邮件22Meta-levelconfigure–元层配置定时邮件收取定时邮件收取配置器Meta-levelconfigure根据用户的请求设定定时邮件收取的绑定状态,即在bound和undecided两个状态之间切换这是一个运行时刻绑定的特征23Resourceconfigure–资源配置邮件过滤器邮件过滤配置器Resourceconfigure根据预先设定的过滤规则对收到的邮件进行过滤根据用户的请求修改邮件过滤规则过滤规则集合ReadrulesWriterules<<资源容器>>24Notify–通知对特征A和B,“AnotifyB”表示:A向B发送一条消息,以指明某种条件已满足或某事件已发生。ABNotify25Flow–流邮件收取邮件解密邮件过滤垃圾箱收件箱FlowFlow过滤规则集合ReadrulesPutinto26二元交互分类框架二元交互中的角色TriggerTriggeeTriggerInteractionTriggeeAinvokeBAmeta-levelconfigureBAresourceconfigureBAinvokeBAflowB27二元交互分类框架DIMENSION2:Trigger和Triggee是否存在如下的约束

requires(trigger,triggee).VALUES :Explicit(显式),Implicit(隐式).DIMENSION1:Trigger是否于Triggee发生直接的交互.VALUES :Direct(直接),Indirect(间接).28二元交互分类框架DIMENSION2DIMENSION1directindirectexplicitimplicitnotifyinvokeresourceconfigureflowmeta-levelconfigure29领域需求模型(DRM)的建立DomainAnalysisDRMDomainrelatedresource相关研究成果发表于[COMPSAC03].30几种具体类型的特征功能(Function)输入和输出之间的关系行为特点(BehaviorCharacteristic)对从输入到输出的变换过程的限制服务(Service)一组相关的功能以及行为特点构成的单元用例(Use-Case)用户和软件之间的交互序列质量属性(Quality)对软件的非功能性需求31一种更具体的特征模型BehaviorCharacteristicLayerFunctionLayerServiceLayerQualitySectionUse-CaseSectionInteractionSectionConstraintSection32支持工具实践应用:在与云南昆明863软件企业孵化器的合作中,在办公自动化和公路工程管理等领域中得到了成功的应用33基于DRM的ARM的建立DRMRequirementsAnalysisARMTheReusecontext相关研究成果发表于[ICFEM04].34基于DRM的ARM的建立ARM

的生产过程是对DRM

进行复用的过程这种复用是通过定制达到的剪裁:从DRM中选择一组符合当前复用上下文的特征扩充:把特定于当前应用的需求添加到剪裁后的DRM中DRMRequirementsAnalysisARMTheReusecontext35基于DRM的ARM的建立DRMARMCustomizationPartially-CustomizedFeatureModel1Partially-CustomizedFeatureModel2Partially-CustomizedFeatureModelN在绑定时间1做出的剪裁决策在绑定时间2做出的剪裁决策复用过程在绑定时间N做出的剪裁决策在绑定时间N+1做出的剪裁决策36剪裁决策AnUndecidedFeatureARemovedFeatureABoundFeature删除绑定37基于DRM的ARM的建立一个问题目前的研究缺乏对非完全绑定的特征模型进行验证的有效手段后果增加了定制过程的困难性在当前绑定时间中做出的错误的剪裁决策得不到及时的检查,从而进一步向后续的绑定时间传播38三条验证准则对所有待绑定的特征至少存在一种绑定结果,其满足特征间的约束关系。准则1在不破坏特征间约束关系的前提下,每一个待绑定的特征都有被绑定的可能。准则2在不破坏特征间约束关系的前提下,每一个待绑定的特征都有被删除的可能。准则339三条验证准则

I

CRSet:I|=

i=1,...,nCi准则1

f

UFSet,

I

CRSet:

I|=(

i=1,...,nCi)(f.Binding-State=bound)准则2

f

UFSet,

I

CRSet:

I|=(

i=1,...,nCi)(f.Binding-State=removed)准则340基于DRM的DSSA的设计相关研究成果发表于[MODELS05],[REJ06]41基于DRM的DSSA的设计ResponsibilityAclusterofspecifications在设计阶段如何利用特征模型中的信息我们的途径:OperationalizedintoAssignedtoFeaturesDependenciesbetweenFeaturesComponentsInteractionsbetweenComponentsGAP(THEPROBLEMSPACE)(THESOLUTIONSPACE)42三个重要的层次需求层单个需求被聚集成具有更大粒度的特征一个特征包含了一组紧密关联的单个需求规约层规约是对需求的操作化(Operationalization)软件开发人员按照规约去编写软件,从而满足需求规约被聚集成具有更大粒度的责任(Responsibility)一个责任包含了一组紧密关联的规约实现层该层中包含了预先编程实现的软件构件,使用这些构件能够快速实现特定的责任称之为基础设施构件43基于DRM的DSSA的设计44基于DRM的DSSA的设计A:特征的操作化每一个特征分别被操作化为一组责任以及责任之间/责任与资源容器之间的交互Direct-InteractionInteractionResponsibility1..*Operationalized-into1FeatureResourceContainerDirect-Interaction45基于DRM的DSSA的设计B:资源容器分析从特征之间的间接交互中发现资源容器资源容器往往是间接交互的特征之间的媒介从特征的描述中发现资源容器InteractionResourceContainerFeature46基于DRM的DSSA的设计通过A.特征操作化和B.资源容器分析,特征以及特征之间的交互被转化为责任、资源容器、以及直接的交互Direct-InteractionRequirement1..*InteractionResponsibilityResourceContainer1..*Operationalized-into1FeatureDirect-InteractionTheRequirementLevelTheSpecificationLevel47基于DRM的DSSA的设计C:种子构件创建对于每一个特征,在规约层上建立一个对应的实体,称为种子构件种子构件解决了构件的“原罪问题”,即:构件从哪里来在后继活动中,将对种子构件进行进一步的合并,以获取更大粒度的构件ComponentSeed11Feature48基于DRM的DSSA的设计D:责任分配把责任分配到种子构件上从这种意义上,特征构件可以被视为责任容器根据责任分配的结果可以区分两种类型的责任核心责任(Core-Responsibility)附加责任(Added-Responsibility)ComponentSeedCoreResponsibilityAddedResponsibilityResponsibility**49核心责任和附加责任<<Feature>>A<<Feature>>B<<ComponentSeed>>AC<<ComponentSeed>>BCAR1AR2AR3OperationalizedintoBR3BR2BR1OperationalizedintoAR1AR2AR3AssignedtoBR2BR1BR3Assignedto:Core-Responsibility:Added-Responsibility50基于DRM的DSSA的设计E:概念构件分析把种子构件/资源容器聚集成更大粒度的单元,称为概念构件把具有较紧密联系的种子构件/资源容器聚集成概念构件把具有相同相同交互上下文的种子构件聚集成概念构件Direct-InteractionComponentSeedCoreResponsibilityAddedResponsibilityResponsibilityConceptualComponentResourceContainer**Direct-Interaction**Direct-Interaction51基于DRM的DSSA的设计F:基础设施构件分析分析概念构件的实现上下文,发掘出对其实现有益的基础设施构件ConceptualComponentInfrastructureComponentDepend-on52一个简单的示例一个简单的文档编辑软件特征1:Save将当前文档保存到磁盘上特征2:Copy将当前文档中被选择的文字拷贝到粘贴板上特征3:Cut将当前文档中被选择的文字剪切到粘贴板上特征4:Paste将粘贴板上的文字粘贴到当前文档光标所在位置特征5:Un/Re-do根据用户的请求,撤销/重做那些未被存盘的编辑操作53一个简单的示例特征间的交互分析<<Feature>>Save<<Feature>>Copy<<Feature>>Cut<<Feature>>Paste<<Feature>>Un/Re-doNotify23451ResourceconfigureResourceconfigureResourceconfigure54种子构件建立<<ComponentSeed>>Save<<ComponentSeed>>Copy<<ComponentSeed>>Cut<<ComponentSeed>>Paste<<ComponentSeed>>Un/Re-do2345155特征操作化;资源容器分析;责任分配<<ComponentSeed>>Save<<ComponentSeed>>Copy<<ComponentSeed>>Cut<<ComponentSeed>>Paste<<ComponentSeed>>Un/Re-doCopyCutPasteSave<<ResourceContainer>>Clipboard234516:CoreResponsibility:AddedResponsibility56交互分析<<ComponentSeed>>Save<<ComponentSeed>>Copy<<ComponentSeed>>Cut<<ComponentSeed>>Paste<<ComponentSeed>>Un/Re-doCopyCutPasteSave<<ResourceContainer>>Clipboardwritewriteread234516:CoreResponsibility:AddedResponsibility57特征Un/Re-do的操作化;资源构件分析;责任分配<<ComponentSeed>>Save<<ComponentSeed>>Copy<<ComponentSeed>>Cut<<ComponentSeed>>Paste<<ComponentSeed>>Un/Re-doCopyCutPasteSaveInformSavedUndoRedoClearURIRecordURIRecordURIRecordURI<<ResourceContainer>>Clipboardwritewriteread<<ResourceContainer>>Un/Re-doInfo(URI)2345167:CoreResponsibility:AddedResponsibility58交互分析<<ComponentSeed>>Save<<ComponentSeed>>Copy<<ComponentSeed>>Cut<<ComponentSeed>>Paste<<ComponentSeed>>Un/Re-doCopyCutPasteSaveInformSavedUndoRedoClearURI<<ResourceContainer>>Un/Re-doInfo(URI)RecordURIRecordURIRecordURI<<ResourceContainer>>Clipboardinformwritewritereadwritewritewriteconsumeconsumeclear2345167:CoreResponsibility:AddedResponsibility59概念构件分析<<ComponentSeed>>Save<<ComponentSeed>>Copy<<ComponentSeed>>Cut<<ComponentSeed>>Paste<<ComponentSeed>>Un/Re-doCopyCutPasteSaveInformSavedUndoRedoClearURI<<ResourceContainer>>Un/Re-doInfo(URI)RecordURIRecordURIRecordURI<<ResourceContainer>>Clipboardinformwritewritereadwritewritewriteconsumeconsumeclear2345167:CoreResponsibility:AddedResponsibility60概念构件及其之间的交互<<ConceptualComponent>>Clipboard<<ResourceContainer>>Clipboard<<ConceptualComponent>>Edit<<ComponentSeed>>Copy<<ComponentSeed>>Cut<<ComponentSeed>>Paste<<ConceptualComponent>>URI<<ResourceContainer>>URI<<ConceptualComponent>>Save<<Component

Seed>>Save<<ConceptualComponent>>Un/Re-do<<ComponentSeed>>Un/Re-do61概念构件分析<<ComponentSeed>>Save<<ComponentSeed>>Copy<<ComponentSeed>>Cut<<ComponentSeed>>Paste<<ComponentSeed>>Un/Re-doCopyCutPasteSa

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论