1、2005-10-271软件复用的两点基本思想12005-10-2722基本思想1时间3个月3个月3个月传统传统软件开发软件开发时间开发软件A,B,Cn个月3天3天3天基于复用基于复用软件开发软件开发以以“空间空间”换换“时间时间”2005-10-2733基本思想2(基本假设)9个月个月时间时间3个月3个月3个月开发软件A,B,Cn个月3天3天3天传统传统软件开发软件开发基于复用基于复用软件开发软件开发不同软件应用之间不同软件应用之间 存在可复用的成分存在可复用的成分2005-10-274领域工程42005-10-275软件复用:两种开发活动消费消费可复用软件资产可复用软件资产生产生产软软件件应
2、应用用生产生产软件的哪些成分软件的哪些成分具有复用价值?具有复用价值?DevelopmentFOR reuseDevelopmentWITH reuse反馈反馈52005-10-276软件:三种基本构成成分通用共性成分领域共性成分应用特定成分适用于所有软件应用的构成成分适用于特定软件应用的构成成分适用于一组软件应用的构成成分62005-10-277领域领域普适理想情况:软件的可复用成分具有普适性现实情况:软件应用所针对的 问题的差异性导致 软件的可复用成分不可能具有绝对的普适性72005-10-278领域一组具有相似或相近软件需求的应用系统所覆盖的功能区域软件应用软件应用1软件应用软件应用4软
3、件应用软件应用3软件应用软件应用282005-10-279领域功能区域功能区域应用系统应用系统abcde1234567f92005-10-2710两种类型的领域垂直领域客户管理领域权限管理领域水平领域行业领域1.行业领域的子领域2.贯穿多个行业领域102005-10-2711与 面向普适的复用 相比 面向领域的复用更容易成功11领域普适2005-10-2712领域工程与应用工程(面向领域的软件复用)122005-10-2713消费消费可复用软件资产可复用软件资产生产生产软软件件应应用用生产生产DevelopmentFOR reuseDevelopmentWITH reuse反馈反馈消费消费特定
4、领域特定领域可复用软件资产可复用软件资产生产生产特定领域特定领域软件应用软件应用生产生产领域工程应用工程反馈反馈132005-10-271414消费消费特定领域特定领域可复用软件资产可复用软件资产生产生产特定领域特定领域软件应用软件应用生产生产领域工程应用工程反馈反馈应用工程输入输入Development WITH reuseDevelopment WITHOUT reuse1232005-10-2715应用工程应用工程领域工程领域工程 (Development for Reuse)领域分析领域分析领域设计领域设计领域实现领域实现领域模型领域模型DSSA领域构件领域构件应用工程应用工程 (De
5、velopment with Reuse)需求分析需求分析软件设计软件设计构件组装构件组装需求模型需求模型ASSA应用系统应用系统可复用软件资产库可复用软件资产库生产生产消费消费反馈反馈DSSA:Domain Specific Software ArchitectureASSA:Application Specific Software Architecture应用工程应用工程应用工程应用工程 (Development without Reuse)需求分析需求分析软件设计软件设计软件编码软件编码需求模型需求模型ASSA应用系统应用系统输入输入123152005-10-2716领域工程投资回报点
6、162005-10-271717累积成本领域成员数量应用工程应用工程(Development WITHOUT reuse)应用工程应用工程(Development WITH reuse)领域工程成本?252005-10-2718软件复用成熟度182005-10-2719软件复用成熟度第一级:产品的独立开发不存在任何形式的复用,领域内各个软件产品的开发相互独立第二级:领域无关型基础设施的标准化软件中的普适性复用成分得到了系统的复用,但仍然不存在对领域共性的复用第三级:软件平台领域中的共性成分被封装为一个软件平台,领域中的软件产品都基于此平台进行开发第四级:软件产品的手工导出领域中的可复用资产具有
7、较强的可定制性,软件产品的开发通过手工定制的方式进行第五级:软件产品的自动化导出领域中的产品通过对领域可复用资产的自动化定制而产生192005-10-272020复用成熟度复用成熟度领域工程领域工程应用工程应用工程通用共性成分的复用通用共性成分的复用产品的独立开发领域无关型基础设施的标准化软件平台软件产品的手工导出软件产品的自动化导出2005-10-2721小结21领域工程领域工程软件复用与领域工程领域工程与应用工程领域工程与复用成熟度领域工程投资回报点2005-10-2722目录领域工程领域工程软件复用与领域工程领域工程与应用工程领域工程与复用成熟度领域工程投资回报点 面向特征的领域分析面向
8、特征的领域分析特征的一般性定义特征的应用举例软件的特征面向特征领域分析的基本思想与基本途径22软件复用软件复用需求复用需求复用2005-10-2723面向特征的领域分析232005-10-2724什么是特征?从 一则寻物启示开始2005-10-2725本人丢失一件物品:该物品是一辆 交通工具,有 两个轮子,人力驱动。车架为 斜梁结构,车身为 黄颜色,略微生锈,车把上有一个 银色铃铛,某物品交通工具两个轮子人力驱动斜梁结构黄颜色略微生锈银色铃铛寻物启示2005-10-2726某物品交通工具两个轮子人力驱动斜梁结构黄颜色略微生锈银色铃铛将 该物品 与 同类领域中的其它物品 区分开将 该物品所属的类
9、别领域与 其它类别领域 区分开领域共性领域变化性2005-10-2727什么是特征在一般意义下,特征 是 一个事物所展现出的 具有区分作用 的 特点 2005-10-2728特征概念的一个具体应用2005-10-2729292005-10-2730对于 软件 这个事物而言,它的特征 体现为什么?302005-10-2731研究者 对 软件特征 的 定义 存在两种不同的视角312005-10-2732第一种视角下的几个定义(1/2)定义定义1(Feature Engineering Tur99):):A set of functional and extra-functional require
10、ments.:一个由功能性和非功能性需求构成的集合一个由功能性和非功能性需求构成的集合定义定义2(Feature-based Software Evolution Meh02):):A group of individual requirements that describes a unit of functionality with respect to a specific point of view relative to a software development life cycle.:一组单个需求,描述了一个与软件开发生命周期中特定一组单个需求,描述了一个与软件开发生命周期中特
11、定视角相关的功能单元视角相关的功能单元322005-10-2733第一种视角下的几个定义(2/2)定义定义3(Requirements Engineering Wie99):):A set of logically related functional requirements that provides a capability to the user and enables the satisfaction of a business requirement:一组逻辑相关的功能性需求构成的集合,它为用户提供一组逻辑相关的功能性需求构成的集合,它为用户提供了一种能够满足特定业务需求的能力了一
12、种能够满足特定业务需求的能力332005-10-2734第二种视角下的几个定义(1/2)定义定义4(IEEE软件工程术语词典软件工程术语词典 Scc90):):A software characteristic specified or implied by requirements documentation(for example,functionality,performance,attributes,or design constraints).:一个被软件需求文档明确或隐含说明的软件特点(如,一个被软件需求文档明确或隐含说明的软件特点(如,功能、性能、属性、或设计约束等)功能、性能、
13、属性、或设计约束等)342005-10-2735第二种视角下的几个定义(2/2)定义定义5(FODA Kan90):):A prominent or distinctive user-visible aspect,quality,or characteristic of a software system or systems.:软件系统具有的一种显著的或具有区分作用的,且用户软件系统具有的一种显著的或具有区分作用的,且用户可见的方面、性质、或特点可见的方面、性质、或特点定义定义6(HP Laboratories,Martin L.Griss Gri00):):A product charac
14、teristic that users and customers view as important in describing and distinguishing members of the product line.:软件产品线中的产品具有的特点,它对于用户和客户对软件产品线中的产品具有的特点,它对于用户和客户对产品线中产品的描述和区分具有重要作用产品线中产品的描述和区分具有重要作用352005-10-2736这两种视角有联系吗?这两种视角有冲突吗?362005-10-2737概念内涵外延第一种视角第二种视角372005-10-2738什么是(软件)特征就内涵而言,特征 是 由一组相
15、对紧密关联的 单个需求构成的单元就外延而言,特征 是 一种具有用户或客户价值的软件特点 特征 是对 需求 的 封装命名评判标准2005-10-2739 “面向特征的领域分析”的 基本思想、目的?392005-10-2740“面向特征的领域分析”基本思想 基本思想基本思想把把 特征特征 作为封装需求的基本单元作为封装需求的基本单元使用使用 特征模型(特征模型(特征特征+特征间的关系特征间的关系)作为组织需)作为组织需求的基本方式求的基本方式 优点:优点:软件需求具有较好的可定制性软件需求具有较好的可定制性The Requirements SpaceFeatureRelation between
16、Features402005-10-2741“面向特征的领域分析”基本思想41某物品交通工具两个轮子人力驱动斜梁结构黄颜色横梁结构黑颜色颜色颜色梁架结构2005-10-2742“面向特征的领域分析”目的需求复用How?422005-10-2743Develop for ReuseDevelop with Reuse可可复复用用软软件件资产资产消费消费生产生产生产生产领域工程领域工程应用工程应用工程软件复用432005-10-2744需求复用领领域工程域工程应应用工程用工程(定制)(定制)领领域特征模型域特征模型消费消费生产生产生产生产领域特征模型?定制?442005-10-2745 领域特征模
17、型:领域共性特征(将该领域与其它领域区分开)+领域变化性特征(将领域内的个体相互区分开)领域模型的核心成分 领域 需求 的 共性 和 变化性 模型2005-10-2746 定制:对 领域变化性特征 进行绑定某物品交通工具两个轮子人力驱动斜梁结构黄颜色横梁结构黑颜色颜色颜色梁架结构2005-10-274747 “面向特征的领域分析”的 基本途径?共性变化性 分析2005-10-2748共性变化性 分析48x2-2xy+y2x3-x2y+xy-y2x3-x2y-xy2+y3123共性:由x,y两个变量构成的多项式变化性:每个多项式对x,y的组合规则存在差异2005-10-2749共性变化性 分析49(xy)2(x2+y)(xy)(xy)2(x+y)123(xy)(xy)(x2y)(xy)12005-10-2750需求工程研究的两点沉淀2005-10-2751沉淀之一需求工程需求工程Requirements Engineering?需求需求 是是 可数的可数的2005-10-2752沉淀之二需求需求 具有层次性具有层次性2005-10-2753小结53面向特征的领域分析面向特征的领域分析特征的一般性定义特征的应用举例软件的特征面向特征领域分析的基本思想与基本途径