企业软件开发是一项复杂的工作,只有能够通过快速交付高质量软件来应对市场变化的公司才能在数字时代占据主导地位。
没有达到所需的业务敏捷性水平的灵丹妙药。它需要从传统的瀑布式思维方式和旧的思维方式到具有相关原则和实践的精益敏捷思维方式的转变。
扩展框架和DevOps方法可以为您转变IT组织以及其余业务提供所需的指导。规模化敏捷框架(SAFe)是最受欢迎的规模化方法,阐明了在数字时代成功所需的七个核心能力:组织敏捷性,精益投资组合管理,企业解决方案交付,敏捷产品交付,团队和技术敏捷性,持续性学习文化,并精益敏捷的领导能力。不过,仍然不能保证成功,因为需要认真执行,最好在SAFe计划顾问的帮助下才能实现。
领导参与度,一致性和系统思考是我最喜欢的成功转型要素。除了上述常见的成功因素外,框架还在不断发展。从业人员不断地将实地的学习和经验反馈回框架中。这里有两个有用的模型,以及有关如何将它们与Software Factory方法结合使用的建议,以改进您的DevOps实施并增强业务敏捷性。
DevOps演化模型
正如彼得·森格(Peter Senge)在他的*《第五纪律》中*所描述的那样,团队和组织需要一种共享的思维模型来产生对问题的共识,并合作找到一个好的解决方案。为此,我创建了所谓的DevOps演化模型。该模型是在我的培训课程中开发的,目的是解释人们如何在DevOps旅程中取得最佳进展。
该模型可以帮助您了解如何通过将未完成的工作向左移动来缩短交货时间并缩短反馈周期的长度。(未完成工作是在团队“完成”功能和故事之后发布解决方案所需的额外工作。未完成工作的典型示例是任何类型的测试,安全检查和审计,文档,开源法律评估和合规性检查。)
左移未完成的工作可使您的团队提供更快的反馈,从而提供更多可用的产品和更快的缺陷修复程序。反过来,这会加快流程并提高质量。减少或消除未完成的工作会导致发布更加频繁,并提高了对需求变更的响应速度。
图1:DevOps演化模型涵盖了DevOps旅程的四个主要阶段,并直观地展示了您的组织如何从不成熟的模型发展为更成熟的模型
CI/CD管道模型
持续集成/持续交付模型是从我进行的SAFe DevOps培训和后续研讨会中发展而来的。在流程级别对端到端管道进行建模。CI/CD管道建模深入研究了详细的CI/CD管道以及相关的构建和集成过程。以我的经验,复杂的企业设置中的许多流程问题是未成熟的CI/CD管道的直接结果。
要创建模型,您需要将所有利益相关者聚集在一起,以将整个管道流程(构建,集成,部署等)绘制为节点和边缘。节点表示组件,边缘表示组件之间的关系。虽然您可能认为您的团队已经知道他们的端到端管道,并且会发现这整个工作都没有用,但根据我的经验,从来没有这样。
CI/CD管道模型使您可以看到全局。在大型解决方案中,没有人能理解端到端CI/CD流程。通过召集合适的人员,您可以看到局部优化的次优结果,并专注于高效的端到端改进。
例如,团队经常声称他们每天要构建和部署几次,而实际上他们是在一遍又一遍地构建和部署相同的代码或组件。
CI/CD改进的关键问题不是管道运行的数量,而是团队从编写代码到到达阶段或生产所需的时间。这是您应为每个贡献要素提出的最重要问题。
由于缩短了交货时间,因此CI/CD建模可以提高质量。有缺陷的组件可能会对集成最终产品产生多米诺骨牌效应,因为依赖有缺陷组件的组件的开发会延迟。更糟糕的是,如果您的团队在开发过程的后期发现缺陷,则无法满足已落实的计划,或者您可能需要创建快捷方式或变通方法以保持计划。这降低了质量并增加了技术债务。
图2:这是具有超过1亿行代码的大型企业产品的CI/CD管道建模示例(单击放大)。每个橙色粘性标签代表一个大组件(节点),而蓝色箭头是描述构建,集成和部署步骤的边缘。粉色便签显示了周期时间,提前期和完整且准确的百分比(%C&A)。绿色粘滞便是分阶段部署的最终产品。注意,“ LST”代表“大型解决方案系列”,“ ART”代表“敏捷发布系列”。
软件工厂方法的企业优势
大型企业通常被视为没有DevOps的恐龙。从一开始,它们就失去了市场份额,而新兴市场的小型公司却在其DNA中拥有敏捷性和DevOps。但是,虽然确实可以使大型企业向前发展充满挑战,但是在SAFe的帮助下,您可以成功进行转型。您将能够以最小的努力来创建或更改开发价值流,因为人们已经具有相同的语言和思维定势,并且他们将能够快速调整策略以应对机遇或威胁。
软件工厂通过使团队能够更快地调整开发设置以适应不断变化的业务需求并缩短升级和启动时间,从而补充了此功能。此外,它有助于减轻团队的认知负担,并提高效率,促进左移并缩短交货时间。
构建企业软件通常需要的复杂工具链通常会导致使用它们的团队出现认知负担。考虑所需的管道改进和维护活动,例如跟上最新工具和技术的发展,以及升级构建服务器,操作系统,插件,测试自动化工具等。这就增加了认知负载释放截止日期的压力,以及与产品和领域专业知识以及新功能和错误修复保持一致的需求,这也就不足为奇了,许多CI/CD管道不稳定且不可靠。
“管道即服务”可以解决这些问题并提高生产率。专门的专家维护并不断改善多个产品团队可以使用的服务,从而减轻了开发团队的负担,使他们可以专注于在短时间内开发高质量产品的核心职责。
为了更快地响应开发组织中的变更,您需要对开发工具进行标准化。这样可以更好地集成工具,并使开发团队更轻松地开发其他产品,因为他们将熟悉其他产品组正在使用的所有工具和核心流程。一组标准化的工具为现代软件开发方法(例如共享代码所有权和内部开源)奠定了基础。
使用Software Factory方法对工具进行标准化可以极大地减少许可和维护成本,同时还可以减少工具之间所需的集成和同步的次数。
如果您拥有大量的工具,则可能有很多不可靠的,半功能的集成以及昂贵的维护工作。这意味着不必要的高昂总拥有成本,繁忙的工作人员以及不可靠的开发数据流。
但是标准化需要谨慎的平衡。我的建议是尽可能地标准化,同时提供尽可能多的自由。并非所有工具和过程都是标准化的候选对象。软件工厂通常从小规模开始,然后根据采用和用户反馈逐步发展。图3显示了一个经过验证的带有核心元素的Software Factory架构。
图3:这是Micro Focus的Software Factory架构/蓝图,它显示了功能完善的软件工厂的主要组件和类别(单击放大)。
如何开始
掌握企业软件和网络物理系统是一项复杂的工作,没有简单的解决方案或灵丹妙药。Scaled Agile Framework和其他一些框架可以为您的数字化转型之旅提供指导和坚实的基础。
先进的DevOps模型与Software Factory方法相结合,可以增强和补充这些产品,从而使您的组织可以在数字时代蓬勃发展。