目录 |
软件工厂是软件生产实现社会化、标准化的一种组织形式,是能按需要形成批量生产软件产品的场所。
1.软件产品线开发
产品线开发的目标是为一个产品系列提供生产资产。我们可以把产品线开发认为是产品线的分析、设计和实现。
产品线分析是决定产品线开发什么产品。包括产品线定义、问题和解决方案的领域范围、商业案例分析和范围鉴定。其分析强调:
①通过捕获风险承担者的观点来揭示产品线需求;
②通过系统的推理和分析、集成功能需求和分功能需求来完成产品线需求;
③产品线设计师对产品线需求的可用性。
产品线设计决定产品线怎样开发产品,其中包括产品线体系结构开发和映射、产品开发过程的定义和自动化。
产品线实现的目的是提供产品线体系结构和需要的实现资产和过程自动化需要的过程资产。
2.产品开发
(1)产品开发活动要素
产品开发活动取决于产品线范围、核心资源库、产品计划和需求的输出。
产品开发的输入有:
1)特定产品的需求,通常由包含在产品线范围内的一些产品描述来表达;
2)产品线范围,指明正在考虑的产品是否适合包含在产品线中;
3)构建产品所需的核心资源库;
4)产品计划,指明核心资源如何应用到产品的构建中。
本质上说,产品线是一组相关产品的集合,但是,怎样实现却有很大的不同,这取决于资源、产品计划和组织环境。
(2)生成产品涉及到的活动
1)问题分析:确定问题是否位于软件工厂的范围内;
2)产品规范:根据与产品要求之间的差异来定义产品要求;
3)产品设计:将要求方面的差异映射到产品系列体系结构和产品开发过程方面的差异,从而生成产品体系结构和自定义的产品开发过程;
4)产品实现:可以使用一系列机制来开发实现,具体取决于差异的范围,例如,属性表、配置组件的向导和功能模型、装配组件并生成其他人工制品(例如,模型、代码和配置文件)的可视模型,以及完成框架扩展点或者创建、修改、扩展或改装组件的源代码;
5)产品部署:通过供应设备、验证主机配置来创建或重用默认的部署约束、逻辑主机配置以及可执行文件到逻辑主机的映射,通过安装和配置必需的资源来重新配置主机,以及安装和配置所部署的可执行文件;
6)产品测试:创建或重用测试资产(包括测试用例、测试装置、测试数据集和测试脚本)以及应用仪表化和度量工具。
1.软件产品系列
软件产品系列是有相同特征的一组产品的集合。软件产品系列成员具有很多共同特征,成员可以是组件也可是整个产品。
系列成员可以根据个性问题特征指定,根据个性解决方案来实现,从而可以忽略共性,减小了解决问题的范围和需要提供解决方案的范围。
2.软件产品线
由一个产品线体系结构、一个可重用构件集合(核心资源)和一个源自共享资源的产品集合组成,是组织一组相关软件产品开发的方式。软件产品线系统获取生产系列产品成员的知识,以可重用资产的形式使用,例如组件、过程、工具,然后用这些资产生产系列成员。产品就像是家族成员一样重复使用需求、体系结构、框架、组件、测试和其他资产。软件产品线主要有以下建立方式:
(1)将现有产品演化为产品线。
(2)用软件产品线替代为现有产品集。
(3)全新软件产品线的演化。
(4)全新软件产品线的开发。
3.供应链
供应链是一个网络,以原始材料为起点,将其转换为中间产品,然后转换为最终的产品,以便通过配送系统提供给客户。
供应商互相连接在一起,以便使来自上游供应商的输出变成下游供应商的输入。上游供应商可以向下游供应商提供实现资产(例如,组件)或过程资产(例如工具和过程文档)。由于下游供应商生产的产品要结合上游供应商提供的实现资产,因此下游供应商具有较窄的活动范围,并且生产的产品比上游产品更大。
软件工厂通过划分软件架构(纵向或横向)以便将职责转移给外部供应商来促进供应链的形成:
(1)纵向划分使软件工厂可以装配由上游供应商提供的组件。例如,实体框架来自独立软件供应商。
(2)横向划分可以分隔产品系列和产品开发人员,使得产品开发人员可以使用由处于供应链同一级别的外部产品系列开发人员提供的生产资产。这可以采取下列两种形式之一:
①产品系列开发被外包。例如,开发软件工厂的产品系列开发人员为外部的系统集成商工作,而不是为独立软件供应商工作。他们为客户组织中的开发人员生成软件工厂,而不是为内部开发人员生成它们。
②产品开发被外包。例如,产品开发人员为系统集成商工作,并使用为独立软件供应商工作的产品系列开发人员所开发的软件工厂。产品开发人员可能位于境外成本较低的劳务市场中。