《基于产品线的软件开发技术研究及应用硕士学位论文(44页).doc》由会员分享,可在线阅读,更多相关《基于产品线的软件开发技术研究及应用硕士学位论文(44页).doc(44页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-基于产品线的软件开发技术研究及应用硕士学位论文-第 36 页硕士学位论文基于产品线的软件开发技术研究及应用摘要随着软件技术的不断发展,软件重用成为提高软件生产效率的一个核心问题。就目前来看,不管是面向结构还是面向对象的重用都是属于小粒度的源代码级重用,而构件技术的出现虽然实现了软件重用的大粒度,但是构件模型在系统需要一种基于领域的大规模软件重用的开发活动中不能起到很好的效果。基于此,软件产品线应运而生,软件产品线工程不仅能够降低开发成本还可以大大缩短产品上市时间,极大地改善了软件开发过程。在软件复用方面达到了空前未有的高水平。本课题根据软件产品线技术的研究现状,分析软件产品线的优势、生命周期
2、、难点与误区。在此基础上做成一个产品线模型做成工具。该工具的开发过程以产品线作为指导思想,以方便快捷的做成产品线模型为目标。做成后被作为核心资产在产品线的持续开发中起到至关重要的作用。之后该工具应用在自动售货机电机部分软件系统的开发上,做成了电机部分的平台无关模型。目标主要是为了验证模型做成工具作为核心资产,在产品线的持续开发中起到的关键作用,为产品线的开发打下坚实基础。关键词:产品线技术,产品线模型做成工具,自动售货机AbstractWith the continuous development of software technology, software reuse has becom
3、e a core issue to improve the production efficiency of software problems. From the current point of view, whether it is structure-oriented or object-oriented reuses belong to the source code-level reuse in small granularity. Although the emergence of component technology to achieve the software reus
4、e in large granularity, the component model cant play a good effect when the system requires a development activity based on the field of large-scale software reuse. As a result, software product line arises at the historic moment. The engineering of software product line can not only reduce the dev
5、elopment costs, greatly shorten the product time to market, but also optimize the process of software development. In the aspect of software reuse has reached the unprecedented high level as well. According to the current research status of software product line technology, this topic analyzes the a
6、dvantages, life cycle, difficulties and misunderstandings of software product line, and makes a product line modeling tool on this basis. The development process of the tool regards product line as the guiding ideology, in order to make product line model in a convenient and efficient way for the ta
7、rget. After being made, the products play a crucial role in the continuous development as the core assets in line. Then, the application in the automatic vending machine on the part of the software system development used by the tool, and made it to the platform independent model of motor parts succ
8、essfully. The main goal is to verify the model which made tool as the core asset plays a significant part in the product line of continuous development, and lay a solid foundation for the development of product line at the same time.Key Words: Product line technology, Product line modeling tool, Ven
9、ding machine 目录摘要iAbstractii图目录III表目录IV第1章 绪论11.1 引言11.1 论文研究背景与意义11.2 产品线技术国内外研究现状21.3 论文的研究内容及组织结构31.4 本章小结4第2章 软件产品线技术相关研究现状52.1 软件产品线基本理论52.2 核心资产开发的定义62.2.1 什么是产品开发72.2.2 管理的作用82.3 软件产品线的实践域82.4 软件产品线的优势92.5 本章小结12第3章 软件产品线技术实现与应用难点分析133.1 产品线方法实现的基本原则133.2 产品线方法的生命周期143.3 产品线方法的开发特点163.4 产品线方法
10、开发的误区与难点163.5 本章小结17第4章 产品线模型做成工具的设计与实现184.1 概要184.2 逻辑机能194.2.1 PLSE项目构成194.2.2 打开PLSE项目204.2.3 关闭PLSE项目224.3 画面操作机能234.3.1 通常EA项目的场合234.3.2 PLSE项目的场合244.4 领域分析机能254.4.1 特性要素264.4.2 状态迁移图的做成264.4.3 顺序图的做成274.5 需求分析机能274.5.1 特性要素删除机能274.5.2 PSM模式检查机能284.6 EA API一览284.7 Add In在产品线开发中的作用294.8 本章小结30第5
11、章 产品线技术在自动售货机软件开发中的应用315.1 自动售货机软件系统概述315.2 产品线技术应用在自动售货机系统的提出325.3 电机部分的设计与组织335.4 电机部分的领域工程模型做成345.5 电机部分的应用工程模型做成355.6 本章小结39第6章 本文工作总结与展望406.1 本文工作总结406.2 进一步的研究与展望40参考文献42作者简历44致谢45图目录图 2.1软件产品线的三大基本活动5图 2.2软件产品线核心资产开发过程6图 2.3软件产品线产品开发过程7图 2.4软件产品线的重用10图 2.5产品线的经济走线图11图 3.1产品线双生命周期14图 3.2产品线方法生
12、命周期15图 4.1 PLSE项目结构图20图 4.2模式选择功能流程图21图 4.3 PLSE项目构造检查流程图22图 4.4核心资产设定确认画面22图 4.5核心情报设定画面23图 4.6 PLSE项目Add In 菜单24图 4.7特性元素追加画面26图 4.8状态迁移图追加画面27图 4.9顺序图追加画面27图 4.10特性图画面28图 5.1自动售货机系统结构图31图 5.2 模拟平台34图 5.3 自动售货机电机部分特性图35图 5.4 电机状态表示类的状态迁移图35图 5.5 状态迁移图的代码实现36图 5.6电机类的状态迁移图37图 5.7电机状态表示类和电机状态类的顺序图38
13、图 5.8 顺序图代码实现39表目录表 2.1软件产品线的29个实践域9表 4.1开发环境和动作环境18表 4.2各选项初始状态23表 4.3领域分析模式子菜单初始状态24表 4.4需求分析模式子菜单初始状态25表 4.5 EA API一览29表 5.1电机部分需求分析表33第1章 绪论1.1 引言近年来,软件技术不断的发展,重用慢慢成为提高软件生产效率的一个最为核心的问题。重用技术不仅可以减少软件开发活动中大量重复的工作,还能大大的提高软件生产率。降低开发成本的同时,缩短开发周期。1软件的架构都需要经过严格的品质和质量的认证,并要求在实际运行环境中得到校验。所以,软件的重用能够大大的改善软件
14、质量的同时,软件开发的灵活性和软件过程的标准化程度也能够到显著提高。就目前的软件重用技术看来,不管是面向结构编程的函数重用还是面向过程和面向对象编程中的类和对象的重用,这些重用技术都能在目前的软件开发活动中得到大量的应用,但是不能否认这些重用方法都是在源代码的基础上进行小粒度的重用,那就意味着这些重用有时可能只局限在某一个特定平台,不得不说这些重用对象的适用范围很小。在此之后有了构件技术,改变了小粒度的源代码级重用的情况,实现重用的粒度大。但是构件模型在解决一些特定领域内的系列产品开发活动中却没有能起到很好的效果。基于此,软件产品线的出现,完成系统需要一种基于领域的大规模软件重用。软件产品线工
15、程对于开发成本和产品上市周期等方面都有着极大地改善意义,使在软件复用方面达到了空前未有的高水平。21.1 论文研究背景与意义随着软件应用的普及,企业对软件也越来越重视,不断的要求采用软件提高效率,提升技能增强企业竞争力。随着客户的增多,软件企业这时需要面对更多的客户,处理共性和个性问题。软件产品线在一个机构的内提供实现方法,用来实现软件的复用,软件资产的复用能够提高软件复用度、软件质量和提升开发速度并降低开发成本、维护成本。通常的软件产品线技术的软件开发包括两个过程,首先是建立一个特定领域的公共的核心资产集,其次将核心资产集作为基础,用来满足客户所提出的需求,实现多项软件产品。那么在软件开发中
16、,保证低成本的高质量软件产品开发,做到快速上市等要求就成为了软件企业竞争力的主要表现之一,而产品线工程方法就是能够支持这种大粒度、大范围的重用。产品线区别于传统的代码重用最大的特点就是在代码、需求和业务实现都能大量的重用。本课题将基于对软件产品线的研究,提出一种产品线的模型做成工具,并做成自动售货机电机部分软件的平台无关模型。将自动售货机的电机系统软件的各项关注点进行全面的分离,并建立与之相对应的平台无关模型。主要是为了能够将电机模块部分的模型做成该条产品线的核心资产,在以后的持续开发中起到关键作用,为产品线的开发打下坚实基础。1.2 产品线技术国内外研究现状产品线(Product Line)
17、的概念是由卡耐基-梅隆大学的软件工程研究所(SEI)提出的。软件产品线能够提供在一个特定平台即一个机构内部的实现软件复用的方法,软件资产的复用,提高软件复用度、软件质量,缩短开发周期并降低开发与维护成本。但是产品线的开发方式不仅需要强大的人力和物力支持,而且前期的开发耗时较长、成本高。3目前中国的软件公司的平均规模都算是比较小的,但是项目的竞争却非常激烈,同时客户要求的工期一般都比较紧,以上的这些因素都导致了目前基于产品线思想的软件开发在中国的软件开发还是比较少的。到目前为止,软件业界从事产品线研究并且将其应用于软件生产领域的公司主要有东软集团和北大青鸟。东软自主研发的UniEAP业务基础平台
18、产品,就是一款面向软件产品线开发模式的业务基础平台,UniEAP充分的体现了面向软件产品线的开发模式的优势。UniEAP是由开发框架、公共构件和方法学三个部分组成的。同时通过多层次、结构化的基础架构、组件及相关开发工具,用于支撑应用软件快速构造、支撑业务开发的全面解决方案。该解决方案的目标是使应用软件的设计与开发人员能够通过复用和重载的手段,快速的完成应用软件的构造。当用户的需求发生变化时,可以将对开发的影响降至最低,最终达到并满足用户需求。国内北京大学在青鸟工程中引入了软件产品线的概念和思想,实现了一个支持可复用构件来描述、管理、存储和检索的构件库。将软件的生产车间和基于构件、体系结构复用的
19、应用集成车间,将软件开发人员划分为构件生产者、构件库管理者和构件复用者,从而形成软件产业内部的合理分工,实现软件的工业化生产。以此来实现产品线技术的优势。1.3 论文的研究内容及组织结构本文主要针对本人工作所在公司的研究型项目,产品线技术开发Product Line Software Engine(以下简称PLSE)。基于对产品线技术的研究,而开发的一个名叫的PLSE Support Add In(以下简称 Add In)的产品线模型做成工具。该工具是以产品线作为指导思想,以方便快捷的做成产品线模型为目标而开发工具,做成之后将作为核心资产在该条产品线的持续开发中起到至关重要的作用。根据论文的主
20、要研究内容,本文的组织结构如下:第一章阐明论文的研究背景与意义以及产品线技术在国内外的研究现状,最后介绍论文的研究内容和组织结构。第二章主要介绍软件产品线技术的基本理论,核心资产以及产品开发的定义、目的与原则,以及管理的作用。其次,介绍了产品线技术的主要实践域。最后,通过对产品线技术的相关概念的理解,对产品线的优势做了分析与总结。第三章主要介绍了产品线方法实现的基本原则及其类型,并且着重介绍了领域分析和需求分析的作用。其次通过分析产品线开发的生命周期,说明领域分析和需求分析之间的相互关系,最后着重分析介绍了软件产品线开发的难点与误区。第四章的重点为产品线模型做成工具的设计与实现。首先介绍了产品
21、线模型做成工具的整体设计思路与原则,其次在了解了产品线技术相关知识的基础上,对产品线模型做成工具需要实现的功能进行了分析,表明其在产品线开发中的重要作用与地位。第五章的重点在于产品线技术在自动售货机电机软件开发的应用。首先根据自动售货机电机部分软件的需要实现的功能,介绍了电机部分软件的设计和组织的方法,并将产品线模型做成工具为开发工具,做成了电机部分的平台无关模型。用来表明产品线模型做成工具实际的产品线开发中确实的作用。第六章对全文进行总结,指出产品线开发中有待于进一步改进的地方以及对今后的工作进行展望。1.4 本章小结本章首先介绍了论文的研究背景与意义,其次对于产品线技术在国内外的发展情况进
22、行研究,最后阐述了本论文的主要研究内容以及各个章节的组织与分布。第2章 软件产品线技术相关研究现状2.1 软件产品线基本理论早期,卡耐基.梅隆大学软件工程研究所将软件产品线定义为具有一组可管理的公共特性的软件密集性系统的集合。这些系统满足特定的市场需求或任务需求并且按预定义的方式使用一组公共的核心资产构建而成。4软件产品线包含了三大基本活动。他们分别是核心资产开发(Core Asset Development)、产品开发(Product Development)及技术组织管理(Management)。产品线技术的三大基本活动之间存在紧密的联系,彼此之间不可分割,我们用图2.1来显示了这三大基本
23、活动的联系,将核心资产开发、产品开发和技术组织管理连接在一起。持续运作的同时,要求反复的循环。为了能够将核心资产作用于开发产品,并且产品开发的过程还能反过来促进核心资产版本的更新和新资产数量的增加。那么理所当然的,在图中我们可以看到核心资产与产品开发之间存在着一种非常强势的反馈循环。核心资产被用到产品开发过程时,其价值被体现,使用情况被反馈到资产开发活动的同时反馈给核心资产。在这种反复的循环当中,达到核心资产随着新产品的开发而更新的目的;同时核心资产库,通过对未来产品需求的开发,使核心资产更为通用。这样的迭代操作,使产品线的运行需要持久的、强有力的、有远见的管理。图 2.1软件产品线的三大基本
24、活动2.2 核心资产开发的定义核心资产开发在产品线方法中的目标是建立并保证产品的生产能力,核心资产是产品线方法中软件产品做成的基础,地位至关重要。在开发中利用什么得到核心资产,得到的核型资产又被用于什么呢?用图2.2描述了核心资产开发的输入和输出又分别是什么。其中输入由以下四项组成:(1) 产品约束:包括各个产品之间的相同点和差异,产品遵循的标准包含的外部系统有哪些接口,以及必须满足的质量属性。(2) 生产约束:包括上市时间要求,产品开发中需要遵守的企业特定的标准,构建产品由谁来担当,生产环境是否投入开发环境,以及核心资产提供的什么样的变量管理方式方法。(3) 生产策略:这一方法是实现核心资产
25、的总体方法。是从核心资产开始到产品导出的自顶向下的方式,还是从一系列产品开发出发到抽取核心资产的自底向上的方式。通用组件是通过内部生产,还是购买,产品是否需要装配或是通过核心资产自动生产。(4) 现有资产清单:遗留的系统都有可能成为资产库组件的重要候选者。图 2.2软件产品线核心资产开发过程根据输入端的产品约束、框架、生产约束、生产策略和遗留资产清单,核心资产开发活动产出三项输出:(1) 产品线范围(Product Line Scope):产品线范围用来描述产品线所能包括的产品。描述中需要列举出所有产品的共性和差异。如产品所特征和具体的操作、产品所应该表现出的性能和其它品质属性等。(2) 核心
26、资产(Core Assets):核心资产是产品线中产品生产的基础。包括构架、可重用软件组件、领域模型、需求、文档、测试用例、工作计划和过程描述等都属于核心资产的范畴,其中构架是核心资产集合中的关键。5每种核心资产都应和一个附属过程相关联,以指出它将如何被应用到实际产品的开发中。这个过程一般包括:基线需求是利用产品线的共性需求得到;变化的需求通过利用产品线的扩展功能实现;添加产品线需求之外的任何需求的方法;构架所支持的变化和扩展的确认;产品线中产品生产的基础是核心资产。(3) 生产计划(Production Plan):生产计划描述了如何从核心资产中生产产品。每种核心资产都有一个附属过程,其中定
27、义了如何将其运用到产品开发中。生产计划描述了一个整体方案,说明如何将这些单个的过程装配在一起构建产品。1.1.1 什么是产品开发成熟的产品线组织优先考虑整个产品线而不是个别产品的健壮性,但是生产最终产品的活动才是产品线的最终目标。产品开发活动依赖于核心资产开发的三个输出以及目标产品的个性化需求。图3描述了这些关系。图 2.3软件产品线产品开发过程从根本上讲,软件产品线就是一组相关产品,但是它们如何存在却取决于具体的资产、生产计划和组织环境,并且其产品生产过程通常不是线性的,产品的创建对产品线的范围、核心资产、生产计划,甚至对特定的产品需求都会产生强烈的反馈作用。61.1.2 管理的作用管理在在
28、软件产品线技术开发中是至关重要的。软件开发活动必须有指定的资源、协调和监督,而管理则是在技术和组织上为软件产品线服务的。技术管理负责对核心资产和产品的开发活动进行监视,这样的工作方式能够最大限度的保证各开发组成员都在从事所要求的活动、遵循产品线所定义的过程,并收集足够的数据,实时的跟踪进度。而组织管理必须建立起适当的组织结构,并确保各组织单元得到足够的适当资源。72.3 软件产品线的实践域软件产品线有一个特点,既可以称之为优点又可以称为缺点,那就是面向一种特定业务领域或系统化的开发方式。只有在这一基础上,软件产品线才能实现其大粒度低耦合的软件开发复用。说是缺点是因为产品线的开发只能够基于一种特
29、定领域,或与之类似的领域之中,在长期的开发历程之后,很可能局限于某一领域,移植性大大降低。称为优点是因为,这样的开发是在面向整个领域或系统的共同需求以及可变部分的分析为基础,通过系统的产品线体系结构设计以及领域构件开发,使得面向特定客户的应用产品可以在这些核心资产基础上快速开发出来,从而降低开发成本、提高产品质量、缩短产品上市时间。8这样的优点有很足够的立场使我们忘却它所存在的缺点。所以为了实现充分发挥产品线开发的优点,开发团队首先要做的事情,就是必须明确市场定位,对产品线范围内各种现存的应用产品的业务需求有所认识,并能够全面而准确的把握未来产品的需求走向趋势。基于三大基本活动,以及对于产品线
30、技术多年的研究后,专家们对于软件产品线的实践领域有了一个总结。明确了软件产品线的29个实践域,实践域是用来描述产品线实施主体,以及它必须要掌握的一整套活动。为了使关键活动在开发中更加易于实现,通过定义实践域中比基本活动更精确、更有指导性的活动。实践域的定义为企业在使用软件产品线方法中的不断进步提供了起点。表2.1总结了这29个实践域。9表 2.1软件产品线的29个实践域软件工程技术管理组织管理架构定义配置管理建立业务案例架构评估数据收集、度量和跟踪客户接口管理组件开发自制/购买/挖掘/委托分析实施需求获取策略COTS利用过程定义资金筹备挖掘现有资产确定范围启动和贯彻执行需求工程技术规划市场分析
31、软件系统集成技术风险管理运作测试工具支持组织规划相关领域组织风险管理确定组织结构技术预测培训2.4 软件产品线的优势通过上面对于软件产品线定义的介绍,我们大致了解了软件产品线的内容。那么它在软件开发中又有什么优势呢?软件产品线简单的说就是一组软件平台它具有共同的体系构架和大量的可复用组件,被用来构建支持某一特定领域中的产品开发。体系结构和重用技术的发展,使软件产品线有了对于一种大规模、大粒度的软件复用并集中实践。除了满足特定市场或特定任务需求,实现具有一组公共的、可管理特性的系统集合的同时,它还增加了一些新内容。首先在软件产品线中增加系统开发方式上的限制,它需要按照某种指定的方式用来进行核心资
32、产的开发,产品的独立开发。这样与传统的从零开始开发、随机开发等方式相比较,可以获得显著的生产经济效益。10其次,提高了生产的经济效益,因为当使用产品线技术开发是,每个产品不再是传统的单向开发实现,而是根据一个产品线范围内的公共架构来组装这些组件,简单的说就是从公共的核心资产库抽出组件,并按照软件产品的需求,分析出变化机制(如参数化、继承等),对抽出的组件进行相应的裁剪或添加必须的新组件。做到根据预先的说明指南,来组装这些组件组成产品。这样的做法相比传统的软件开发,保证质量的同时,大大的提高了生产的效益。最后,特定领域的产品线工程方法能够支持大范围重用。产品线区别于传统的开发模式,不仅仅是代码的
33、重用,在需求和业务上都能做到重用。最有效时,重用可以达到90。我们图2.4中来展现了一个重用的图,从函数和类的重用到模块和引擎的重用,最后甚至能实现应用包和框架的重用产品线将基于更大范围的重用进行开发。函数/类 模块/引擎 应用包/框架复用的成本效益需求复合度、更改灵活性组件粒度有小到大影响组件粒度的因素图 2.4软件产品线的重用为了进一步说明,产品线技术在软件开发中的优势,在图2.5中,我们可以明显的看到,产品线开发方式和传统的开发方式之间的区别。产品线预计带来经济效益让人惊讶的同时,它必须进行前期的投资如核心资产的开发、组织的转变等。这样才能获得回报,经过大量数据验证,一般的产品线软件开发
34、会在在第三个项目时达到收支平衡。 传统开发产品线开发盈亏平衡点盈亏平衡点累计花费前期投资工程数量大约在第三个工程图 2.5产品线的经济走线图通过上面的大量分析,我们可以总结出产品线技术一下优点:(1)减少成本产品线工程因为其产品开发中是核心资产抽出组装的特性,不再需要维护大量不同版本、不同架构的代码,所以也没有大量不同的文档需要维护。减少开发成本外,维护成本也可以大大降低。软件的维护成本在软件开发中的比重之大,大家都知道,所以产品线具有可以减少成本的特点。11(2)快速上市同样因为其产品开发是从核心资产抽出组装重用的特性。在开发中我们需要的只是集成核心资产库中的组件,并不需要每个开发环节都重新
35、设计编码一遍,所以开发的周期大大缩短,上市时间大大提前。(3)减少风险由于产品线除了拥有可以重用函数、模块以及框架的特性,在同类型产品的开发中也可以重用。这样对于任务的估计、开发的计划都在核心资产库的基础上,得到很好的重用,达到可以减少项目开发风险的目的。(4)提高质量产品线开发的基础是核心资产库,软件产品的开发要求基于核心资产,而核心资产大都是经过成熟的、经过验证的组件产品。这些特性都保证了产品线开发的高质量。122.5 本章小结本章从软件产品线技术的基本理论入手,介绍了核心资产以及产品开发的定义、目的与原则,以及管理的作用。其次,介绍了产品线技术的主要实践域。最后,通过对产品线技术的相关概
36、念的理解,对产品线的优势做了分析与总结。第3章 软件产品线技术实现与应用难点分析3.1 产品线方法实现的基本原则关注点的转移标志着,软件产品线技术方法的开发到传统的单体项目开发的改变,标志着从单独的产品开发到基于产品线技术的项目开发的提升。这个转移同时显示着从特定的项目开发到特定业务领域产品的策略。产品线工程对开发用以重用和使用重用来开发进行了明确的区分。产品线技术的重用包括了框架、业务模块、需求分析、开发计划和测试的全部资产的重用。相对于传统的源代码及重用,重用的量大大增加,并且对有所有重用的资产都包含明确可变性说明,只有这样才能体现出产品线方法的优势。那么在产品线开发中主要遵循的原则有哪些
37、呢?四个主要原则(1) 可变性管理(Variability management)在产品线开发的过程中,产品开发简单的说就是核心资产的变体。在开发过程中,必须有一套系统化的管理方式。那么产品不可能是固定的,必定具有的可变性,因此对业务分析的要求就更高了。13(2) 商业驱动(Business-centric)由于产品线开发周期长的特点,因此产品线的开发必须是一个长期的商业战略。相对于传统的软件开发具有的开发周期短,各个项目单独进行的特点,产品线需要的是对市场进行全面的而精准的定位。商业驱动方法的作业中需要判断产品线应该包含哪些功能,这些功能是在是在领域工程还是应用工程中进行。一个公司在现实产品
38、线工程时,是使用一条还是多条产品线呢?在软件产品线实践和模式中提出在大型产品线只有同时具备第一,产品具有足够多的相同点,将它们作为一条产品线是有利可图的。14第二,公司有能力控制这样大型的市场运作、开发以及其他方面的特点。如果不能满足以上的这两个特点,还是需要分为两个或两个以上的产品线进行开发。(3) 架构驱动(Architecture-centric)产品线的开发在技术上需要支持最大化的重用,大规模、大粒度、低耦合的重用方法是产品线的目标,那么产品线工程需要依赖一个通用的参考架构,特定项目架构都基于参考架构进行开发。15(4) 两阶段生命周期(Two-life-cycle approach)
39、产品线开发中,每个产品基于平台即核心资产库开发,产品和平台的开发是相互支持,相互反馈的过程。所以产品开发和平台开发有应该有各自的开发生命周期。最好的是两个工程同时进行开发,但是如果因为条件的限制不能同时进行开发的话,那么开发人员清晰的区别出应用工程和领域工程。16图3.1将这两个两阶段划分出来。领域工程领域设计领域分析领域实现应用工程系统实现系统设计需求分析图 3.1产品线双生命周期开发框架被分为两个阶段领域工程开发和应用工程开发。领域工程开发产品线的公共核心资产库,应用工程利用核心资产库组装出产品。在整个双生命的周期中,不管是领域工程还是应用工程都存在需求、分析、设计、实现和测试阶段。每个工
40、程中这些流程都是紧密联系,并且一一进行的,同时两个工程相同阶段也存在直接的联系。领域工程的子流程是用来开发公共平台的核心资产,应用工程子流程是为了生产产品。在生产过程中会不断的提供反馈给领域工程,这种循环反馈才能确保平台一直都能有效的生产出最终产品。173.2 产品线方法的生命周期为了能够正确的识别出开发中某一特定领域的核心资产,产品线工程必须经历从选取到精化和构建的开发过程。从上文我们可以知道产品线方法具有双生命周期的特定,在生命周期上可分为领域工程和应用工程两个部分如图3.2中所描述的,领域工程是从领域分析,领域定义,构建领域体系结构,构建领域组件的开发过程,而应用工程则是从产品分析、到具
41、体产品、产品设计、具体产品结构、产品开发到最终产品的开发过程。18图 3.2产品线方法生命周期领域分析工程以获得领域模型为最终目标。得到的领域模型用来描述该特定领域产品的共同需求,在这个阶段中确定领域边界,识别信息源,分析领域中系统的需求成为主要作业。领域设计阶段的目标是获得领域构架Domainspecific software architecture(以下简称DSSA)。该阶段用来做成领域模型中的需求解决方案,该解决方案不是用来表示单个系统的,而是一个能够适应领域中多个产品的共同需求的设计。建立了领域模型之后,经过领域分析够,生成出DSSA。当然领域需求是在不断变化的,DSSA也要随之相应
42、地发生变化。19 领域实现阶段其实是一种机制,它将需求变成为可复用构件。所采用的复用方法和核心资产的成熟及稳定程度,这种机制有可能是一组与DSSA和领域模型相互联系的构件,也可能是具体产品的生成器。应用工程主要的作业范围应具体到具体产品的需求分析、框架的实例化、核心组件资产的利用等。最终的成果物是产品规约、特定应用的框架、复用记录和具体产品。在具体的开发中,领域工程作为具体的指南,指导应用工程中具体产品的开发。在产品线开发的早期阶段,首先进行的是应用工程开发,之后将抽出低级框架,经过整合,得到领域工程中的资产。随着应用工程的多次实施,核心资产库的不断壮大,框架的复用记录也越来越多。在这些演变中
43、,抽象框架逐渐演进成为高级框架。然后,在新的产品线应用工程的开发中,核心资产库中的高级框架将取代低级框架,得到开发效率提高的目的。3.3 产品线方法的开发特点领域工程与应用工程的相互作用,产品开发中不断的复用领域工程内的核心资源和组件是产品线开发的最大特点。根据产品线的开发周期我们可以得出产品线开发的主要特点如下:首先在一般情况下,在产品线开发过程中体系结构在初期阶段就需要被确定;组件在产品族中具有相同特性,复用领域工程则是产品线组件的关键过程,产品线中复用技术是一项常见并且必要的操作;开发过程由核心资产库提供分析并驱动产品线的开发过程;20由于产品线开发中某些特定领域内具有相似体系结构的产品
44、族,成本的投入根据产品线的需求,还根据市场的需求;产品族是在某一特定领域范围内进行开发,产品线的领域不是属于单一产品,而是应用于整个产品家族。产品线开发周期包括两个阶段,在领域工程阶段开发软件产品族所需的公有资源、组件,这一阶段可以被认为是生产者。应用工程阶段使用已有资源、组件去开发相应产品,可以被看作是消费者。这种相互紧密地关系最大化地提高了产品线的开发效率。3.4 产品线方法开发的误区与难点可能很多人都有这样的疑惑,什么样的方法才能称之为产品线方法。因为大多数产品线方法乍看起来与传统的单体看法方式并没有很大的区别。为了能让大家在以前的软件知识和开发经验的基础上,认识软件产品线。我们不仅需要
45、知道产品线的定义,还需要知道产品线开发时可能遇到的误区和难点。21第一,在软件产品线开发中,资产的重用是必须是有计划的并且能够实现的。核心资产库的需求、领域建模、软件架构、性能模型、测试用例和组件开发过程,从一开始就需要投入大量的成本,而看不到收益。这里所有资产都为了重用、为多个系统的重用进行了优化。软件产品线的重用是全面的、有计划的、有经济效益的。第二,软件产品线重用的资产是明确为重用而设计的。产品线是一个整体,并不是生产或维护多个产品。在一个成熟的产品线中,已经不再是多个产品的开发,每个产品是通过核心资产而定制的。22第三,软件产品线的开发是完全依赖于组件的开发形式,其中涉及到的要素也很多
46、。简单的说就是内部库或是从市场当中选择组件来构建产品。反过来这些组件也都是由产品线架构按照预先定义的方式进行组装。例如,在构架和生产计划中明确指出我们要生成指定的产品,那就需要在组件中采用内置变体机制。在组件应该是在核心资产库中进行演进和维护的。一般都是通过编写代码来完成组件的变化,单独的基于组件的开发常常缺乏技术和组织管理方面的支持,而这点对软件产品的成功非常重要。第四,为了达到能重用于多个系统的目的,设计参考架构和面向对象框架都是可以重新配置。架构对任何系统而言都至关重要,付出代价较高。所以重用架构在产品线设计中至关重要。必须支持产品线中个产品间变化,所以它必须是可配置的。23第五,在产品
47、线开发中如果同时存在多个产品,那么要求每个产品都有其自己的发布版本的周期。传统的开发模式中,认为上下文环境成为考虑单个产品的演进的重要指标,所以早期产品生产中的任何东西都不再有价值。但是恰恰相反,在产品线中,产品的早期版本仍被认为具有市场潜力,并很容易地作为产品家族中的核心资产被保留下来。24以上就是产品线开发中的误区和难点,只有了解这些误区和难点,我们才能真正意义上的认识产品线方法。3.5 本章小结本章首先介绍了产品线方法实现的基本原则及其类型,并且着重介绍了领域分析和需求分析的作用。其次通过分析产品线开发的生命周期,说明领域分析和需求分析之间的相互关系,最后着重分析简要介绍了软件产品线开发的难点与误区。第4章 产品线模型做成工具的设计与实现上文对产品线技术进行了详细的介绍与分析,我们将采用UML进行系统分析设计,以Enterprise Architect(以下简称EA)