假设您是一个软件开发组织的经理,该组织在一个特定的应用领域销售许多产品。每个产品都是一个类似但独立运行的项目的权限范围。一些开发人员已经开始非正式地共享公共代码。虽然这有助于更快地发布新产品,但它对维护没有任何帮助,因为副本在它们自己的进化路径上偏离了。这消耗了惊人数量的资源。您已经了解到一些组织使用软件产品线(SPL)方法在几天或几周内生产出新产品,并将其作为一个系列进行改进,而您的公司则需要数月或数年。当你开始思考如何将你的公司从计件工作转变成一个平稳运行的软件工厂时,你就会开始理解这种变化的复杂性。要真正改变您的公司生产软件的方式,您必须进行业务、技术、组织、程序、财务和人员方面的改变。而且,实际上,你只有一次机会来纠正它,错误的开始将是昂贵的,并破坏客户的信心。你会想,“我怎么才能从这里到达那里呢?” Having a roadmap to product line adoption that lays out the necessary decisions and actions would be invaluable. Such a roadmap is presented in this article.
SPL组织包含核心资产开发功能和产品开发功能,所有这些都由管理功能协调。这三个功能是相互支持的,相互提供输入和反馈。核心资产——整个产品家族的公共构件作为整个SPL的公共资源进行维护,并且可以以预定义的方式进行定制,以满足单个产品的需求。核心资产包括计划、需求、设计、文档和测试,以及代码。除了生产产品之外,产品创建还会产生关于核心资产的质量和有用性的反馈。在产品线中构建哪些产品是一个基于现有核心资产提供的功能和市场需求的管理决策。这一决定伴随着必要的管理监督,以确保核心资产在产品开发中真正有用,并且这些产品是通过忠实地使用它们而构建的。
成功地参加SPL所需的实践是相当众所周知的;SEI的软件产品线实践框架(参见www.sei.cmu.edu/productlines)描述了其中的29个。这些实践对于任何软件开发活动来说都是熟悉的,但在使用SPLs时就不同了。例如,配置管理是一种标准的软件开发实践,但它在SPL设置中承担了额外的复杂性——产品的版本现在必须与它们使用的核心资产的版本绑定在一起。
了解这些做法是一回事;将它们顺利地相互配合使用是另一个问题。产品线实践模式[3.展示了如何结合和协调实践领域以实现有用的结果,例如建立组织的核心资产开发功能。设计模式组织软件元素,而产品线实践模式组织组织的活动。这些模式之一——采用工厂——在发起(也就是说,采用)SPL开发策略所需的许多实践之间绘制出广泛的协调关系[7].采用工厂模式作为产品线采用的路线图。
采用工厂模式展示了如何执行产品线策略。中直观命名的子模式集捕获了解决方案图1以及它们之间的关系。图中的箭头表示信息流和活动之间的重点转移。
一个采用组织的过程大致经历三个阶段,从第一阶段的开办活动到第三阶段的产品生产图1通过垂直虚线。水平虚线划分了模式的各个部分,这些部分标识了广泛的焦点领域:组织、过程和产品。
下面一行的三个子模式表示组织的状态。冷启动子模式在产品线尚未启动时使用。In Motion子模式建立在冷启动子模式应用期间建立的实践基础上。当产品线运行并需要优化时,将使用Monitor子模式。图2是模式的“实践区域视图”,显示构成每个单元内子模式的实践区域。
使用采用工厂作为路线图,通过按照区域之间的“通知”关系绘制并应用实践,可以让经理回答“下一步我需要关注什么?”但是,不同于通过状态机的路径,任何位置都只是表示强调。所有的子模式始终都在发挥作用,因为它们指出了最终必须成为产品线方法一部分的实践。
现在仍然有一个普遍的假设,即产品线只涉及一种新的技术方法。大多数产品系列的采用者极大地低估了成功所需的管理承诺和参与。刚接触产品线的组织通常会遭受不适当的组织结构和流程、缺乏培训、资源不足和不适当,以及缺乏为产品线采用精心构建的计划。工程组织倾向于在没有定义范围或业务案例的情况下直接进入体系结构和组件开发活动。挫折和白费力气的结果。
我们与多个领域的产品线采用者的工作证实了这一点。我们已经看到了产品线采用失败的案例,我们的路线图本可以提供必要的指导[4]以及一些组织明显受益于“收养工厂”的案例[5,6].
采用工厂规划出需要发生的技术和业务活动的组合。它恰当地引导组织在开发代码之前建立其产品线环境,并在尝试操作产品线之前建立真正的生产能力。
为了说明作为产品线采用路线图的“采用工厂”,我们根据实际经验给出了一个假设的新公司的例子。
我们假设的公司Arcade Game Maker (AGM)已经运营多年。它生产一系列电子游戏,这些游戏拥有许多相同的功能,但在运行的平台以及游戏的规则和元素方面却各不相同。公司的管理层知道在构建新产品时使用现有的工件。然而,这些工件几乎总是被复制和更改以适应每个新产品,而不是系统地、有策略地发展以支持整个产品家族。随着时间的推移,交错的交付时间表、平台差异和其他问题已经导致了令人困惑的工件阵列。维护变得极其困难,上市时间也落后于预期。AGM决定采用产品线策略来补救这些问题,但是需要在组织和规划许多成功产品线所需的活动方面提供帮助,并决定使用采用工厂作为其采用路线图。
建立上下文。AGM首先应用冷启动子模式,其实践领域列在图2中的建立上下文/组织单元中。根据“启动和制度化”实践领域的建议,AGM组成了一个工作组,负责起草最初的采用计划和管理最初的一套产品的生产。该组织使用Cold Start中的其他实践来帮助他们资助和计划组织的工作。AGM决定最初资助两项工作:一个是从现有工件中提取核心资产,并对其进行重新设计,使其在AGM的产品组合中有用的挖掘项目,以及一个从这些核心资产中产生一小部分产品的试点项目。这两个项目都是由AGM研究部门资助的。
接下来,AGM经理将专注于采用工厂的产品焦点领域,并遵循“要构建什么”子模式,其中包括实践领域,如“构建业务用例”和“确定范围”,以帮助确定要构建什么产品。AGM使用特征建模[1和经济模型[2]来选择要包括在产品线中的产品。在业务案例中,AGM指定了业务目标,包括将产品创意到市场的时间缩短25%,并将提供给客户的可选产品功能数量增加50%。根据特征模型中定义的产品之间的共性,业务案例预测在生产出三个产品后会有正的投资回报。
股东大会的业务案例也指出了几个风险。例如,改变可能会遇到阻力。AGM的产品开发项目一直被鼓励相互竞争,但产品线战略需要他们合作。AGM对其最近的工艺评估报告的审查确定了工艺规程问题,这些问题也可能是其产品线采用工作的风险。
这些风险再次在冷启动子模式中提供给“组织风险管理”活动。为了降低这些风险,股东大会必须重新定位其业务实践。按照“构建组织”实践领域,AGM指定一个产品线经理来管理工作,并为创建核心资产和构建产品定义职位。“操作”实践区域指导AGM创建一个指定产品线角色、职责和沟通路径的操作概念文档。
建立生产能力。一旦“采用工厂”的“建立环境”阶段所确定的活动稳步开展,AGM就开始下一阶段建立其生产能力。根据产品部件和装配线子模式及其相关实践领域的信息,AGM定义了规定如何构建产品的过程;这些过程最终形成一个生产计划,详细解释了核心资产将如何用于构建产品。
产品部件子模式指定导致原材料和产品部件生产产品的活动。这些零件可以用多种方法获得。AGM将结合使用开源组件、对挖掘项目指定的现有代码进行逆向工程,以及新开发的组件。产品部分包括熟悉的活动,如需求工程和体系结构定义;然而,这些活动必须一般化,以适应产品线中的所有产品,并为预期的变化提供机制。例如,需求模型包含了AGM整个产品范围的用例,但是它的结构是通过抽象用例来识别可变点。
操作生产线。一旦建立了生产能力,采用工厂模式将AGM引入到第三个阶段,即操作产品线。使用生产计划和其他核心资产,每个单独的产品开发项目都将使用product Builder子模式经历一个微型版本的开发过程。产品的需求是通过解析产品线需求模型中指定的选择来确定的。其他产品线的核心资产,比如软件架构,是为使用预先计划的变化机制构建的特定产品量身定制的。
在组织上,AGM继续寻找方法来评估和改进其业务目标的性能,而Monitor子模式接替了In Motion的工作。然后,AGM将通过路线图的另一个过程,修改和加强其产品线实践,以走向完全制度化。
SPL战略已经为许多采用者带来了明显的好处,缩短了上市时间,降低了成本,提高了灵活性,提高了质量,提高了生产率。从方法中获得最大的收益需要组织的战略承诺和一些初始投资,这取决于产品线的目标和满足它们所需的实践。将产品线实践引入组织需要计划和协调许多业务和技术活动。我们与客户使用采用工厂模式的经验表明,它是一个很有用的工具,可以回答那些想要将生产线方法带到他们的组织中的经理们最常想到的问题:“我如何从这里到达那里?”
1.特征模型、语法和命题公式。在软件产品线会议论文集(SPLC)2005年9月。
2.Böckle, G., Clements, P., McGregor, J.D., Muthig, D.和Schmid, K.计算软件产品线的投资回报率。IEEE软件21, 3(2004年5月- 6月),2331。
3.P.克莱门茨和L.诺斯罗普。软件产品线:实践和模式.addison - wesley, 2002年。
4.Donohoe, P., Jones, L.和Northrop, L.检查产品线准备:SEI产品线技术探针的经验。在第九届国际软件产品线大会论文集(2005年9月,法国雷恩)。
5.Fritsch, C.和Ferber, S.正确的开始:应用构建模式的内容。在第九届国际软件产品线大会论文集(2005年9月,法国雷恩)。
6.Morton, C.和Tharp, H. SPL在NCR的采用。在第九届国际软件产品线大会论文集(2005年9月,法国雷恩)。
©2006 acm 0001-0782/06/1200 $5.00
允许制作本作品的全部或部分的数字或硬拷贝用于个人或课堂使用,但前提是该拷贝不是为了盈利或商业利益而制作或分发,并且该拷贝在第一页上带有本通知和完整引用。以其他方式复制、重新发布、在服务器上发布或重新分发到列表,需要事先获得特定的许可和/或付费。
数字图书馆是由计算机协会出版的。版权所有©2006 ACM有限公司
没有发现记录