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