1第13章软件产品线体系结构13.1软件产品线的出现和发展◇出现和发展产品线的起源可以追溯到1976年Parnas对程序族的研究。软件产品线的实践早在20世纪80年代中期就出现了。到了20世纪90年代后期,软件产品线的研究已经成为热门的研究领域。软件产品线的发展得益于软件体系结构的发展和软件重用技术的发展。2◇软件体系结构的发展面向独立系统的专有体系结构可以满足应用的特殊需求,却无法有效地支持重用。通用的标准体系结构可以用于各类应用,但无法满足应用的特殊需求,因此产生了DSSA。DSSA用一个特定的应用领域中可重用的参考体系结构有效地改善复杂软件系统的分析、设计、开发和维护。DSSA的创建需要以该领域的需求分析和建模为基础,就相应地出现了对领域建模的研究,DSSA的出现给领域工程带来了重大的变化。第13章软件产品线体系结构13.1软件产品线的出现和发展3◇软件体系结构的发展领域工程出现于20世纪80年代,可以把它看作是软件工程在某个特定领域中的应用。领域工程将软件重用作为一个主要目标,它面向多个客户的多个应用系统,通过挖掘相似的或相关系统之间的共性来提供对跨应用的变化的支持。20世纪90年代中后期,市场驱动的思想开始带入领域工程,出现了以软件产品线为核心的领域工程。第13章软件产品线体系结构13.1软件产品线的出现和发展4◇软件体系结构的发展软件产品线在软件工程中的地位第13章软件产品线体系结构13.1软件产品线的出现和发展5◇软件重用的发展自1968年Mcllroy提出软件重用概念的原型后,人们一直在尝试用不同的方法实现通过软件模块的组合来构造软件系统。第13章软件产品线体系结构13.1软件产品线的出现和发展6第13章软件产品线体系结构13.2软件产品线概述◇基本概念◎将利用了产品间公共方面、预期考虑了可变性等设计的产品族称为产品线(Weiss和Lai)。◎产品线就是由在系统的组成元素和功能方面具有共性和个性的相似的多个系统组成的一个系统族。◎软件产品线就是在一个公共的软件资源集合基础上建立起来的,共享同一个特性集合的系统集合(Bass,Clements和Kazman)。◎一个软件产品线由一个产品线体系结构、一个可重用构件集合和一个源自共享资源的产品集合组成,是组织一组相关软件产品开发的方式(JanBosch)。7◇基本概念CMU/SEI的定义:“产品线是一个产品集合,这些产品共享一个公共的、可管理的特征集,这个特征集能满足选定的市场或任务领域的特定需求。这些系统遵循一个预描述的方式,在公共的核心资源(coreassets)基础上开发的。”第13章软件产品线体系结构13.2软件产品线概述8◇基本概念软件产品线主要由两部分组成:核心资源、产品集合。核心资源是领域工程的所有结果的集合,是产品线中产品构造的基础。也有组织将核心资源库称为“平台”。核心资源必定包含产品线中所有产品共享的产品线体系结构,新设计开发的或者通过对现有系统的再工程得到的、需要在整个产品线中系统化重用的软件构件。产品线体系结构和构件用于软件产品线中产品的构建,是核心资源最重要的部分。第13章软件产品线体系结构13.2软件产品线概述9◇软件产品线的过程模型1、双生命周期模型第13章软件产品线体系结构13.2软件产品线概述10◇软件产品线的过程模型2、SEI模型第13章软件产品线体系结构13.2软件产品线概述11◇软件产品线的过程模型2、SEI模型◎循环重复是产品线开发过程的特征,也是核心资源开发、产品线开发以及核心资源和产品之间协作的特征;◎核心资源开发和产品开发没有先后之分;◎管理活动协调整个产品线开发过程的各个活动,对产品线的成败负责;◎核心资源开发和产品开发是两个互动的过程,三个活动和整个产品线开发之间也是双向互动的。第13章软件产品线体系结构13.2软件产品线概述12◇软件产品线的过程模型3、三生命周期模型◎Fred针对大型软件企业的软件产品线开发对双生命周期模型进行了改进,提出了三生命周期模型;◎为有多个产品线的大型企业增加企业工程流程,以便在企业范围内对所有资源的创建、设计和重用提供合理规划。第13章软件产品线体系结构13.2软件产品线概述13◇软件产品线的过程模型3、三生命周期模型第13章软件产品线体系结构13.2软件产品线概述14◇软件产品线的组织结构典型产品线开发组织结构第13章软件产品线体系结构13.2软件产品线概述15◇SEI产品线组织结构(1)SEI则强调市场人员的作用,将产品线组织分为四个工作小组:◎市场人员是产品线和产品能力、客户需求之间的沟通桥梁;◎核心资源组负责体系结构和其他核心资源的开发;◎应用组负责交付给客户的系统的开发;◎管理者负责开发过程的协调、商务计划等。第13章软件产品线体系结构13.2软件产品线概述16◇SEI产品线组织结构(2)设有独立核心资源小组的组织结构通常合适于至少由50到100人组成的较大型的软件开发组织,设立独立的核心资源小组可以使小组成员将精力和时间集中在核心资源的认真设计和开发上,得到更通用的资源。第13章软件产品线体系结构13.2软件产品线概述17◇SEI产品线组织结构(3)另外一种典型的组织结构不设立独立的核心资源小组,核心资源的开发融入各系统开发小组中,只是设立专人负责核心资源开发的管理。这种组织结构的重点不在核心资源的开发上,所以比较适合于组成产品线的产品共性相对较少,开发独立产品所需的工作量相对较大的情况。也是小型软件组织向软件产品线开发过渡时采用的一种方法。第13章软件产品线体系结构13.2软件产品线概述18◇JanBosch产品线组织结构(1)JanBosch在研究了众多采用软件产品线开发方法的公司后,将软件产品线的组织结构归纳为以下4种组织模型。◎开发部门:所有的软件开发集中在一个部门,每个人都可承担领域工程和应用工程中适合的任务,简单、利于沟通,适用于不超过30人的组织。◎业务部门:每个部门负责产品线中一个和多个相似的系统,共性资源由需要使用它的一个和几个部门协作开发,整个团体都可享用。资源更容易共享,适用于30-100人的组织,主要缺点是业务部门更注重自己的产品而将产品线的整体利益放在第二位。第13章软件产品线体系结构13.2软件产品线概述19◇JanBosch产品线组织结构(2)◎领域工程部门:有一个专门的单位——领域工程部门负责核心资源库的开发和维护,其他业务单位使用这些核心资源来构建产品。这种结构可有效地降低通讯的复杂度、保持资源的通用性,适于超过100人的组织。缺点是难以管理领域工程部门和不同业务部门之间的需求冲突,以及因此导致的开发周期增长。◎层次领域工程部门:对于非常巨大和复杂的产品线可以设立多层(一般为两层)领域工程部门,不同层部门服务的范围不同。这种模型趋向臃肿,对新需求的响应慢。第13章软件产品线体系结构13.2软件产品线概述20◇软件产品线的建立方式软件产品线建立方式基本特征第13章软件产品线体系结构13.2软件产品线概述21◇软件产品线的演化从整体来看,软件产品线的发展过程有三个阶段,开发阶段、配置分发阶段和演化阶段。引起产品线体系结构演化的原因:产品线与技术变化的协调、现有问题的改正、新功能的增加、对现有功能的重组以允许更多的变化等等。产品线的演化包括产品线核心资源的演化、产品的演化和产品的版本升级。这样在整个产品线就出现了:核心资源的新旧版本、产品的新旧版本和新产品等。它们之间的协调是产品线演化研究的主要问题。第13章软件产品线体系结构13.2软件产品线概述22第13章软件产品线体系结构13.3框架和应用框架技术◇概述对于大型复杂软件的开发,已经有越来越多的人认识到软件体系结构(架构)在软件开发中的重要作用,其重要性已经超过了数据结构和算法,对大型软件开发的成败起着关键作用。也正因为如此,软件体系结构已经成为大型复杂系统高层设计所关注的焦点,也取得了很多研究成果。23◇概述在提高软件生产率和软件质量方面,有很多方法和技术,其中,软件重用得到了广泛的关注和应用,被认为是提高软件生产率和软件质量的最有效途径。软件重用可以发生在软件开发的各个阶段,重用的粒度越大,对生产率提高的作用就越大。第13章软件产品线体系结构13.3框架和应用框架技术24◇概述随着软件技术的发展,软件重用已经从模块、对象的重用发展到了基于构件的重用和基于框架的重用。框架技术与构件技术的结合产生了基于构件的应用框架技术,这是框架技术的一个发展趋势。第13章软件产品线体系结构13.3框架和应用框架技术25◇概述体系结构重用属于设计重用,比代码重用更抽象。体系结构模式(风格)就是体系结构重用研究的一个成果,而体系结构参考模型则是软件体系结构在特定领域的重用。第13章软件产品线体系结构13.3框架和应用框架技术26◇框架的定义Deutsch(1983):抽象类和相关算法的集合可组成一个框架,该框架在特定领域中可以通过专用代码的添加将具体子类组织在一起运作。框架由抽象类及其实现的操作和对具体子类的期望组成。Johnson和Foot(1988):框架是封装了特定应用族抽象设计的抽象类的集合,框架又是一个模板,关键的方法和其他细节在框架实例中实现。第13章软件产品线体系结构13.3框架和应用框架技术27◇框架的定义软件框架有时有多种称谓,如骨架、架构、平台。框架的研究与体系结构模式、设计模式密切相关。但框架不是体系结构模式,也不是设计模式。框架是一个具有“插入点”集合的架构,可以适应特定的问题域。插入点使得软件工程师能够在架构内集成特定问题的类或功能。第13章软件产品线体系结构13.3框架和应用框架技术28◇框架的定义在面向对象的环境下,框架是相互协作的类的集合。框架和设计模式有着明显的区别,设计模式比框架更抽象,框架可以用代码表示出来,但只有模式的举例才可以用代码表示出来。设计模式是比框架更小的体系结构元素。一个典型的框架包括一些设计模式,而设计模式却不包括框架。另外,框架总是有特定的应用领域,而体系结构和设计模式几乎可以用在任何类型的应用程序中。第13章软件产品线体系结构13.3框架和应用框架技术29◇应用框架的定义由于特定领域的不同应用之间具有更多相似的特征,随着应用的发展和完善,某些带有整体性的应用模式被逐渐固定下来,经过抽象、设计和实现,就形成了特定的框架,也称为应用框架,包括基本构成元素和关系。第13章软件产品线体系结构13.3框架和应用框架技术30◇应用框架的定义软件产品线中的框架主要指的是应用框架。Gamma:应用框架是为一个特定应用领域的软件系统提供可重用结构的一组相互协作的类的集合。Buschmann:特定领域应用的框架称为应用框架。Froehlich:应用框架就是某个领域公共问题的骨架式解决方案。框架为该领域所有应用提供公共的体系结构和功能基础。第13章软件产品线体系结构13.3框架和应用框架技术31◇应用框架的定义应用框架可以在特定领域的开发中得到有效重用,也是目前被认为是粒度最大的重用。应用框架的研究有助于减少开发应用系统的开销、提高软件开发的效率、改进软件质量、保证软件开发的一致性、增强相似产品不同成员间共同化的可能性,对应用广泛的领域进行应用框架的研究与开发具有重要意义。第13章软件产品线体系结构13.3框架和应用框架技术32◇应用框架描述的共同点应用框架解决的是一个领域或产品族的问题,规定了问题应如何分解。包含了应用或子系统的设计,由一个互相协作的类或构件集合组成。可以通过继承或类的组合来创建应用。第13章软件产品线体系结构13.3框架和应用框架技术33◇应用领域的分类由于计算机应用非常广泛,其应用领域繁多。可以从主流应用软件的角度划分为ERP软件应用领域、协同软件应用领域、Internet应用领域及其他专业性比较强的领域。第13章软件产品线体系结构13.3框架和应用框架技术34◇应用领域的分类ERP软件应用领域。与企业运营密切相关的几个应用领域的高端市场基本上已被ERP软件垄断,包