APP下载

软件工厂研究现状综述

2006-12-27马春黎

计算机教育 2006年12期
关键词:产品线供应链

马春黎 卢 苇

摘要:软件工厂是软件开发工程化最可行的形式,实际上,它只是软件开发方法和实践在持续发展过程中的下一个合乎逻辑的步骤,但它们承诺通过引入工业化模式来改变软件行业的性质。本文首先阐述什么是软件工厂,然后说明它的实现基础,即概念和主要的技术,最后阐述它的工作过程。

关键词:软件工厂;产品线;供应链

1 引言

软件工厂是指为了支持某种特定应用程序的快速开发而配置的开发环境。是模式、模型、框架和工具的综合应用。

目前,软件开发一般采用人工手动的方法,速度缓慢、代价高昂而又极易出错,常常会生产出存在大量缺陷的产品,在可用性、可靠性、性能、安全以及其他服务质量方面造成严重的问题。同时,软件开发人员面临着快速发展的平台技术、不断增长的用户需求、永无止境地学习新技术、在旧的应用软件中提取可用价值等压力,这就需要一种既为软件开发创造便利,又为用户带来效益的方法。

软件工厂恰恰可以解决上述问题。它使得软件生产条理化、系统化,工厂式的管理体系确保软件产品和产品加工过程规范、标准;使项目实施人员可以对零件(中间件、模块)进行自由组合;软件工厂适应用户变化,解决了用户需求不确定性问题;软件工厂最大可能地利用已有资源,使得软件构件的复用性得到提高,软件开发工作量明显减少,软件成本大幅度降低;软件工厂采取流水作业方式,为多个项目并行实施创造了条件,软件可以实现批量生产,软件工厂插件式、组装式的软件生产方式开拓了系统的扩展空间;利用软件工厂进行软件开发,用户可以控制项目周期、成本、质量,开发速度得到提高,项目效益和成功性得到保障;软件工厂使得维护工作只需针对需要维护的对象(中间件、模块)展开,工作量大大减少,软件产品全寿命周期成本降低。

2 软件工厂涉及的基本概念和技术

2.1 软件产品系列

软件产品系列是有相同特征的一组产品的集合。软件产品系列成员具有很多共同特征,成员可以是组件也可是整个产品。

系列成员可以根据个性问题特征指定,根据个性解决方案来实现,从而可以忽略共性,减小了解决问题的范围和需要提供解决方案的范围。

2.2 软件产品线

由一个产品线体系结构、一个可重用构件集合(核心资源)和一个源自共享资源的产品集合组成,是组织一组相关软件产品开发的方式。

软件产品线系统获取生产系列产品成员的知识,以可重用资产的形式使用,例如组件、过程、工具,然后用这些资产生产系列成员。产品就像是家族成员一样重复使用需求、体系结构、框架、组件、测试和其他资产。软件产品线主要有以下建立方式:

(1)将现有产品演化为产品线。

(2)用软件产品线替代为现有产品集。

(3)全新软件产品线的演化。

(4)全新软件产品线的开发。

2.3 供应链

供应链是一个网络,以原始材料为起点,将其转换为中间产品,然后转换为最终的产品,以便通过配送系统提供给客户。

供应商互相连接在一起,以便使来自上游供应商的输出变成下游供应商的输入。上游供应商可以向下游供应商提供实现资产(例如,组件)或过程资产(例如工具和过程文档)。由于下游供应商生产的产品要结合上游供应商提供的实现资产,因此下游供应商具有较窄的活动范围,并且生产的产品比上游产品更大。

软件工厂通过划分软件架构(纵向或横向)以便将职责转移给外部供应商来促进供应链的形成:

(1)纵向划分使软件工厂可以装配由上游供应商提供的组件。例如,实体框架来自独立软件供应商。

(2)横向划分可以分隔产品系列和产品开发人员,使得产品开发人员可以使用由处于供应链同一级别的外部产品系列开发人员提供的生产资产。这可以采取下列两种形式之一:

①产品系列开发被外包。例如,开发软件工厂的产品系列开发人员为外部的系统集成商工作,而不是为独立软件供应商工作。他们为客户组织中的开发人员生成软件工厂,而不是为内部开发人员生成它们。

②产品开发被外包。例如,产品开发人员为系统集成商工作,并使用为独立软件供应商工作的产品系列开发人员所开发的软件工厂。产品开发人员可能位于境外成本较低的劳务市场中。

3 软件工厂的工作过程

3.1 软件产品线开发

产品线开发的目标是为一个产品系列提供生产资产。我们可以把产品线开发认为是产品线的分析、设计和实现。

产品线分析是决定产品线开发什么产品。包括产品线定义、问题和解决方案的领域范围、商业案例分析和范围鉴定。其分析强调:

①通过捕获风险承担者的观点来揭示产品线需求;

②通过系统的推理和分析、集成功能需求和分功能需求来完成产品线需求;

③产品线设计师对产品线需求的可用性。

产品线设计决定产品线怎样开发产品,其中包括产品线体系结构开发和映射、产品开发过程的定义和自动化。

产品线实现的目的是提供产品线体系结构和需要的实现资产和过程自动化需要的过程资产。

3.2 产品开发

3.2.1 产品开发活动要素

产品开发活动取决于产品线范围、核心资源库、产品计划和需求的输出。

产品开发的输入有:

(1)特定产品的需求,通常由包含在产品线范围内的一些产品描述来表达;

(2)产品线范围,指明正在考虑的产品是否适合包含在产品线中;

(3)构建产品所需的核心资源库;

(4)产品计划,指明核心资源如何应用到产品的构建中。

本质上说,产品线是一组相关产品的集合,但是,怎样实现却有很大的不同,这取决于资源、产品计划和组织环境。

3.2.2 生成产品涉及到的活动

(1)问题分析:确定问题是否位于软件工厂的范围内;

(2)产品规范:根据与产品要求之间的差异来定义产品要求;

(3)产品设计:将要求方面的差异映射到产品系列体系结构和产品开发过程方面的差异,从而生成产品体系结构和自定义的产品开发过程;

(4)产品实现:可以使用一系列机制来开发实现,具体取决于差异的范围,例如,属性表、配置组件的向导和功能模型、装配组件并生成其他人工制品(例如,模型、代码和配置文件)的可视模型,以及完成框架扩展点或者创建、修改、扩展或改装组件的源代码;

(5)产品部署:通过供应设备、验证主机配置来创建或重用默认的部署约束、逻辑主机配置以及可执行文件到逻辑主机的映射,通过安装和配置必需的资源来重新配置主机,以及安装和配置所部署的可执行文件;

(6)产品测试:创建或重用测试资产(包括测试用例、测试装置、测试数据集和测试脚本)以及应用仪表化和度量工具。

4 结论

软件工厂的出现使得软件开发商可以通过可重复的开发过程快速生产出效率高、成本低、质量好的企业级软件。软件工厂所提供的软件基础架构可以实现快捷的、生产线级的软件生产能力。具体包括:建立标准结构、软件中间件、开发过程、实践、扩展的集成开发环境、组件库和知识库以及重用策略等。

软件工厂是唯一一种在建立工厂的同时生产产品的特殊“工厂”。这种方式可以大大降低现代软件开发的成本和复杂性。

参考文献

[1] www.ccident.com. 廖铮,组件技术造就软件工厂.2001年06月28日.

[2] Kishore Channabasavaiah,Kerrie Holley,Edward M. Tuggle, Jr.迁移到面向服务的体系结构 第二部分. 2003年12月.

猜你喜欢

产品线供应链
海外并购绩效及供应链整合案例研究
编辑在图书出版中的作用
基于Triz理论的戴森产品线系列创新机制研究
基于供应链环境下乐山某超市供应商的选择
基于供应链环境下乐山某超市供应商的选择
改变集装箱供应链商业模式
大投入 大制作 大产出
微软和联想宣布合作
供应链平台更受重视
产品可靠性与供应链集成优化设计研究