|
1 软件产品线的演变 1.1 软件工程的发展 软件产品线是软件工程发展的高级阶段。软件产业从其发展伊始,就存在所谓的软件危机(Software Crisis)。为了应对软件危机,美国航空航天局(NATO)于1967年引入了软件工程(Software Engineering)的概念,并将传统的工程理论引入软件的设计、开发、实施和维护过程,从此开始了对软件生产过程管理的研究。 第一次的软件危机发生于ERP产业链的作坊式发展阶段。应对该危机,软件工程的改进集中在如何提高程序员的生产率和减少程序中的错误两个方面,目标是交付"零缺陷"的软件产品。研究成果有指导软件开发过程改进的软件能力成熟度模型(CMM),指导程序员标准化软件开发过程的个体软件过程(PSP)等。 第二次软件危机存在于ERP产业链的工厂式发展阶段。此时软件工程的研究重点转向了如何保证按时向用户交付"正确"的软件,即软件在功能、性能和成本几个方面都能满足用户的要求并且无缺陷。单系统开发方式的改进已经不能满足大量的并且是个性化的用户需求,必须引入新的软件生产流程。借鉴制造业大规模定制(Mass Customization)的生产方式,美国卡耐基o梅隆大学软件工程研究所(CMU/SEI)推出了软件产品线(Software Product Line)模型,为软件产品的大规模定制奠定了基础。 1.2 软件产品线的内涵 软件产品线是指具有一组可管理的公共特性的软件密集性系统的集合,这些系统满足特定市场或任务需求,并且按预定义的方式从一个公共核心资产集开发得到。 软件产品线生产的每个产品都是由来自公共资产库中的组件(Component)组成,然后按预定义的变化机制,如参数化或继承,对这些组件进行必要的剪裁,添加必须的新组件,根据一个产品线范围内的公共架构来组装这些组件。因此,构建一个具体软件产品(应用系统)的主要工作是组装或繁衍而不是创造;主要的活动是集成而不是编程。 产品线的内容包括三大基本活动:核心资产开发(Core Asset Development)、产品开发(Product Development)和技术组织管理(Management),核心资产的开发也称为领域工程(Domain Engineering),利用核心资产进行的产品开发又被称为应用工程(Application Engineering)。
 图 1 软件产品线的三大基本活动 图1显示了这三大基本活动的联系,三者连接在一起并且持续运作,反复循环。在核心资产与产品之间,存在强势的反馈循环,不仅核心资产用于开发产品,而且产品的开发过程又会促进核心资产版本的更新以及新的核心资产的加入。在这种反复的循环当中,核心资产随着新产品的开发而更新;资产的使用情况被跟踪,其结果被反馈到资产开发活动;核心资产的价值通过由核心资产开发出来的产品体现出来,通过对未来产品的需要的考虑,核心资产更为通用。迭代是产品线活动所固有的特征,因此产品线的运行需要持久的、强有力的、有远见的管理。
|