APP下载

软件产品线的企业工程实践研究

2014-04-24王汗周翔

王汗 周翔

摘要:软件产品线作为利用公共资产来构建一系列相关系统的方法,能够显著提高生产率、缩短上市时间、提升产品质量和客户满意度。在过去数十年的实践中,软件产品线技术取得了广泛的成功,但也同时暴露了诸多问题,引来了许多争议。本文阐述了软件产品线的基本概念,根据实际案例探讨了在软件企业中实施软件产品线面临的机遇和挑战,指出了软件产品线的企业工程实践前景。

关键词:软件体系结构 软件产品线 软件重用

1 概述

软件产品线工程是使用平台和大规模定制开发软件应用(软件密集型系统和软件产品)的一个范例[1]。在过去数十年的实践中,研究者认识到软件产品线的实施能够显著提高生产率、缩短上市时间、提高产品质量和客户满意度。但同时部分软件开发组织也发现软件产品线的实施并不总是一帆风顺,它有时不但不能提高效益,反而影响了企业正常的开发进度,造成了开发进程的混乱[2][3]。本文将针对这些问题,对软件产品线的工程实践及其前景展开研究。

2 软件产品线概述

2.1 软件产品线的基本概念

软件产品线的定义为:“具有一组可管理的公共特性的软件密集性系统的集合,这些系统满足特定的市场需求或任务需求,并且按照预定义的方式从一个公共的核心资产集开发得到”[4]。在这个定义中,所谓核心资产,指的是那些构成软件产品线基础的资产。核心资产通常包括(但不局限于)构架、可重用软件组件、领域模型、需求陈述、文档和规格说明、性能模型、进度表、预算、测试计划、测试用例、工作计划和过程描述。构架是核心资产集合中的关键。基于产品线的软件产品开发的特点就在于维护这样一个核心资产库,并在开发过程中实现对这些核心资产的重用。软件产品从产品线体系结构获取自己的体系结构,实例化并配置产品线构件集的一个子集,并开发产品特定的代码。实例化的软件产品构成了领域软件产品家族。

2.2 软件产品线的基本特征

图1 软件产品线开发活动[4]

简而言之,产品线包括了核心资产的开发和利用了核心资产的产品开发,这两者均需要技术和组织的管理。通常而言,产品和核心资产的开发密不可分、彼此相关。它们的关系如图1所示。每个圆圈代表一个基本活动,三者连接在一起并持续运转,表明这三者是必不可少的、紧密连接的、可能以任何次序出现,并紧密循环。

软件产品线是一个系统性的大规模的复用方法,贯穿软件开发的所有阶段,其本质特点在于强调领域体系结构的重要性以及面向特定领域的市场导向。它具有如下几个特征:重用导向贯穿始终、以体系结构为核心、市场目标驱动、面向特定领域[6]。

在软件产品线方法中,重用是有计划的、能够实现的和强制的(而非偶然的小粒度的重用)。所有核心资产都是为重用而设计,为能够重用于多个系统进行优化。整个产品线被视为一个整体,而不是可以区别对待和维护的多个产品。软件产品线中的产品由核心资产中的组件组织而成,但这些组件都是由产品线构架指定的,且按照预定义的方式进行组装。开发组织为最终用户提供的每个产品都不过是核心资产的一个简单定制。

3 软件开发案例分析

3.1 “基于海量视频的事件轨迹快速检索平台”(MVRP)概述

某单位与全国多地的公安机关有着长期的良好合作关系,在市场调研中该单位发现目前警方迫切需要一套软件系统对海量监控视频进行智能分析,以实现:实施视频摘要,减少监控视频时长;检索用户关注目标,进行目标跟踪和目标关联;将目标轨迹映射至真实空间,结合地理信息系统,获取目标运动轨迹,预测目标运动路线。警方希望该软件系统能够减轻案件侦查过程中线索目标的查询检索工作,缩短目标检索所需时间,提高破案效率。

图2 MVRP总体架构

该单位在进行软件开发时,将此软件系统定名为“基于海量视频的事件轨迹快速检索平台”(MVRP)。并将MVRP设计为如下三个部分(如图2所示):

①目标轨迹时空分析子系统:该子系统与用户直接交互,供用户调看监控视频,指定检索目标,将用户指令进行下发;并实现目标运动轨迹的真实空间显示,预测目标可能的运动轨迹。

②综合调度控制服务子系统:该系统接收用户指令,向合适的智能视频分析单元下发指令;接收智能视频分析单元的运行汇报,向用户加以汇报。

③智能视频分析服务子系统:该系统接收指令;进行视频摘要、检索与分析。

3.2 MVRP开发分析

在MVRP的开发进程中,系统架构人员为了保证其设计的系统架构稳妥可靠,能够按期实现,同时也根据自身经验,直接以其亲身参与开发的另一个软件系统“高级视频监控系统”(AVSS)为蓝本,进行开发。

AVSS是一个集视频图像监控和安保综合管理为一体的大型分布式网络平台。该系统实现对分布在大范围内的视频监控设施进行调度管理,同时结合地理信息服务系统,使得用户能够在直观、良好的界面中接收报警信息,调看指定地点的监控视频。该系统主要由两个分系统构成:视频应用分系统和视频服务分系统。视频应用分系统实现与用户交互,使用户在一目了然的地图界面上调看监控点视频,监控各点报警信息及监控区域整体态势。视频服务分析同实现后台的数据服务,实现视频转发、视频存储、通信控制等功能。AVSS总体架构如图3所示。

图3 AVSS总体架构

由这两个系统的总体构成可见,MVRP在很大程度上借鉴了AVSS的架构。因为MVRP需要调度多个客户端和多个智能视频分析单元,引入了独立的综合调度控制服务子系统。其余如地理信息显控、调度管理等需要与用户直接交互的部分集成为一个目标轨迹时刻分析子系统(对应AVSS的视频应用分系统),如视频处理等需要服务端自行完成的功能集成为一个视频分析服务子系统(对应AVSS的视频服务分系统)。事实上,在MVRP的总体设计阶段,系统开发人员是直接以AVSS的设计文档作为蓝本进行讨论,最终完成MVRP的总体架构设计。

3.3 软件产品线视角的分析

在软件产品线中,重用是有计划的、能够实现的和强制的,其重用的资产也是明确为重用而设计的[4]。软件产品线绝非偶然的小粒度重用。因此前面所讨论的MVRP开发只能说是利用了软件重用的思想,而不是软件产品线的实践。然而试图以软件产品线的视角对这一案例进行研究依然是有意义的,它可以探讨如果在某单位的软件开发实践中引入软件产品线方法,将会面对怎样的困难和收益。

3.3.1 实施软件产品线的困难

经过对该单位的软件开发实践进行分析,认为该单位引入软件产品线方法,面临着如下困难:

①延误产品交付时间。研究表明,传统的软件产品线方法需要软件开发组织在引入新的软件产品线时投入过去开发2到3个项目的精力[5],有时甚至需要近100名开发人员,投入900至1350个人月[6]。各地警方对能够辅助进行智能视频分析的软件系统的需求无比迫切,甚至提出希望该单位能够尽快提供可以实现基础功能的软件系统Demo,然后再在使用中不断完善。考虑到该单位目标客户对产品的迫切需求,在开发MVRP时新引入软件产品线显然是不可接受的。

②缺乏系统架构人员。该单位作为一个发展中的软件开发企业,缺少有足够经验的架构设计师。在过去几年间有过成功的软件架构实践的架构师几乎都成为了中层领导,离开了开发一线。但在以开发软件产品线时,必须有足够优秀的软件架构师设计软件产品线核心资产库中的软件架构,才能使得软件架构能够适应未来不同产品的配置需求。

③缺乏管理层支持。一般而言对软件开发技术缺乏深入了解的管理人员需要一定时间和实践以理解为何需要专门的开发人员从事难以见到实际产品的技术工作。此外,如果引入独立的软件产品线开发小组,这必然对企业的组织架构和企业文化造成相当的影响,对企业管理造成一定挑战。这就使得管理层在面对软件产品线方法时需要做出更多权衡。

3.3.2 实施软件产品线的收益

尽管前面述及的困难使得该单位在开发MVRP时新引入软件产品线方法几乎成为不可能,但假如该单位已经开发了成熟的软件产品线体系,也将带来诸多显而易见的收益:

①降低开发难度。虽然目前该单位缺少有经验的架构设计师,但如果该单位具备了完善的软件产品线,那么新产品的开发难度就可以大大降低。如果该单位能够组织公司内最优秀的架构设计师,对这样一些工作于网络上的综合服务平台进行分析,确定一个产品线架构。具体的产品开发就无需重新进行架构设计,而只需进行实例化,可以降低开发风险,降低开发难度。

②节约开发成本。尽管该单位目前十分欠缺有经验的软件开发人员,但由于不同部门经常会开发有着一些具有共性的系统,造成了大量的人力浪费。如果该单位已经具有了完备的软件产品线,那么就可以以得力的工程师开发具有一定功能的组件,减少人力浪费,投入到单个产品中的人员就可以大大削减。节约出的人力可以用于开发其他产品或者研究新的技术。

③减少开发时间。如前所述,在建立软件产品线之后,新产品的开发过程仅仅是产品线构架的实例化。这样可以节省大量初期设计、代码编制时间,最终减少产品的开发时间。

4 结束语

软件产品线作为一种在过去数十年的实践中取得了广泛成功的一种方法,虽然其在部分企业工程实践中存在一定的困难和挑战,但其仍可以为企业的软件开发实践提供新的思路方法、带来新的改进提升,值得广大软件开发组织加以研究和采纳。

参考文献:

[1]Pohl K,Bockle G, van der Linden F.软件产品线工程[M].张佳骥,李彦平译.北京:国防工业出版社,2010.

[2]Faust D,Verhoef C.Software product line migration and deployment.In Horspool RN,Wellings AJ eds.Software:Practice and Experience[M].New York:John Wiley & Sons,2003.933-

955.

[3]杨芙清,梅宏,李克勤.软件复用与软件构件技术[J].电子学报,1999,27(2):69-75.

[4]Clements P,Northrop L.软件产品线实践与模式[M].张莉,王雷译.北京:清华大学出版社,2004.

[5]Clements PC,Jones LG, Northrop LM, McGregor JD. Project management in a software product line organization[J]. IEEE Software,2005,22(4):54-62.

[6]李弈远.基于特征的软件产品线开发关键技术研究[D].杭州:浙江大学,2007.

作者简介:王汗(1989-),男,江苏沭阳人,硕士研究生,研究方向:软件架构;周翔(1973-),男,湖北宜昌人,研究员、硕士生导师,研究方向:智慧城市、信息系统架构。