资源描述:
《2019面向特征的领域建模技术FeatureOrientedDomainModeling课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、面向特征的领域建模技术(Feature-OrientedDomainModeling)梅宏北京大学信息科学技术学院软件研究所高可信软件技术教育部重点实验室2019年2月25日-交通大学,新竹1领域工程与应用工程2主要内容DomainAnalysisDRMDomainDesignDSSARequirementsAnalysisARM主要问题1DRM的结构2DRM的建立3基于DRM的ARM的建立4基于DRM的DSSA的设计3领域需求模型(DRM)的结构相关研究成果发表于[ICRE05],[REJ06],[
2、SoSyM06].4DRM的结构使用特征模型作为DRM基本思想把特征作为问题空间的基本实体使用特征以及特征间的关系刻画问题空间ProblemspaceFeatureRelationbetweenfeaturesFeature-orientedviewoftheproblemspace5特征什么是特征?从外延来看:一个特征描述了一种具有用户/客户价值的软件特点。从内涵来看:一个特征是由一组紧密关联的单个需求构成的单元。6特征模型FM三种视图FeaturesTheRefinementViewsTheCon
3、straintViewsTheInteractionViews记录了特征间的精化关系记录了特征间的交互关系记录了特征间的约束关系特征模型=特征+关系(精化+约束+交互)7特征的属性名称(Name)特征的助记符号描述(Description)对特征所指需求的详细叙述可选性(Optionality)Optional;Mandatory绑定时间(Binding-Time)Reuse-time,Compile-time,Install-time,Load-time,Run-time,…绑定状态(Binding
4、-State)Bound;Removed;Undecided8精化关系(Refinements)精化是一种存在于不同粒度/抽象层次的特征之间的关系不同粒度/抽象层次的特征通过精化关系形成层次式的结构层次结构提供了一种描述复杂系统的手段9三种精化关系分解(Decomposition)把一个特征精化为一组作为其构成成分的子特征称为分解属性化(Characterization)识别出一个特征具有的属性型特征称为属性化特殊化(Specialization)把一个特征精化为一个包含更多细节的特征称为特殊化10三
5、种精化关系编辑拷贝粘贴删除图元移动移动模式移动约束虚框移动整体移动水平约束垂直约束DecompositionCharacterizationSpecializationSpecialization整体部分实体行为属性简单示例11约束关系(Constraints)约束是一种特征间的静态依赖关系更严格而言,约束是不同特征的绑定状态之间的依赖关系约束提供了对特征模型的剪裁结果进行验证的手段剪裁是对特征模型进行复用的手段约束有助于验证剪裁结果的完整性和一致性12约束关系几种不同类型的约束二元约束(Binary
6、Constraints)组约束(GroupConstraints)绑定谓词(BindingPredicates)组合约束(CompositeConstraints)13二元约束requiresmutual-requiresexcludesmutual-requires(A,B:Feature)=defrequire(A,B)ANDrequire(B,A)requires(A,B:Feature)=def(A.Binding-State=bound)(B.Binding-State=bound)exc
7、ludes(A,B:Feature)=defNOT((A.Binding-State=bound)AND(B.Binding-State=bound))14组约束mutex-group一组相互排斥的特征all-group一组相互依赖的特征none-group一组松散的特征mutex-group(P:setFeature)=defA,BP:exclude(A,B)all-group(P:setFeature)=defA,BP:mutual-require(A,B)none-group(P:set
8、Feature)=defTRUE15绑定谓词single-bound一组特征中只有一个特征处于绑定状态multiple-bound一组特征中有多个特征处于绑定状态all-bound一组特征全部处于绑定状态single-bound(P:setFeature)=defoneAP:(A.Binding-State=bound)multiple-bound(P:setFeature)=defsomeAP:(A.Binding-State=bound)al