《SA13软件产品线体系结构.ppt》由会员分享,可在线阅读,更多相关《SA13软件产品线体系结构.ppt(50页珍藏版)》请在金锄头文库上搜索。
1、1第第1313章章 软件产品线体系结构软件产品线体系结构 13.1 软件产品线的出现和发展软件产品线的出现和发展 出现和发展出现和发展 产品线的起源可以追溯到1976年Parnas对程序族的研究。软件产品线的实践早在20世纪80年代中期就出现了。 到了20世纪90年代后期,软件产品线的研究已经成为热门的研究领域。 软件产品线的发展得益于软件体系结构的发展和软件重用技术的发展。 2 软件体系结构的发展软件体系结构的发展面向独立系统的专有体系结构可以满足应用的特殊需求,却无法有效地支持重用。通用的标准体系结构可以用于各类应用,但无法满足应用的特殊需求,因此产生了DSSA。DSSA用一个特定的应用领
2、域中可重用的参考体系结构有效地改善复杂软件系统的分析、设计、开发和维护。DSSA的创建需要以该领域的需求分析和建模为基础,就相应地出现了对领域建模的研究,DSSA的出现给领域工程带来了重大的变化。 第第1313章章 软件产品线体系结构软件产品线体系结构 13.1 软件产品线的出现和发展软件产品线的出现和发展 3 软件体系结构的发展软件体系结构的发展领域工程出现于20世纪80年代,可以把它看作是软件工程在某个特定领域中的应用。领域工程将软件重用作为一个主要目标,它面向多个客户的多个应用系统,通过挖掘相似的或相关系统之间的共性来提供对跨应用的变化的支持。20世纪90年代中后期,市场驱动的思想开始带
3、入领域工程,出现了以软件产品线为核心的领域工程。 第第1313章章 软件产品线体系结构软件产品线体系结构 13.1 软件产品线的出现和发展软件产品线的出现和发展 4 软件体系结构的发展软件体系结构的发展软件产品线软件产品线在软件工程在软件工程中的地位中的地位第第1313章章 软件产品线体系结构软件产品线体系结构 13.1 软件产品线的出现和发展软件产品线的出现和发展 5 软件重用的发展软件重用的发展自1968年Mcllroy提出软件重用概念的原型后,人们一直在尝试用不同的方法实现通过软件模块的组合来构造软件系统。 第第1313章章 软件产品线体系结构软件产品线体系结构 13.1 软件产品线的出
4、现和发展软件产品线的出现和发展 6第第1313章章 软件产品线体系结构软件产品线体系结构 13.2 软件产品线概述软件产品线概述 基本概念基本概念 将利用了产品间公共方面、预期考虑了可变性等设计的产品族称为产品线(Weiss和Lai)。 产品线就是由在系统的组成元素和功能方面具有共性和个性的相似的多个系统组成的一个系统族。 软件产品线就是在一个公共的软件资源集合基础上建立起来的,共享同一个特性集合的系统集合(Bass,Clements和Kazman)。 一个软件产品线由一个产品线体系结构、一个可重用构件集合和一个源自共享资源的产品集合组成,是组织一组相关软件产品开发的方式(Jan Bosch)
5、。7 基本概念基本概念 CMU/SEI的定义:“产品线是一个产品集合,这些产品共享一个公共的、可管理的特征集,这个特征集能满足选定的市场或任务领域的特定需求。这些系统遵循一个预描述的方式,在公共的核心资源(core assets)基础上开发的。” 第第1313章章 软件产品线体系结构软件产品线体系结构 13.2 软件产品线概述软件产品线概述8 基本概念基本概念 软件产品线主要由两部分组成:核心资源、产品集合。核心资源是领域工程的所有结果的集合,是产品线中产品构造的基础。也有组织将核心资源库称为“平台”。核心资源必定包含产品线中所有产品共享的产品线体系结构,新设计开发的或者通过对现有系统的再工程
6、得到的、需要在整个产品线中系统化重用的软件构件。产品线体系结构和构件用于软件产品线中产品的构建,是核心资源最重要的部分。第第1313章章 软件产品线体系结构软件产品线体系结构 13.2 软件产品线概述软件产品线概述9 软件产品线的过程模型软件产品线的过程模型1 1、双生命周期模型、双生命周期模型 第第1313章章 软件产品线体系结构软件产品线体系结构 13.2 软件产品线概述软件产品线概述10 软件产品线的过程模型软件产品线的过程模型2 2、SEISEI模型模型 第第1313章章 软件产品线体系结构软件产品线体系结构 13.2 软件产品线概述软件产品线概述11 软件产品线的过程模型软件产品线的
7、过程模型2 2、SEISEI模型模型 循环重复是产品线开发过程的特征,也是核心资源开发、产品线开发以及核心资源和产品之间协作的特征; 核心资源开发和产品开发没有先后之分; 管理活动协调整个产品线开发过程的各个活动,对产品线的成败负责; 核心资源开发和产品开发是两个互动的过程,三个活动和整个产品线开发之间也是双向互动的。第第1313章章 软件产品线体系结构软件产品线体系结构 13.2 软件产品线概述软件产品线概述12 软件产品线的过程模型软件产品线的过程模型3 3、三生命周期模型、三生命周期模型 Fred针对大型软件企业的软件产品线开发对双生命周期模型进行了改进,提出了三生命周期模型; 为有多个
8、产品线的大型企业增加企业工程流程,以便在企业范围内对所有资源的创建、设计和重用提供合理规划。第第1313章章 软件产品线体系结构软件产品线体系结构 13.2 软件产品线概述软件产品线概述13 软件产品线的过程模型软件产品线的过程模型3 3、三生命周期模型、三生命周期模型 第第1313章章 软件产品线体系结构软件产品线体系结构 13.2 软件产品线概述软件产品线概述14 软件产品线的组织结构软件产品线的组织结构 典型产品线开发组织结构典型产品线开发组织结构第第1313章章 软件产品线体系结构软件产品线体系结构 13.2 软件产品线概述软件产品线概述15 SEISEI产品线组织结构产品线组织结构(
9、1)(1) SEISEI则则强强调调市市场场人人员员的的作作用用,将将产产品品线线组组织织分分为为四四个个工工作作小小组:组: 市市场场人人员员是是产产品品线线和和产产品品能能力力、客客户户需需求求之之间间的的沟沟通通桥桥梁;梁; 核心资源组核心资源组负责体系结构和其他核心资源的开发;负责体系结构和其他核心资源的开发; 应用组应用组负责交付给客户的系统的开发;负责交付给客户的系统的开发; 管理者管理者负责开发过程的协调、商务计划等。负责开发过程的协调、商务计划等。第第1313章章 软件产品线体系结构软件产品线体系结构 13.2 软件产品线概述软件产品线概述16 SEISEI产品线组织结构产品线
10、组织结构(2)(2) 设有独立核心资源小组的组织结构通常合适于至少由50到100人组成的较大型的软件开发组织,设立独立的核心资源小组可以使小组成员将精力和时间集中在核心资源的认真设计和开发上,得到更通用的资源。 第第1313章章 软件产品线体系结构软件产品线体系结构 13.2 软件产品线概述软件产品线概述17 SEISEI产品线组织结构产品线组织结构(3)(3) 另外一种典型的组织结构不设立独立的核心资源小组,核心资源的开发融入各系统开发小组中,只是设立专人负责核心资源开发的管理。 这种组织结构的重点不在核心资源的开发上,所以比较适合于组成产品线的产品共性相对较少,开发独立产品所需的工作量相对
11、较大的情况。也是小型软件组织向软件产品线开发过渡时采用的一种方法。第第1313章章 软件产品线体系结构软件产品线体系结构 13.2 软件产品线概述软件产品线概述18 Jan BoschJan Bosch产品线组织结构产品线组织结构(1)(1)Jan Jan BoschBosch在在研研究究了了众众多多采采用用软软件件产产品品线线开开发发方方法法的的公公司司后后,将软件产品线的组织结构归纳为以下将软件产品线的组织结构归纳为以下4 4种组织模型。种组织模型。 开开发发部部门门:所所有有的的软软件件开开发发集集中中在在一一个个部部门门,每每个个人人都都可可承承担担领领域域工工程程和应用工程中适合的任
12、务,简单、利于沟通,适用于不超过和应用工程中适合的任务,简单、利于沟通,适用于不超过3030人的组织。人的组织。 业业务务部部门门:每每个个部部门门负负责责产产品品线线中中一一个个和和多多个个相相似似的的系系统统,共共性性资资源源由由需需要要使使用用它它的的一一个个和和几几个个部部门门协协作作开开发发,整整个个团团体体都都可可享享用用。资资源源更更容容易易共共享享,适适用用于于3030100100人人的的组组织织,主主要要缺缺点点是是业业务务部部门门更更注注重重自自己己的的产产品品而而将产品线的整体利益放在第二位。将产品线的整体利益放在第二位。第第1313章章 软件产品线体系结构软件产品线体系
13、结构 13.2 软件产品线概述软件产品线概述19 Jan BoschJan Bosch产品线组织结构产品线组织结构(2)(2) 领领域域工工程程部部门门:有有一一个个专专门门的的单单位位领领域域工工程程部部门门负负责责核核心心资资源源库库的的开开发发和和维维护护,其其他他业业务务单单位位使使用用这这些些核核心心资资源源来来构构建建产产品品。这这种种结结构构可可有有效效地地降降低低通通讯讯的的复复杂杂度度、保保持持资资源源的的通通用用性性,适适于于超超过过100100人人的的组组织织。缺缺点点是是难难以以管管理理领领域域工工程程部部门门和和不不同同业业务务部部门门之之间间的的需需求求冲冲突突,以
14、以及及因因此导致的开发周期增长。此导致的开发周期增长。 层层次次领领域域工工程程部部门门:对对于于非非常常巨巨大大和和复复杂杂的的产产品品线线可可以以设设立立多多层层(一一般般为为两两层层)领领域域工工程程部部门门,不不同同层层部部门门服服务务的的范范围围不不同同。这这种种模模型型趋趋向向臃肿,对新需求的响应慢。臃肿,对新需求的响应慢。第第1313章章 软件产品线体系结构软件产品线体系结构 13.2 软件产品线概述软件产品线概述20 软件产品线的建立方式软件产品线的建立方式软件产品线建立方式基本特征软件产品线建立方式基本特征第第1313章章 软件产品线体系结构软件产品线体系结构 13.2 软件
15、产品线概述软件产品线概述21 软件产品线的演化软件产品线的演化 从整体来看,软件产品线的发展过程有三个阶段,开发阶段、配置分发阶段和演化阶段。 引起产品线体系结构演化的原因:产品线与技术变化的协调、现有问题的改正、新功能的增加、对现有功能的重组以允许更多的变化等等。 产品线的演化包括产品线核心资源的演化、产品的演化和产品的版本升级。这样在整个产品线就出现了:核心资源的新旧版本、产品的新旧版本和新产品等。它们之间的协调是产品线演化研究的主要问题。第第1313章章 软件产品线体系结构软件产品线体系结构 13.2 软件产品线概述软件产品线概述22第第1313章章 软件产品线体系结构软件产品线体系结构
16、 13.3 框架和应用框架技术框架和应用框架技术 概述概述 对于大型复杂软件的开发,已经有越来越多的人认识到软件体系结构(架构)在软件开发中的重要作用,其重要性已经超过了数据结构和算法,对大型软件开发的成败起着关键作用。也正因为如此,软件体系结构已经成为大型复杂系统高层设计所关注的焦点,也取得了很多研究成果。23 概述概述 在提高软件生产率和软件质量方面,有很多方法和技术,其中,软件重用得到了广泛的关注和应用,被认为是提高软件生产率和软件质量的最有效途径。 软件重用可以发生在软件开发的各个阶段,重用的粒度越大,对生产率提高的作用就越大。第第1313章章 软件产品线体系结构软件产品线体系结构 1
17、3.3 框架和应用框架技术框架和应用框架技术24 概述概述 随着软件技术的发展,软件重用已经从模块、对象的重用发展到了基于构件的重用和基于框架的重用。框架技术与构件技术的结合产生了基于构件的应用框架技术,这是框架技术的一个发展趋势。第第1313章章 软件产品线体系结构软件产品线体系结构 13.3 框架和应用框架技术框架和应用框架技术25 概述概述 体系结构重用属于设计重用,比代码重用更抽象。体系结构模式(风格)就是体系结构重用研究的一个成果,而体系结构参考模型则是软件体系结构在特定领域的重用。第第1313章章 软件产品线体系结构软件产品线体系结构 13.3 框架和应用框架技术框架和应用框架技术
18、26 框架的定义框架的定义 Deutsch(1983):抽象类和相关算法的集合可组成一个框架,该框架在特定领域中可以通过专用代码的添加将具体子类组织在一起运作。框架由抽象类及其实现的操作和对具体子类的期望组成。 Johnson和Foot(1988):框架是封装了特定应用族抽象设计的抽象类的集合,框架又是一个模板,关键的方法和其他细节在框架实例中实现。第第1313章章 软件产品线体系结构软件产品线体系结构 13.3 框架和应用框架技术框架和应用框架技术27 框架的定义框架的定义 软件框架有时有多种称谓,如骨架、架构、平台。 框架的研究与体系结构模式、设计模式密切相关。但框架不是体系结构模式,也不
19、是设计模式。 框架是一个具有“插入点”集合的架构,可以适应特定的问题域。插入点使得软件工程师能够在架构内集成特定问题的类或功能。 第第1313章章 软件产品线体系结构软件产品线体系结构 13.3 框架和应用框架技术框架和应用框架技术28 框架的定义框架的定义 在面向对象的环境下,框架是相互协作的类的集合。 框架和设计模式有着明显的区别,设计模式比框架更抽象,框架可以用代码表示出来,但只有模式的举例才可以用代码表示出来。 设计模式是比框架更小的体系结构元素。一个典型的框架包括一些设计模式,而设计模式却不包括框架。 另外,框架总是有特定的应用领域,而体系结构和设计模式几乎可以用在任何类型的应用程序
20、中。 第第1313章章 软件产品线体系结构软件产品线体系结构 13.3 框架和应用框架技术框架和应用框架技术29 应用框架的定义应用框架的定义 由于特定领域的不同应用之间具有更多相似的特征,随着应用的发展和完善,某些带有整体性的应用模式被逐渐固定下来,经过抽象、设计和实现,就形成了特定的框架,也称为应用框架,包括基本构成元素和关系。第第1313章章 软件产品线体系结构软件产品线体系结构 13.3 框架和应用框架技术框架和应用框架技术30 应用框架的定义应用框架的定义 软件产品线中的框架主要指的是应用框架。Gamma:应用框架是为一个特定应用领域的软件系统提供可重用结构的一组相互协作的类的集合。
21、Buschmann:特定领域应用的框架称为应用框架。Froehlich:应用框架就是某个领域公共问题的骨架式解决方案。框架为该领域所有应用提供公共的体系结构和功能基础。第第1313章章 软件产品线体系结构软件产品线体系结构 13.3 框架和应用框架技术框架和应用框架技术31 应用框架的定义应用框架的定义 应用框架可以在特定领域的开发中得到有效重用,也是目前被认为是粒度最大的重用。 应用框架的研究有助于减少开发应用系统的开销、提高软件开发的效率、改进软件质量、保证软件开发的一致性、增强相似产品不同成员间共同化的可能性,对应用广泛的领域进行应用框架的研究与开发具有重要意义。第第1313章章 软件产
22、品线体系结构软件产品线体系结构 13.3 框架和应用框架技术框架和应用框架技术32 应用框架描述的共同点应用框架描述的共同点 应用框架解决的是一个领域或产品族的问题,规定了问题应如何分解。包含了应用或子系统的设计,由一个互相协作的类或构件集合组成。可以通过继承或类的组合来创建应用。第第1313章章 软件产品线体系结构软件产品线体系结构 13.3 框架和应用框架技术框架和应用框架技术33 应用领域的分类应用领域的分类 由于计算机应用非常广泛,其应用领域繁多。可以从主流应用软件的角度划分为ERP软件应用领域、协同软件应用领域、Internet应用领域及其他专业性比较强的领域。第第1313章章 软件
23、产品线体系结构软件产品线体系结构 13.3 框架和应用框架技术框架和应用框架技术34 应用领域的分类应用领域的分类 ERP软软件件应应用用领领域域。与企业运营密切相关的几个应用领域的高端市场基本上已被ERP软件垄断,包括国外的SAP和Oracle的产品,以及国内的用友、金蝶。ERP软件主要针对大型生产企业,核心模块包括供应链上的物料、生产、销售模块,以及财务、人力资源模块。在非生产性企业的应用主要是财务模块和人力资源模块。ERP软件提供复杂的定制功能,基本上能适应特定应用领域的各种需求。第第1313章章 软件产品线体系结构软件产品线体系结构 13.3 框架和应用框架技术框架和应用框架技术35
24、应用领域的分类应用领域的分类 协协同同软软件件应应用用领领域域。协同软件的主要应用领域为行政办公、电子商务、电子政务。主要产品有协达普及型办公宝、微软Exchange和Outlook软件,近两年腾讯RTX、微软MSN等即时通讯软件也得到了广泛应用。在协同软件领域,很多厂商都形成了自己的框架或平台。如协达的协同软件业务架构平台CAP 、东兰的DLFlo工作流平台等。第第1313章章 软件产品线体系结构软件产品线体系结构 13.3 框架和应用框架技术框架和应用框架技术36 应用领域的分类应用领域的分类 Internet应应用用领领域域。随着Internet技术的飞速发展,特别是Web技术在20世纪
25、90年代中期成为计算主流之后,应用系统的体系结构以及业务计算模型发生了巨大变化。对于用户数量大、且地域分散的企业,传统上基于单机及C/S结构的应用系统目前已很少使用,企业应用系统越来越多地演化为基于Internet/Intranet的Web应用系统。第第1313章章 软件产品线体系结构软件产品线体系结构 13.3 框架和应用框架技术框架和应用框架技术37 框架的分类框架的分类(1)(1) 目前还没有非常明确的框架分类,一般可以将软件框架分为以下几类:概念框架(如Zachman框架)、平台框架(如.Net框架,JavaEE框架)、开发框架(如Eclipse、Netbeans、OSGi等)及应用框
26、架。其中,应用框架的种类非常多,从技术角度可以分为构件框架、服务框架、Web应用框架等。由于平台框架和开发框架与具体的应用领域无关,也可将其称为基础框架。应用框架一般是基于基础框架开发的。第第1313章章 软件产品线体系结构软件产品线体系结构 13.3 框架和应用框架技术框架和应用框架技术38 框架的分类框架的分类(1)(1) 目前,应用框架研究是非常活跃的领域,由于Web应用系统的广泛使用,Web应用框架的研究成果非常多。Web应用框架通常采用多层软件体系结构,在JavaEE或.Net平台上实现模型-视图-控制器(MVC)设计模式,也会将一些服务集成到基础的业务对象中。Web应用框架是基于被
27、普遍接受的标准(例如,Java, .Net, XML, XSLT, JAAS, Servlet, JSP, JDBC, ADO.Net)和技术(例如,如构件技术、Agent技术等),使得有经验的开发者可以快速开发Web应用系统。第第1313章章 软件产品线体系结构软件产品线体系结构 13.3 框架和应用框架技术框架和应用框架技术39 框架的分类框架的分类(1)(1) l WebWeb应应用用框框架架的的分分类类:可可以以划划分分为为基基于于请请求求的的框框架架,基基于于构构件件的的框框架架、混混合合框框架架、元元框框架架和和基基于于RIARIA(Rich Rich Internet Inter
28、net ApplicationApplication)的框架。)的框架。 基于请求的框架与最初的CGI规格类似,每个请求本质上都是无状态的,通过引入服务器端会话,获得一定的状态,例如,WebWork、Struts、Beehive及Stripes框架。 基于构件的框架将请求处理部分抽象出来,将其逻辑封装到可复用的构件中,例如,JSF(JavaServer Faces)、Tapestry和Wicket框架。 第第1313章章 软件产品线体系结构软件产品线体系结构 13.3 框架和应用框架技术框架和应用框架技术40 框架的分类框架的分类(1)(1) l Web Web应用框架的分类应用框架的分类 混
29、合框架是上面两种框架的组合,在基于请求的模型中控制所有数据和逻辑流,如RIFE框架。 元框架具有一组公共服务的核心接口和集成构件和服务的高度可扩展的骨架,元框架有时被认为是框架的框架,如Keel、Spring框架。 基于RIA的框架使用客户端容器模型,降低了与服务器的通信量,如DWR(Direct Web Remoting)、Echo2、JSON-RPC-Java框架。第第1313章章 软件产品线体系结构软件产品线体系结构 13.3 框架和应用框架技术框架和应用框架技术41 框架的分类框架的分类(2)(2) 根据框架的使用和扩展方式,可以将框架分为:黑盒框架通过构件/类的组合来支持重用和扩展。
30、应用中的类由框架的不同构件组合而成。白盒框架一般使用类的继承机制实现,由未完成的类组成,类有一个或多个抽象接口或虚方法。第第1313章章 软件产品线体系结构软件产品线体系结构 13.3 框架和应用框架技术框架和应用框架技术42 框架的分类框架的分类(2)(2) 具体的框架实际上都是“灰色” 的,是可继承和可组合方式的结合:灰盒框架可以分成三部分:固定的、可选择的和开放的;固定部分包含该领域最基本的功能,内建了应用的控制流;可选部分为该领域中相对固定的、应用特定的功能特征,即领域个性部分,用可组合的类和构件实现;开放部分针对一些无法准确估计和预测的功能特征,只能为其规定统一的接口和挂接点。第第1
31、313章章 软件产品线体系结构软件产品线体系结构 13.3 框架和应用框架技术框架和应用框架技术43第第1313章章 软件产品线体系结构软件产品线体系结构 13.4 软件产品线基本活动软件产品线基本活动 产品线基本活动产品线基本活动 一般认为产品线开发主要包括核心资产开发(又称领域工程)一般认为产品线开发主要包括核心资产开发(又称领域工程)和产品开发(又称应用工程)和产品开发(又称应用工程), ,这两者又需要技术和组织的管理。这两者又需要技术和组织的管理。44 产品线分析产品线分析 产品线分析是产品线的需求工程,是商业机遇的确认和产品线体系结构的设计之间的桥梁。产品线分析强调:通过捕获风险承担
32、者的观点来揭示产品线需求;通过系统的推理和分析、集成功能需求和非功能需求来完成产品线需求;产品线设计师对产品线需求的可用性。第第1313章章 软件产品线体系结构软件产品线体系结构 13.4 软件产品线基本活动软件产品线基本活动45 产品线分析产品线分析 第第1313章章 软件产品线体系结构软件产品线体系结构 13.4 软件产品线基本活动软件产品线基本活动46 产品开发产品开发 l 产品开发活动取决于产品线范围、核心资源库、产品计划和需求的输出。第第1313章章 软件产品线体系结构软件产品线体系结构 13.4 软件产品线基本活动软件产品线基本活动4747 产品开发产品开发 l产品开发的输入: 特
33、定产品的需求 产品线范围 构建产品所需的核心资源库 产品计划第第1313章章 软件产品线体系结构软件产品线体系结构 13.4 软件产品线基本活动软件产品线基本活动4813.5 产品线体系结构的设计产品线体系结构的设计 产品线体系结构简介产品线体系结构简介 软件产品线体系结构指一个软件开发组织为一组相关应用或产品建立的公共体系结构。同领域模型一样,软件产品线体系结构中也可以分为共性部分和个性部分。产品线体系结构是产品线核心资源的早期和主要部分,在产品线的生命周期中,产品线体系结构应该保持相对小和缓慢的变化以便在生命周期中尽量保持一致。产品线体系结构要明确定义核心资源库中软件构件集合及其相关文档。
34、第第1313章章 软件产品线体系结构软件产品线体系结构 4949 产品线体系结构的标准化和定制产品线体系结构的标准化和定制 为适应应用的规模增大、复杂度提高,软件技术不断发展,相继出现了中间件技术、软件产品线等。体系结构风格是一个使产品和产品线具有良好的可移植性的结构,产品和产品线通过最小的修改就可移植到一个新的平台上。13.5 产品线体系结构的设计产品线体系结构的设计第第1313章章 软件产品线体系结构软件产品线体系结构 50第第1313章章 软件产品线体系结构软件产品线体系结构 思考题思考题 1 1、软件产品线主要由哪两部分组成?、软件产品线主要由哪两部分组成? 2 2、了解软件产品线的过程模型。、了解软件产品线的过程模型。 3 3、掌握框架及应用框架的概念。、掌握框架及应用框架的概念。 4 4、掌握框架的分类。、掌握框架的分类。