敏捷方法在基于模型的软件开发项目中的应用

将敏捷方法(Agile)和基于模型的开发(MBD)结合能够有效提升软件开发的质量和效率。本文旨在介绍MBD在敏捷环境中的工作机制、实现方式以及面临的挑战。

本中文图描述了Scrum中的敏捷实践,包括流程和Sprint的内容。
图片:Agile Practices in Scrum: Process and Sprint

什么是敏捷软件开发?

传统的软件开发方法论是瀑布式(Waterfall)模型。然而,这一线性、自上而下的方法存在局限性。如今,在软件开发中应用敏捷方法来应对软件项目的动态性成为了推荐方法。

敏捷宣言中,敏捷的核心价值包括:

  • 个体与互动高于流程和工具
  • 可工作的软件高于详尽的文档
  • 客户合作高于合同谈判
  • 响应变化高于遵循计划

敏捷注重尽早、持续、频繁地交付有价值的软件产品,同时支持变化(即使是在开发流程的后期)。敏捷更注重工作流的简化和技术的卓越。对于工作人员,敏捷方法鼓励自我组织、个人激励和高效的团队协作。简而言之,敏捷方法强调人、协作、快速回应和灵活调整。

Scrum是软件开发中应用最广泛的敏捷框架。Scrum基于迭代开发,流程由团队量身定制,以及在流程框架内的持续改进。Scrum团队中主要的角色有:Scrum Master,负责监督整个流程; Product Owner,负责产品愿景、优先级和利益相关方的沟通;以及Developers,负责实现每个sprint中的目标。

Scrum的主要工件包括产品待办列表(Product Backlog)Sprint待办列表(Sprint Backlog)以及完成的定义(Definition of Done,DoD)。如下图所示,Scrum被构建为一个持续的开发过程,其中包括多个小版本的发布,中间穿插的短的和迭代式的开发周期,称为Sprints

一个Sprint通常持续2至4周,具体时长由团队根据需求决定。每一个Sprint始于计划会议,团队会从产品待办列表中选择用户故事,纳入Sprint待办列表。尽管“产品待办事项细化” 是持续进行的,但通常会在Sprint前或期间进行。每日站立会议(或称每日Scrum)帮助团队进行同步,讨论进程,并且解决阻碍。在每个Sprint结束时,团队会与利益相关方一起组织一次Sprint评审会议,来展示已完成的工作,随后进行Sprint回顾会议,以反思开发过程,分析下一轮迭代中可以改进的地方。

本中文图片描述了将敏捷原则应用在MBD工作流程中的优势。
图片:将敏捷原则应用在MBD工作流程中的优势

将敏捷与MBD结合:优势和挑战

基于模型的开发(MBD)被认为是最先进的软件开发方法之一。MBD遵循传统的软件开发V-模型(见下图),在开发高度复杂的项目时尤其实用。MBD原则强调迭代开发、使用统一建模语言、早期质量保证(质量保证活动前置),以及在整个开发生命周期中广泛应用自动化。

在文章“带您了解基于模型的开发(MBD)”中,来自MES模赛思的专家为您全面介绍了MBD方法论,欢迎阅读了解。

MBD将模型作为核心工件,优势显著,例如:

  • 提升团队内部及跨团队之间的沟通效率
  • 在早期通过仿真模拟验证模型的功能性
  • 质量保证活动的前置

值得注意的是,这些关键的MBD特点与敏捷核心原则高度契合,并且能够无缝集成,从而实现开发效率的最大化:

  • 跨职能团队通过模型实现更高效的沟通。与手写代码不同,不仅开发人员能理解模型,其他相关人员也能轻松理解
  • 借助仿真模拟和质量保证前置,实现尽早且频繁的测试
  • 自动化工具链和代码生成使可持续交付的软件成为可能
  • 通过应用建模规范和简化架构提升设计质量

如应用得当,MBD能够通过缩短回馈周期、提升模型设计和促进团队协作,高效实现敏捷交付。

基于上述优势,本节继续探究如何高效地在MBD测试流程中实现敏捷方法。

通过将验证与确认(V&V)流程前置,优化错误发现。如前所述,验证与确认活动通常被安排在V模型的右侧,接近软件最终交付的位置。但,这可能导致模型中的错误和缺陷发现过晚,且因反馈周期过长而导致效率低下。某些情况下,这种延迟可能导致团队无法交付真正符合客户需求的软件。为了更好地遵循敏捷原则,V&V活动应当被前置至V模型的左侧。这样既能保证更短的反馈周期,同时又可以支持可迭代的开发流程。开发人员同样能从持续反馈中受益,从结果中学习到更多,并迭代精进。

通过完成的定义(DoD)明确“完成的用户故事”的意义。增量式软件开发有助于实现客户不断变化的需求,同时要求在每一个增量中实现质量保证。应用DoD意味着需要根据建模规范验证模型质量,且通过对于模型和生成代码的动态测试确保功能的正确性自动化在此处十分重要——诸如MES Model Examiner (MXAM)这样的工具能够集成在流程中,有效减轻因质量保证活动造成的工作负担。

尽管敏捷方法在MBD中有诸多优势,仍有一些挑战存在。其中一个常见问题是:如何实现与多个开发人员在同一个模型中的协作。关键的解决方法在于:合理分解模型。通过应用库、引用模型以及子系统,团队能够简化并促进沟通。另一个挑战在于:难以在Git中直观地比较模型的差异(diff)。为了解决这个问题,开发人员可以通过专业的差异(diff)工具来实现模型变化的可视化,并判断适合合并的时机。

结论

传统的瀑布式软件开发流程存在诸多局限,这使得应用敏捷原则变得尤为重要,尤其是面对复杂且不断变化的开发环境时。作为最高效的软件开发方法之一,基于模型的开发(MBD)具有诸多优势。将敏捷原则融入MBD流程,不仅能帮助开发团队实现更短的反馈周期,更支持增量式开发,并最终交付更贴近客户不断变化需求的高质量最终产品。

来自MES模赛思的更多信息

在MES模赛思,我们的专家非常乐于与您分享敏捷方法MBD的相关知识!欢迎您查看以下资源,了解更多!

您有任何疑问吗?

本图片是Elena Bley的肖像照。
Elena Bley
Senior Manager Marketing & Webinars

*必须填写

What is the sum of 4 and 4?