没有合适的资源?快使用搜索试试~ 我知道了~
在软件产品线中支持克隆和拥有埃迪·加巴赫引用此版本:埃迪·加巴赫。在软件产品线中支持克隆和拥有。软件工程[cs.SE]。COUE Université Côte d'Azur(2015 - 2019),2018.英语NNT:2018AZUR4056。电话:01931217HAL Id:tel-01931217https://theses.hal.science/tel-019312172018年11月22日提交HAL是一个多学科的开放获取档案馆,用于存放和传播科学研究文件,无论它们是否已这些文件可能来自法国或国外的教学和研究机构,或来自公共或私人研究中心。L’archive ouverte pluridisciplinaire支持软件产品线中的克隆和拥有埃迪·加巴赫Sophia Antipolis信息、信号和系统公司为获得蔚蓝海岸大学计算机科学博士学位而提出监制:Mireille Blay-Fornarino联合监制:Franjieh El Khoury,Badih Baz提交时间:2018年在陪审团面前,由以下人员:评委会主席:Philippe Lahire,蔚蓝海岸大学教授Abdelhak-Djamel Seriai,蒙彼利埃Tewfik Ziadi,人类发展报告,会议主持人,索邦大学皮埃尔和玛丽·居里校区Laurence Duchien,里尔大学教授,主管:Mireille Blay-Fornarino,蔚蓝海岸大学教授共同主管:Franjieh El Khoury,Associated member,Alberatoire Eric博士论文Prise en charge du逻辑产品中的“复制与挪用”埃迪·加巴赫Sophia Antipolis信息、信号和系统公司Présentée en vue de信息学博士学位蔚蓝导演:Mireille Blay-Fornarino导演:Franjieh El Khoury,Badih Baz搜索结果:11 Jullet 2018在陪审团面前,作曲:陪审团主席:Philippe Lahire,蔚蓝海岸大学Abdelhak-Djamel Seriai,蒙彼利埃Tewfik Ziadi,人类发展报告,会议大师,索邦大学皮埃尔和玛丽·居里校区Laurence Duchien,讲师,里尔大学Mireille Blay-Fornarino,蓝色海岸大学讲师Co-encadrante de thèse:Franjieh El Khoury,Membre associé,Eric律师博士论文集i摘要软件产品线(SPL)管理相关软件产品系列的共性和可变性这种方法的特点是系统的重用,降低了开发成本和上市时间,提高了软件质量。然而,建造SPL需要昂贵的初始投资。因此,无法处理这种前期投资的组织倾向于使用简单直观的实践开发一系列软件产品。克隆并拥有(CO)是软件开发人员广泛采用的一种方法,用于从现有产品中构造新的产品变体。然而,这种做法的效率随着有关产品系列的增长而成比例地下降,这变得难以管理。在这篇论文中,我们提出了一个混合的方法,利用SPL和CO开发和进化的软件产品的家庭一种自动识别产品特征和软件工件之间对应关系的机制,允许将CO中开发的产品变体迁移到SPL中。这项工作的独创性,然后,以帮助推导出新产品,提出不同的情况下的CO操作来执行,以获得一个新的产品所需的功能。然后,开发人员可以通过表达她的偏好(例如产品,工件)并使用操作上的建议成本估计来我们通过开发SUCCEED实现了我们的方法,SUCCEED是一个支持克隆和拥有成本估算衍生的框架。我们验证我们的作品的门户网站的家庭的案例研究。关键词:成功,软件产品线工程,软件产品线演化,软件产品变体,软件重用,软件派生,克隆和拥有,特征定位,特征模型,软件可变性。iii简历UneLignede Produits Logiciels(LPL)负责管理一个逻辑家族这一进程的实质是一个共同的人工制品再利用系统,它可以提高市场的竞争力和竞争力,并提高逻辑的质量。此外,一个LPL需要一个初始投资组合。有些组织不愿意面对电话投资,利用“克隆和拥有”(C O)来培养和发展&然而,这种做法的效力与产品种类的比例下降,难以维持。在此基础上,我们提出了一种混合的方法,该方法利用LPL和&Un mécanismeautomatique&&L’originalité de ce travail est alors d’aider à la dérivation de nouveauxproduits en proposant différents scenarii d’opérations 评估人员可以评估实验的可能性(例如产品、人工制品),并利用我们建议的操作的相关估计。这些新产品是在LPL中集成的。我们将此应用于SUCCEED(支持克隆和拥有成本估算衍生)框架,并将其应用于成功案例:逻辑产品结构工程、逻辑产品结构的演变、逻辑产品的多样化、逻辑产品的再利用、逻辑产品的衍生、克隆和拥有、特性识别、特性图表、逻辑产品的可变性。v确认感谢上帝,你是我能量的主要来源,也是我成功的原因感谢我的家人,可爱的父母和支持我的兄弟,他们在我的法国之旅中都很想念我当然,没有你我活不下去。感谢您无休止的支持。感谢给了我机会,让我在法国的土地上做我的研究我感谢我的研究实验室成员I3S,特别是我所属的SPARKS团队非常感谢Mireille Blay-Fornarino,他在过去几年中指导了我的论文我非常感谢她的耐心,特别是在第一阶段,因为远程合作我想感谢她不断的鼓励和热情,而她是支持我的所有必要的知识和时间,我的研究进展,主要是在我在法国的旅程。我很荣幸能与她一起工作,我很幸运能与一个在我所选择的研究领域有如此丰富经验和知识的人一起工作我还要感谢我的同事Cécile Camilleri,他让我接触到了Rockflows框架,Philippe Collet和Alfretien Mosser为我提供了他们的建议。感谢Université Saint-Esprit de Kaslik(USEK),我在黎巴嫩的大学,为我的研究任务提供便利,并在我的研究期间为我提供必要的学术资源和数字图书馆感谢我的共同导师Franjieh El Khoury,她用她的指导和知识支持我,审查了我的工作,并在整个研究期间鼓励我,还有Badih Baz,他支持我并相信我的能力。感谢黎巴嫩国家科学研究中心(CNRS-L)和PHC Cedre计划博士奖学金。感谢评审委员会成员的宝贵意见和阅读本论文的每一个人。,t ,P,n,,,,Pn,t?@P.H.,9z,›A, aL,>?sleep.、 P, 嗯,,P,你,›t,E,?bnJIA,?-你是谁?什么?联系 我们Don’t而是一点闪闪发光的油埃迪·加巴赫我不知道水里有什么样的谷物,但有一个活泼的环节埃迪·加巴赫vii目录1介绍11.1背景和动机21.2运行实施例31.3挑战41.4捐款71.5论文的组织8一.背景和最新技术112背景. 132.1软件重用142.2克隆和拥有方法162.3软件产品线172.4摘要和贡献决定3相关工作313.1软件产品线采用323.2产品衍生支持413.3软件产品线演进453.4摘要和贡献选择48II捐款方式514移徙进程554.1一、导言. 564.2产品线定义584.3相关性识别634.4产品线验证684.5产品线限制694.6摘要715配置过程735.1导言. 745.2构造755.3配置模式785.4配置方案795.5衍生操作835.6摘要876成本估算推导6.1一.导言. 906.2成本估算906.3摘要967衍生和演变过程977.1一、导言. 987.2产品衍生997.3产品线演变1027.4摘要108III实施和验证1098SUCCEED框架1118.1导入部分1128.2移徙进程1128.3配置过程1158.4推导过程1178.5演变过程1198.6摘要1209方法验证1219.1导言. 1229.2确认1229.3限制1259.4有效性的威胁1259.5摘要126IV结论与展望13310 结论与展望13510.1 结论13610.2 前景138缩略语141ix图143表145算法列表147目标149定义和属性151实例表153列表155参考书目1571第1介绍内容1.1背景和动机21.2运行实施例31.3挑战41.4捐款71.5论文的组织821.1. 第一章背景与动机介绍1.1背景与动机在软件行业中,许多组织为属于同一细分市场的一组客户开发一系列软件这些组织在人员、智力和财政资源方面的规模各不相同,从初创企业和小型组织到大型企业[TH03]。一般来说,大型企业在开始开发过程之前,首先研究并确定其市场细分和产品组合[CN 01,PBV 05]。与其他行业(如汽车行业)类似,大规模定制被专注于开发和维护软件产品系列而不是开发许多单独产品的组织采用[Kru01,PBV05]。因此,他们能够确定要开发的产品系列的主要功能,并计划以允许重复使用的方式开发这些产品。其中一些组织采用软件产品线工程(SPLE)方法,该方法包括在领域工程过程中开发适用于多个产品的工件,然后通过利用开发的工件在应用程序工程过程中获得产品[WL99,PBV 05,DSB 05,LSR 07,ACR 09]。软件产品线(SPL)是属于同一领域并具有某些共同特征的软件产品的集合[CN 01]。 这些特性被称为特征[BL R+15]。 特征模型(FM)是S P L乘积变量的抽象表示之一[KCH+90]。配置是一组功能,这些功能遵循FM施加的约束,通常反映SPL的产品[BEG+11]。SPL允许系统地重用软件工件,这降低了开发成本,增加了上市时间和软件质量[TH 03,PBV 05]。在经过应用工程阶段获得新产品之前,通过领域工程过程开发SPL的工件被认为是一项庞大而昂贵的前期投资,一些组织无法负担[PBV05]。因此,在实践中,大多数小型组织不会从头开始开发SPL[AM14],而是通常从开发一个成功的产品开始,然后发展成为一个产品系列[BBS 11]。例如,一个旨在开发软件产品的初创企业或小型组织,专注于向其新客户提供高质量和快速交付的产品,以便在市场上定位并吸引更多客户。因此,它一次只专注于开发一个产品,而不计划未来的产品发布。短期思维会阻止一些组织最初预测他们将开发一系列产品,当客户需求随着时间的推移出现时,他们就会意识到这一点。因此,这阻碍了组织在开发过程中投入足够的时间和资源来支持和管理重用[DRB+13]。这样的组织开发软件w是通过采用简单的ad-hoc技术(诸如复制-粘贴-修改[ZFdSZ 12,Mar 16])或在通过版本控制系统(Version Control System,DRM)开发产品时采用的众所周知的克隆和拥有(Clone-and-Own,C O)来开发的产品 C &O是一种方法,包括克隆现有产品变体(PV),然后对其进行修改以添加和/或删除某些功能,从而获得新的PV [ZPXZ 12,DRB+13,FLLHE 1 4,LBC 1 6]。 由于它提供的简单性、可用性和快速性,这种方法实际上被许多组织作为开发相关软件系统家族的“有利和自然”解决方案采用[ DR B + 13 ]。 虽然是一种节省时间和成本的做法,但&如果缺乏对存在于几个克隆中的工件的跟踪,则C O可能会变成一种昂贵且低效的解决方案,这会在识别被视为克隆源的PV时产生不确定性[DR B+13,AM 14,LBC 16]。31.2. 第1章一夜情介绍一种可能的替代方案是将现有PV迁移到SPL中,以管理其可变性并从系统性重复使用中获益[CN 01]。这一过程被称为提取[Kru0 1]或自下而上[MZ B+15 b]采用,或重新设计[ZHP+14,AM1 4,ALH L+17]软钨产品线。 根据Ziadietal. 手动逆向工程容易出错且耗时[ZFdSZ 12]。因此,需要一种自动化方法将现有PV集成到SPL中。开发一个软件产品族通常包括通过重用现有的变体来派生新的变体。尽管SPL提供了系统的重用,但由于可变性管理,产品派生仅限于产品线组合。因此,衍生新产品包括在领域和应用工程级别上发展SPL,由于产品之间的可变性和相互依赖性,这是一项被认为是复杂的任务[BP 14]。文献中的一些工作已经提出了提取SPL采用框架和方法来增强C&O[AmS H+13,RC13 a,FLLHE 14,MZ B+15 b]。这些框架工作最终允许现有PV的集成,支持它们的系统重用,并通过可能的派生(自动化或有时通过提示辅助)和新PV的集成来增强C O然而,这些方法并没有为软件工程师提供C O所提供的创建新PV的自由。在C O中,在产品开发过程中,软件工程师是决策者。当软件工程师知道产品是如何构造的时候,他们就获得了所提出的方法的目的是自动化的克隆和强加他们的解决方案的软件工程师,是不能够识别从哪些PV的衍生PV的工件克隆。C &O从业者认为,任何替代方法,为了说服他们,必须提供C O提供的优势&,例如可用性,简单性和独立性[DRB+13]。1.2运行实例我们在接下来的例子中说明了三个用于管理足球比赛的PV1。PV是使用标记(HTML)、样式表(CSS)、脚本(JavaScript)和面向对象(Java类和servlet)语言实现的Web应用程序。表1.1:运行示例产品变体及其相应功能产品特征管理匹配添加匹配修改匹配删除匹配p1p2p3CCCCCCCCC表1.1显示了每个变体实现的业务功能(资产产品p1允许管理,添加和修改比赛.产品p2允许删除匹配另外.产品p3允许管理和添加比赛只.为了简单和使示例更全面,我们在表1.2中只显示了资产的一个摘录,我们用资产的名称表示资产,而不是它们在1 正 在 运 行 的 示 例 的 PV 的 实 现 文 件 可 以 在 以 下 git 存 储 库 链 接 中 找 到 :https://github.com/eddyghabachi3s/SoccerManager1.3. 挑战第1章介绍4项目。例如,DeleteMatch.java指的是src/Match/DeleteMatch.java。图1.1显示了3种变体的主要界面我们证明了我们的方法在整个论文中运行的例子。表1.2:运行示例产品变体及其相应资产的摘录产品资产版本p1match.jsp1SaveMatch.java1style.css1p2match.jsp1SaveMatch.java1style.css2DeleteMatch.java1p3match.jsp1SaveMatch.java2style.css31.3挑战在本节中,我们将确定组织在构建和开发一系列软件产品时可能面临的挑战。在我们的论文中,我们没有解决其他方面,如组织的挑战,广泛解决了博世[博斯10,BBS11]。挑战1:支持新产品变体如何指导软件工程师衍生新的产品变体?软件产品系列由一组产品组成,这些产品是为响应属于同一细分市场的一组客户的需求而开发因此,这些产品共享一组共同的特性,而它们彼此不同,这是由于一些可变特性由一些产品实现而不是由其他产品实现,以及产品特定特性,其中每个特性由单个产品具体实现家庭[BP14]不断增加的客户需求和技术变化需要开发新的产品变体。因此,每当软件产品系列不提供实现所有且仅实现所需功能的变体时,就需要派生新的产品变体给定运行示例中提供的产品系列,为了交付允许管理、添加和删除匹配的产品,必须派生新的产品变体(例如p 4),因为现有变体中没有一个实现所有且仅实现所请求的挑战1.a:将特性映射到资产如何确定哪些资产有助于实现每个功能?当需要派生新的产品变体时,重用现有变体的工件是有利的。要做到这一点,首先,每个现有产品实现的功能51.3. 第1章一夜情介绍(a) 产品p1主界面(b) 产品p2主界面(c) 产品p3主界面图1.1:运行示例变体必须识别变体。例如,要重用特性DeleteMatches来派生p4,必须知道它只由产品p2实现。功能的实现在实现该功能的产品的一个或多个资产因此,为了确定新产品的派生需要哪些资产,识别出有助于实现某个特性的资产对于重用是必要的。挑战1.b:确定实现衍生的可能方案和操作哪些产品或产品组合可以作为实现衍生的重用来源,以及必须对克隆资产执行哪些操作才能构建新产品?新产品衍生所需的功能可以由几个现有产品实现。此外,所需的功能集可以分布在几个产品上,这需要重用属于不同产品的资产。因此,确定实现衍生所需特征集的产品组合是一项主要任务。现有产品可能实现了派生不需要的某些功能1.3. 挑战第1章介绍6因此,必须确定这些特征。例如,导出p4的可能场景是克隆p2,并从克隆中删除与特征ModifyMatches对应的实现片段。因此,那些实现了必需特性的产品的资产也可能实现一些不必需的特性。因此,对于必须克隆的每个所需资产,必须指定必须对其执行 的 操 作 。 例 如 , 考 虑 到 产 品 p2 的 资 产 SaveMatch.java 被 映 射 到 特 征ModifyMatches,因为后者不是必需的,所以要对资产SaveMatch.java执行的操作是克隆它并从它移除与ModifyMatches对应的实现片段。挑战1.c:促进衍生选择帮助软件工程师做出衍生选择的选择因素和指标是什么?执行每个资产级别操作的成本是多少分别地,哪种方案提供最便宜的派生成本?有几种情况可用于实现导出,例如,基于软件工程师可以决定通过克隆p2并从克隆中删除与ModifyMatches相关的代码片段来导出p4,或者通过克隆p3并从p2中提取与DeleteMatches相关的代码片段并将其集成到克隆中来导出p 4。一个选择因素可能是她更喜欢使用p2(她更熟悉)或p3(最近的衍生产品)。此外,与可能场景的产品相对应的一些资产可能仅需要被克隆而不被修改,因为它们仅被映射到所需的特征。其他资产需要克隆和修改,以删除与不需要的功能相对应的此外,可以识别若干资产级操作来构造实现所需特性的资产例如,参考表1.2,style.css存在3个版本,因此,一个操作可能包括从一个版本中删除一些功能,而另一个操作可能包括从多个版本中收集功能由于可以识别多个场景(产品组合)和多个资产级操作,因此选择适当的场景和操作可能会成为一项困难的任务。因此,为软件工程师提供关于每个场景的产品和每个操作的资产的有价值的指示符可以促进他们的衍生选择,因为他们将能够基于自己的偏好构建衍生场景。此外,估计资产级操作的成本和相应地可能场景的成本可以便于选择要执行的操作以实现推导。挑战2:软件产品如何将新衍生的变体集成到软件产品系列新产品的衍生涉及新特征的定义和新资产的构建。 将新衍生的产品集成到软件产品系列中允许它们在将来的派生中重用。此外,在派生过程中添加的工件可以增强更多产品的派生。挑战2a:在添加新变体如何更新产品系列的功能结构,以集成配置过程中添加的功能?71.4. 第1章大结局介绍新产品的衍生主要来自于对现有产品没有提供的新功能的需求。因此,重要的是允许软件工程师在配置新变体期间简单地定义这些功能。此外,一旦变体被集成到软件产品系列中,其新功能也必须被集成。因此,有必要更新产品族的特征结构,并重新定义管理其选择的约束。挑战2b:管理新产品如何支持通过克隆和拥有将新衍生产品集成到产品系列中?如何保证新产品的集成不会妨碍现有产品的衍生?重要的是要允许一个平稳和增量集成的新衍生的产品到家庭的软件产品,以受益于他们的系统重用,在未来的衍生和使用他们的新工件,以派生新的产品。因此,有必要确定这种集成对产品系列的影响,以保证通过集成新产品来发展它也保留了现有产品的派生。1.4贡献在本文中,我们讨论了一个基于C O的软件产品族的开发。我们专注于熟悉C O并在PV派生过程中寻求支持的软件工程师。因此,本文的主要目的是支持软件工程师在CO的基础上派生新的PV。为了实现这一目标,我们提出了一种混合的方法,一方面允许现有的PV的自动派生后,将它们迁移到SPL,另一方面,它支持派生新的PV的基础上,通过提供可能的操作,在资产级别执行,以获得所需的产品。为了便于选择在产品派生过程中执行的操作,我们定义了相关性指标和函数,以估计操作的成本。因此,软件工程师可以依靠自己的偏好和建议的成本估计,以实现推导。为了使SPL的演变,我们的方法允许新衍生的产品在既定的SPL的整合。我们的方法的贡献如下:1. 第一个贡献包括一个新的轻机制,以确定功能和资产之间的映射,同时迁移现有的PV到SPL。我们将这些映射定义为相关性。相关性有助于促进重用和维护,因为它们允许确定哪些资产有助于实现每个功能。同时,将现有PV迁移到SPL中也使其能够自动导出。2. 在第二个贡献,我们的目标是支持软件工程师在派生新的PV的基础上C O。我们不是强加一个单一的解决方案,而是通过在资产层面执行的操作提出可能的替代方案,以获得新的产品变体。配置场景提供了自上而下的概述,指定了要依赖的产品组合,以及为了构建所需产品而要保留或删除的功能。我们为每个配置场景分配要执行的操作,以完成推导。行动包括:
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功