解题方法与技巧精解1-应对新技术类型的问题 ??? (2)将大规模项目划分为若干个具有共同目标的小规模项目,用XP方法论组织小项目开发,用传统软件过程方法论监控全局。 (3)在此基础上,建立面向目标的项目管理。 2.4 案例三—产品线技术的应用 2.4.1 问题 A公司是一家中等规模的计算机企业,专业从事网络安全防护软件系统的开发。从最初现有产品集中软硬件结合的紧密程度,以及不同产品在硬件方面的需求的差异,也是产品线开发采用演化还是革命方式的决策依据。对于软硬件结合密切且硬件需求差异大的现有产品集因无法满足产品线方法对软硬件同步的需求,只能采
26 仅开发基于Windows的个人防火墙产品开始,现在,已经延伸到基于Linux、Windows系列、MAC操作系统的个人防火墙、企业防火墙、入侵检测系统、病毒扫描系统、安全扫描系统等多种产品。公司原来的产品都是一个一个地开发,为每个软件对应地组织一个项目组。 为了适应快速变化的市场,降低开发成本,公司想引入产品线方法。然而,由于软件产品线方法涉及了一个软件开发企业的多个产品,所以,公司的王总决定在弄清楚以下三个问题之后再做决定,首先就是本公司的业务范围是否适合使用产品线方法,其次是如何在原有产品的基础上建立产品线,最后是成功实施产品线的主要因素是什么? [问题1] 请用100字以内文字,说明A公司是否适合采用产品线方法,并说明理由。 [问题2] 请用400字以内文字,说明在原有产品的基础上建立软件产品线的方式,并作简要评价。 [问题3] 请用150字以内文字,说明成功实施产品线的主要因素。 2.4.2 背景知识与解题分析 软件产品线(software product line)是一个十分适合专业的软件开发组织的软件开发方法,??? 第 8讲 计算机数值表示与非数值表示 能有效地提高软件生产率和质量、缩短开发时间、降低总开:发成本;它也是一个新兴的、多学科交叉的研究领域,研究内容和范围都相当广泛。 产品线的起源可以追溯到1976年Pamas对程序族的研究。软件产品线的实践早在20世纪80年代中期就出现了。最著名的例子是瑞士CelsiusTech公司的舰艇防御系统的开发,该公司从1986年开始使用软件产品线开发方法,使得整个系统中软件和硬件在总成本中所占比例从使用软件产品线方法之前的65:35下降到使用后的20:80,系统开发时间从近9年下降到不到3年。据HP公司1996年对HP、IBM、NEC、AT&T等几个大型公司分析研究,他们在采用了软件产品线开发方法后,使产品的开发时间减少1.5~2倍,维护成本降低2-5倍,软件质量提升5-10倍,软件重用达50%~80%,开发成本降低12%~15%。 软件产品线开发有四个基本技术特点:过程驱动、特定领域、技术支持和构架为中心。与其他软件开发方法相比,软件开发组织选择软件产品线的宏观上的原因有:对产品线及其实现所需的专家知识领域的清楚界定,对产品线的长期远景进行了策略性规划。 根据SEI的定义,软件产品线主要由两部分组成:核心资源和产品集合。核心资源是领域工程的所有结果的集合,是产品线中产品构造的基础。也有组织将核心资源库称为“平台(Platform)”。核心资源必定包含产品线中所有产品共享的产品线构架,新设计开发的或者通过对现有系统的再工程得到的、需要在整个产品线中系统化重用的软件构件。与软件构件相关的测试计划、测试实例,以及所有设计文档,需求说明书和领域模型还有领域范围的定义也是核心资源,采用COTS的构件也属于核心资源。产品线构架和构件是用于软件产品线中的产品的构建和的核心资源最重要的部分。 软件产品线的建立需要希望使用软件产品线方法的软件组织有意识地、明显地努力才有可能成功。软件产品线的建立通常有四种方式。引入产品线开发过程采用的方式:是演化方式还是革命方式,是基于现有产品还是开发全新的产品线。 27 解题方法与技巧精解1-应对新技术类型的问题 ??? ? 将现有产品演化为产品线。在基于现有产品构架设计的产品线构架的基础上,将特定产品的构件逐步地、越来越多地转化为产品线的共用构件,从基于产品的方法“慢慢地”转化为基于产品线的软件开发。主要优点是通过对投资回报周期的分解、对现有系统演化的维持使产品线方法的实施风险降到最小,但完成产品线核心资源的总周期和总投资都比使用革命方式要大。 ? 用软件产品线替代现有产品集。基本停止现有产品的开发,所有努力直接针对软件产品线的核心资源开发。遗留系统只有在符合构架和构件需求的情况下,才可以和新的构件协作。这种方法的目标是开发一个不受现有产品集存在问题限制的、全新的平台,总周期和总投资较演化方法要少,但因重要需求的变化导致的初始投资报废的风险加大。另外,基于核心资源的第一个产品面世的时间将会推后。 ? 全新软件产品线的演化。当一个软件组织进入一个全新的领域要开发该领域的一系列产品时,同样也有演化和革命两种方式。演化方式将每一个新产品的需求与产品线核心资源进行协调。好处是先期投资少,风险较小,第一个产品面世时间早。另外,因为是进入一个全新的领域,演化方法可以减少和简化因经验不足造成的初始阶段错误的修正代价。缺点是已有的产品线核心资源会影响新产品的需求协调,使成本加大。 ? 全新软件产品线的开发。构架设计师和工程师首先要得到产品线所有可能的需求,基于这个需求集来设计和开发产品线核心资源。第一个产品将在产品线核心资源全部完成之后才开始构造。优点是一旦产品线核心资源完成后,新产品的开发速度将非常快,总成本也将减少。缺点是对新领域的需求很难做到全面和正确,使得核心资源不能像预期的那样支持新产品的开发。 从本质上看,产品线开发包括核心资源库的开发和使用核心资源的产品开发,这两者都28 ??? 第 8讲 计算机数值表示与非数值表示 需要技术和组织的管理。核心资源的开发和产品开发可同时进行,也可交叉进行,例如,新产品的构建以核心资源库为基础,或者核心资源库可从已存在的系统中抽取。有时,我们把核心资源库的开发也称为领域工程,把产品开发称为应用工程。 产品线分析是把对商业机遇的初步确认细化为需求模型,对正在开发的产品线而言,捕获:组织的商业目标和约束、包含在产品线中的产品、最终用户和其他风险承担者的需求、大粒度重用的机会。分析能否为并行开发提供机会,对产品线开发来说是至关重要的。资源开发需要固定投资,特别是及时的投资,但产品线的成功却往往取决于组织快速进入市场的能力。减少产品线进入市场时间的惟一途径就是使资源开发并行进行。对产品线分析而言,这意味着要尽可能快地发现重大设计信息。因此,是否进行了充分的产品线分析,对于软件产品线的成功实施起着十分重要的作用。 首先看问题一,对于大多数人来说,软件产品线技术可能并不太熟悉,这些技术在国内更能更吸引相关研究人员的注意。这个时候,就要注意用好类别,软件产品线不熟,硬件产品线则相对更为熟悉,所谓硬件产品线实际上是具有公共核心功能的一系列硬件产品,而软件产品线也是这样一个作用,它的关键出发点在于重用已有的成果,提高工作效率,避免重复劳动。事实上,我们应该牢牢记住,大凡软件工程方面的问题,基本目标都在于此,从这个角度出发,再加强类比,往往会收到奇效。 问题二是建立在问题一的基础上,实际上在我们大致理解了软件产品线的功用后,再结合题目中给出的信息,应该能够给出接近正确答案的解答。 问题三看似和软件产品线知识有紧密的联系,如果我们不太熟悉的情况下,往往会选择放弃。事实上,对于这类问题我们要记住一点:擒贼先擒王、打蛇打七寸。什么意思呢,就是考虑和它最相关的问题,什么问题一旦失败就会导致全盘皆输。前面我们提到软件产品线都有核心的部分,那么如果这部分不健全,则一切无从谈起,因而要有一个用于构建产品的从仿生学的角度看,类比是一个行之有效的方法。 29 解题方法与技巧精解1-应对新技术类型的问题 ??? 好的核心资源库。同时,我们要记住两点,无论对于什么软件开发来说,有两点是始终无可避免,那就是软件体系结构和对开发人员的管理。落实到这个问题上,就是要有好的产品线体系结构和好的管理(软件资源、人员组织、过程)支持。 2.4.3 参考答案 [问题1] 适合。原因: (1)该公司的产品都是在同一个领域,满足软件产品线建设的基本要求。 (2)该公司原有产品相对比较成熟,可以在原有产品的基础上建立产品线。 [问题2] 在原有产品的基础上,可采用下列方式之一建立产品线:演化方式 、革命方式。 [问题3] (1)对该领域的产品开发已具备长期积累的经验。 (2)一个用于构建产品的好的核心资源库。 (3)好的产品线体系结构。 (4)好的管理(软件资源、人员组织、过程)支持。 从图2-1看出,该企业通过建设一个基于J2EE的新系统作为实施EAI的核心,进行流程、数据、界面等方面的各种整合,同时,企业技术人员对这个新系统从功能、维护、安装、扩充等30 2.5 案例四—基于J2EE的EAI应用 2.5.1 问题 经过多年的信息化建设,某企业已经拥有相当数量的应用系统,在该企业中发挥了较好的作用。但是,由于该企业并没有一个关于信息系统开发的总体性长远规划,基本上是由每个部门自行选择开发技术和开发方案来建设应用系统的,从而导致这些应用系统成为一个个“信息孤岛”。随着业务发展,该企业已提出了以下新的业务需求: