面向大规模定制的软件开发模式
1概述
“软件危机”问题日益严重,主要表现在:软件开发效率低,开发周期长,开发成本高,可维护性和适应性差,不能很好地满足用户个性化和频繁的业务变化的需求.而日益激烈的市场竞争和经济全球化,赋予软件工程以新的特征:有效率有效用地满足用户个性化需求的定制化,快速响应和适应市场及业务的变化,以及低成本高收益等.
在软件行业,大多数开发单位还处于手工劳动阶段,软件开发活动是针对单一用户的具体需求,面向单个产品来组织的.近年来,产业界将“软件作坊”转变为“软件工厂”的呼声越来越高,试图将软件开发作为一种生产制造过程,像在生产线上生产物质产品一样,大规模生产软件产品.但目前的现状并没有达到期望的目标,当软件开发项目比较大时,软件危机依然存在,其中一个主要的原因是,认识一个系统的过程和方法同用于分析、设计和实现一个系统的过程和方法不一致,对软件开发过程的认识不够明确,同时,也缺乏合理和实用的软件过程模型.为了解决软件开发过程中的瓶颈问题,提高软件业的竞争力,人们提出一些旨在促进软件工程化的开发思想和方法,如软件复用、过程重组面向对象的软件工程基于构件的软件工程和领域工程等.本文在这些软件工程方法的基础上,提出面向大规模定制的软件开发模式(softwaredevelop?mentformasscustomization,SDMC),将大规模标准化软件开发与面向单个用户定制开发有机结合起来,既满足用户的个性化需求,又达到规模经济的效益.
2面向大规模定制的软件开发模式
1970年,托夫勒在其《FutureShock)(未来的冲击)一书中提出了一种以类似于标准化或大规模生产的成本和时间,提供满足用户特定需求的产品和服务的生产方式的设想.1987年,StanDavis在《FuturePerfec)(未来的理想生产方式)一书中首次将这种生产方式称为“masscustomization”,即大规模定制生产,简称mc.这种能满足用户的真正需求而又不牺牲效益和成本的新的生产方式目前在制造业得到了较快的发展,并作为一种有效的竞争手段逐渐被企业所采纳.简单地说,大规模定制是以大规模的生产成本和时间满足用户的个性化需求,其基本思想是:将个性化定制产品的生产问题通过产品重组和过程重组转化为或部分转化为批量生产问题.
与物质产品相比较,软件产品的生命周期更短,受市场和客户需求变化的影响更大,特别是领域应用软件,每个企业的产品结构、规模大小和管理方式都不一样,业务流程也各不相同,而且随着市场的变化,企业重组和持续业务过程改善,都造成业务过程的动态不稳定.这要求软件产品不仅在开发过程中要满足多样化的业务需要,而且在企业应用过程中,要能动态适应不断变化的业务过程.因此,软件产品应比物质产品更具有柔性和可定制性.根据不同软件产品的特点,存在两种软件开发形式,如图1所示.
①标准成品软件(off~the~shelf)开发.面向较大规模的客户群,开发和销售成本低,相对价格便宜,交货迅速,但满足用户特殊需求的集成和修改费用高.
②单个软件定向开发(one^ff).完全按用户需求组织开发,能贴近用户需求,但开发费用高,周期长,而且可维护、可升级性差.面向大规模定制的软件开发模式是以上两种开发方式优点的结合,既可以快速响应个性化客户需求,又可以实现标准软件开发的效率和成本.
如图2所示,SDMC除继承领域工程和基于构件的软件工程方法的特点外,还将并行工程的思想融于产品开发过程中.SDMC改变了传统的面向单个软件的开发方法,是对某一领域现在和未来市场、整体和细分市场以及相应的用户群体进行分析,开发出对该领域现存和潜在用户均有良好适应性和定制性的系列产品,即面向产品族开发,以实现范围经济与规模经济的结合.可重用构件是实现SDMC的基石.采用基于构件的开发方法,可以将一个复杂的软件产品分成多个构件的集合,相当于将复杂的单一问题简单化,因此更便于软件的管理、维护和升级.理论上,构件是与具体产品无关的相互独立的单元,可以在广泛范围内共享和重用,是解决大规模软件工程问题的有效方法.构件可以外购,还可以外协构造,这样可以充分利用外部资源,缩短开发周期.
SDMC运用并行工程的思想,集成地、并行地开发软件产品和过程,从软件开发的开始就充分考虑软件生命周期中所有因素,包括时间、成本、质量和用户需求等.
综上所述,SDMC继承和发扬了领域工程、基于构件的软件工程和并行工程的思想和方法,在系统方法指导下,用全局优化的观念,充分利用内外部资源,以大规模生产软件的效益,开发满足用户个性化需求的软件产品.其目标是:
①缩短产品开发周期,以实现快速响应;
②提高开发规模,降低开发成本,以实现规模经济;
③满足用户个性化需求,以实现范围经济.
3面向大规模定制的软件开发过程
传统的软件开发过程模型是针对单个产品开发而提出的,将软件开发过程分成需求分析、设计、编码、测试和交付等串行的几个阶段.文献分别给出了面向重用的过程模型.文献[7]将制造业的产品生产过程分为新产品形成过程和订单产品制造过程.本文根据SDMC的目标和特点,给出如图3所示的面向大规模定制的软件开发过程模型.与制造业一样,将软件开发过程分为面向市场的新产品开发和面向用户的定制两个循环.
图3面向大规模定制的软件开发过程模型
面向市场的新产品开发是根据市场的现在和未来需求收集信息,运用相关知识构造某一应用领域问题的解决方案,开发新的产品.新产品开发不是面向单个产品,而是面向产品族,建立面向产品族的领域框架和可重用构件,并在过程设计环节,设计以领域框架和构件为基型的软件定制过程,为定制具体应用系统打下基础.这一循环,所需时间相对较长,称之为慢循环.面向用户的定制过程是根据用户的具体需求,在新产品开发过程中形成的面向产品族的领域框架和定制过程的基础上,利用已有构件,进行配置设计和定制开发,形成满足客户个性化需求的软件产品.这一过程在客观上必须是一个快循环,以快速响应用户需求,称之为快循环.
SDMC主张软件开发单位通过业务过程重组,将软件开发的两个循环相互分离:新产品开发部门负责面向市场的新产品开发,同时为软件定制准备基型;定制部门利用可变型的基型,按订单定制,快速满足用户的个性化需求.两个循环相辅相成,能否完善结合的关键是可定制的领域框架和可重用的构件.每个循环均强调并行,并适时将演化模型[1]融入并行开发和定制过程中.
一般说来,软件开发单位对两个循环都应重视.新产品开发循环具有创新性,将给开发单位带来创新的产品,增强竞争优势.定制循环虽然不会有重大创新,但其优势是在“快”上,能快速响应用户的个性化需求.
4面向大规模定制的软件产品族
可定制的产品族模型是实现SDMC的关键.因此,SDMC重点在于研究建立合理的产品族结构的软件设计方法,不再每次只设计一个产品,而是同时完成一组产品的设计,即对整个产品族进行综合设计,从而可以挖掘出产品族中的相似性信息,设计出面向产品族的可定制的领域框架和可重用构件.并利用并行工程的观点,以时间、成本用户满意度为目标,集成地并行地设计产品族及定制过程,同时尽可能考虑到影响软件定制过程的约束条件和条件约束下的软件配置机制.
软件产品族是利用共享资源构造的某一具体领域软件产品的集合,是一系列相似产品的统一表达.软件产品族对具体领域的相似问题进行归类,用相似的解决方案来解决,并试图覆盖同一业务领域的所有现实或潜在需求.面向大规模定制的软件产品族体系结构如图4所示.
软件产品族由领域框架、构件、定制过程和定制机制等部分组成.按照从用户需求到软件产品形成,在业务定义、技术方案和物理实现3个层面上建立领域框架模型和构件模型,层与层之间存在映射关系,右边层次的模型是左边层次的模型的变换,这样从左到右,形成一种生成、推导和约束关系.
(1)业务模型.是根据用户和市场需求,对业务对象、业务过程、业务服务和业务规则进行形式化描义莫型.在软件产品族体系结构中,业务层面上描述的领域框架和构件,分别称为领域框架业务模型和构件业务模型.
(2) 技术模型.是对适应业务模型的应用系统技术解决方案的一致性描述.在软件产品族体系结构中,技术层面上描述的领域框架和构件,分别称为领域框架技术模型和构件技术模型.
(3) 实现模型.是对实现技术模型的物理系统的一致性描述.在软件产品族体系结构中,技术层面上描述的领域框架和构件,分别称为领域框架技术模型和构件技术模型.
(4) 领域框架.是针对某一具体领域,包括构件及构件之间相互关系和约束规则,可定制、可扩展领域通用的软件产品族架构.
(5) 构件.是在定义好的体系结构相关环境中具有明确功能的独立的、可替代、可重用的系统组成部分.
(6) 定制过程.针对具体的开发环境所制定的,个性化定制具体应用系统的规程,包括与应用系统实现过程相关的规范、工具及相关文档.
(7) 定制机制.包括约束条件^配置机制以及业务模型技术模型和实现模型之间的映射关系.约束条件是约束应用系统定制的环境因素和对定制过程的考虑,配置机制是条件约束下的对领域框架实例化和对构件进行配置的规则和推理机制.
基于产品族的软件开发目标是提高产品族中的构件的通用性,从总体上降低开发成本,缩短交货期.对现有客户需求的理解和对未来需求的预测,及对客户群需求的系统分析,是产品族规划的关键,而产品族规划又是面向产品族软件开发的重要环节.
5面向大规模定制软件开发的产品集成过程模型
传统的软件开发方法强调软件实现技术,而忽略了对软件开发过程的规范和管理.近年来,软件开发过程越来越受到产业界和学术界的重视,如CMM(能力成熟度模型)就旨在显着提高软件开发过程管理能力[8].本文在制造业面向大规模定制的集成产品和过程模型基础上,结合软件产品的特点,给出了如图5所示的面向大规模定制软件开发的产品集成过程模型.
如图5所示,面向大规模定制软件开发的产品集成过程模型呈二维结构.时间维描述的是从客户订单到产品交付的过程,即软件开发过程(包括新产空间维描述的是将不同产品的相似部分进行归类处理,以增加软件开发规模,可采用产品模型(包括领域框架模型构件模型和应用系统模型)来描述.
SDMC在时间维优化的关键是有效地将定制分离点(customizationdecouplingpoint,CDP)后移.CDP是软件开发过程中由与订单无关的、面向市场的预测型大规模开发转向面向用户的定制的转换点.推迟CDP可以减少由于用户订单特殊需求而进行定制在时间和资源上的开销.最理想的作法是在交货点定制,即接到用户订单后,及时在用户现场根据用户需求完成产品开发和交付.实现CDP后移,需要准确预测市场需求,构建好可定制的领域框架,预制足够的可重用构件,为产品定制做好充分的准备.时间维优化可以显着提高开发效率.
SDMC在空间维优化的关键在于如何通过相似性原理和标准化技术有效扩大构件和框架的优化范围并提高它们的可重用性.在软件行业,大约65%的开发成本花费在重复系统开发上.对不同应用系统进行分解,可以发现存在大量相似性,可以对这些相似性内容进行归类,形成领域内或领域间共享的
6面向大规模定制的敏捷软件开发组织
根据SDMC的二维优化模型,显然在一个地区或行业推广实施大规模定制软件要比仅在一个开发单位实施可以取得更好的效果.大规模定制软件的最佳的模式应是在全球范围进行推广实施.事实上,软件行业的全球化和专业化分工也正在促使大规模定制软件开发扩展到全球范围.如何组织广泛范围内的软件大规模定制?本文主张将敏捷制造思想应用到软件开发中,建立面向大规模定制的敏捷软件开发组织.
敏捷制造是为实现企业生产制造的敏捷性,采用现代通信手段,通过快速配置各种资源,以有效和协同的方式响应用户需求的一种企业发展战略.虚拟组织是实现敏捷制造的重要组织手段.虚拟组织是一些相互独立的开发单位通过信息技术(例如互连网)连接的暂时性的开发单位网络,这些开发单位在软件开发过程中贡献出自己的核心能力,以实现技能利润共享和成本风险共担,迎合和把握快速变化的市场机遇.
充的动态组织.根据产品族设计中规划好的领域框架和构件,进行工作任务分解(分解为不同类型的构件),按照各个公司或公司内某些部门的核心业务能力,动态组合资源、技术和人员最佳配置的虚拟组织.虚拟组织成员接受工作任务后,按照各种合作形式(如供应链式、策略联盟式、合资经营式转包加工式和虚拟合作式等[13])进行合作,在基于Internet的敏捷开发环境下,共享资源和技术,完成各自的工作任务(完成构件开发).根据客户订单要求,将领域框架实例化形成满足订单要求的应用系统框架,并如图6所示,虚拟组织是可重构、可重用和可扩对虚拟组织成员提供的构件进行装配,最终形成满足用户需求的应用系统.
7结论
面向大规模定制的软件开发模式在系统思想的指导下,综合利用领域工程和基于构件的软件工程方法等其它先进的软件开发方法以及并行工程的观念,依赖从软件产品到软件过程的全面优化,实现缩短开发时间、降低成本、满足用户个性化需求的目标.与其它开发方法相比较,面向大规模定制的软件开发模式更重视基础工作和标准化工作,更注意软件开发技术与软件开发过程管理的紧密结合.
大规模定制是企业竞争的新前沿,而将大规模定制生产模式用于软件工程上更是一个新课题.实现大规模定制软件开发,还有一些关键技术需要解决,如需求分析和软件产品族规划技术产品族形式化描述和建模技木构件技术、软件配置技术、标准化技木软件开发过程管理技术安全与知识产权保护以及计算机集成软件开发和定制平台等.
下一篇:软件开发方法的创新发展过程研究