学/科/建/设/与/教/学/研/究
软件工厂研究现状综述
马春黎,卢 苇
(北京交通大学 计算机与信息技术学院,北京 1 00044)
摘 要:软件工厂是软件开发工程化最可行的形式,实际上,它只是软件开发方法和实践在持续发展过程中的
下一个合乎逻辑的步骤,但它们承诺通过引入工业化模式来改变软件行业的性质。本文首先阐述什么
是软件工厂,然后说明它的实现基础,即概念和主要的技术,最后阐述它的工作过程。
关键词:软件工厂;产品线;供应链
1引言
软件工厂是指为了支持某种特
定应用程序的快速开发而配置的开
发环境。是模式、模型、框架和工
具的综合应用。
目前 ,软件开发一般采用人工
手动的方法,速度缓慢、代价高昂
而又极易出错,常常会生产出存在
大量缺陷的产品,在可用性、可靠
性、性能、安全以及其他服务质量
方面造成严重的问题。同时,软件
开发人员面临着快速发展的平台技
术、不断增长的用户需求、永无止
境地学习新技术、在旧的应用软件
中提取可用价值等压力,这就需要
一 种既为软件开发创造便利,又为
用户带来效益的方法。
软件工厂恰恰可以解决上述问
题。它使得软件生产条理化、系统
化,工厂式的管理体系确保软件产
品和产品加工过程规范、标准;使
项 目实施人员可以对零件 (中间
件、模块)进行自由组合;软件工
厂适应用户变化,解决了用户需求
不确定性问题;软件工厂最大可能
地利用已有资源,使得软件构件的
复用性得到提高,软件开发工作量
明显减少,软件成本大幅度降低;
48 l计算机教育 2006、12 l
软件工厂采取流水作业方式,为多
个项目并行实施创造了条件,软件
可以实现批量生产,软件工厂插件
式、组装式的软件生产方式开拓了
系统的扩展空间;利用软件工厂进
行软件开发,用户可以控制项目周
期、成本、质量,开发速度得到提
高 ,项 目效益和成功性得到保障 ;
软件工厂使得维护工作只需针对需
要维护的对象 (中间件、模块)展
开,工作量大大减少,软件产品全
寿命周期成本降低。
2 软件工厂涉及的基本概念
和技术
2.1 软件产品系列
软件产品系列是有相同特征的
一 组产品的集合。软件产品系列成
员具有很多共同特征,成员可以是
组件也可是整个产品。
系列成员可以根据个性问题特
征指定,根据个性解决方案来实
现,从而可以忽略共性,减小了解
决问题的范围和需要提供解决方案
的范 围。
2.2 软件产品线
由一个产品线体系结构、一个
可重用构件集合 (核心资源)和一个
源自共享资源的产品集合组成,是
组织一组相关软件产品开发的方式。
软件产品线系统获取生产系列
产品成员的知识,以可重用资产的
形式使用,例如组件、过程、工具,
然后用这些资产生产系列成员。产
品就像是家族成员一样重复使用需
求、体系结构、框架、组件、测试
和其他资产。软件产品线主要有以
下建立方式 :
(1)将现有产品演化为产品线。
(2)用软件产品线替代为现有
产品集 。
(3)全新软件产品线的演化。
(4)全新软件产品线的开发。
2.3 供应链
供应链是一个网络,以原始材
料为起点,将其转换为中间产品,
然后转换为最终的产品,以便通过
配送系统提供给客户。
供应商互相连接在一起,以便
使来自上游供应商的输出变成下游
供应商的输入。上游供应商可以向
下游供应商提供实现资产 (例如,
组件)或过程资产 (例如工具和过
程文档)。由于下游供应商生产的
产品要结合上游供应商提供的实现
资产,因此下游供应商具有较窄的
维普资讯
聿 , ,建 ,设 , ,彀 , ,碌 ,突
活动范围,并且生产的产品比上游
产品更大 。
软件工厂通过划分软件架构
(纵向或横向)以便将职责转移给
外部供应商来促进供应链的形成:
(1)纵向划分使软件工厂可以
装配由上游供应商提供的组件。例
如,实体框架来自独立软件供应商。
(2)横向划分可以分隔产品系列
和产品开发人员,使得产品开发人员
可以使用由处于供应链同一级别的外
部产品系列开发人员提供的生产资
产。这可以采取下列两种形式之一:
①产品系列开发被外包。例如,
开发软件工厂的产品系列开发人员
为外部的系统集成商工作,而不是
为独立软件供应商工作。他们为客
户组织中的开发人员生成软件工厂,
而不是为内部开发人员生成它们。
②产品开发被外包。例如,产
品开发人员为系统集成商工作,并
使用为独立软件供应商工作的产品
系列开发人员所开发的软件工厂。
产品开发人员可能位于境外成本较
低的劳务市场中。
3 软件工厂的工作过程
3.f 软件产品线开发
产品线开发的目标是为一个产
品系列提供生产资产。我们可以把
产品线开发认为是产品线的分析、
设计和实现。
产品线分析是决定产品线开发
什么产品。包括产品线定义、问题
和解决方案的领域范围、商业案例
分析和范围鉴定。其分析强调:
①通过捕获风险承担者的观点
来揭示产品线需求;
②通过系统的推理和分析、集
成功能需求和分功能需求来完成产
品线需求 ;
③产品线设计师对产品线需求
的可用性。
产品线设计决定产品线怎样开
发产品,其中包括产品线体系结构
开发和映射、产品开发过程的定义
和自动化。
产品线实现的目的是提供产品
线体系结构和需要的实现资产和过
程自动化需要的过程资产。
3.2 产品开发
3.2.1产品开发活动要素
产品开发活动取决于产品线范
围、核心资源库、产品计划和需求
的输出。
产品开发的输入有:
(1)特定产品的需求,通常由
包含在产品线范围内的一些产品描
述来表达;
(2)产品线范围,指明正在考虑
的产品是否适合包含在产品线中;
(3)构建产品所需的核心资源库;
(4)产品计划,指明核心资源
如何应用到产品的构建中。
本质上说,产品线是一组相关
产品的集合,但是,怎样实现却有
很大的不同,这取决于资源、产品
计划和组织环境。
3.2.2生成产品涉及到的活动
(1)问题分析:确定问题是否
位于软件工厂的范围内;
(2)产品规范:根据与产品要
求之间的差异来定义产品要求 ;
(3)产品设计:将要求方面的差
异映射到产品系列体系结构和产品开
发过程方面的差异,从而生成产品体
系结构和自定义的产品开发过程;
(4)产品实现:可以使用一系
列机制来开发实现,具体取决于差
异的范围,例如,属性表、配置组
件的向导和功能模型、装配组件并
生成其他人工制品 (例如,模型、代
码和配置文件)的可视模型,以及
完成框架扩展点或者创建、修改、
扩展或改装组件的源代码;
(5)产品部署:通过供应设备、
验证主机配置来创建或重用默认的
部署约束、逻辑主机配置以及可执
行文件到逻辑主机的映射,通过安
装和配置必需的资源来重新配置主
机,以及安装和配置所部署的可执
行文件;
(6)产品测试:创建或重用测
试资产 (包括测试用例、测试装置、
测试数据集和测试脚本)以及应用
仪表化和度量工具。
4 结论
软件工厂的出现使得软件开发
商可以通过可重复的开发过程快速
生产出效率高、成本低、质量好的
企业级软件。软件工厂所提供的软
件基础架构可以实现快捷的、生产
线级的软件生产能力。具体包括:
建立标准结构、软件中间件、开发
过程、实践、扩展的集成开发环境、
组件库和知识库以及重用策略等。
软件工厂是唯一一种在建立工
厂的同时生产产品的特殊 “工厂”。
这种方式可以大大降低现代软件开
发的成本和复杂性。墨
参考文献
【1]WWW.ccident.COiTI.廖铮,
组件技术造就软件工厂.2001年06
月28日.
f2】Kishore Channabasavaiah,
Kerrie Ho~ey,Edward M .Tuggle,
J r.迁移到面向服务的体系结构
第二部分.2003年 l2月.
1计算机教育 2006.12 l 49
维普资讯