最新 如果您在嵌入式开发的敏捷转型中需要帮助,您可以 联系我们!

敏捷开发

敏捷是创造和响应变化的能力,这是一种应对不确定和动荡的环境并最终取得成功的方法

敏捷开发是一种应对快速变化需求的一种开发模式。此模式中,自组织的跨功能团队在紧密的协作中发掘用户或顾客的需求,改良解决方案。此模式也强调提前交付与持续改进,并且鼓励快速与灵活的面对开发与变更

敏捷开发是一组框架和实践的总称。框架是敏捷方法论,是团队遵循敏捷价值观和原则的约定,最流行的方法论是 Scrum 。敏捷开发同时得到了许多 标准敏捷实践 的支持,涵盖了需求、设计、建模、编码、测试、计划、风险管理、流程、质量等

敏捷宣言

  • 个体互动 胜过 流程工具
  • 工作软件 胜过 详尽文档
  • 客户合作 胜过 合同谈判
  • 响应变化 胜过 遵循计划

敏捷原则

  • 1. 我们最优先要做的是通过尽早的、持续的交付有价值有价值的软件来使客户满意
  • 2. 即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势
  • 3. 经常性的交付可以工作的软件,交付的间隔可以从几周到几个月,交付的时间间隔越短越好
  • 4. 在整个项目开发期间,业务人员和开发人员必须天天都在一起工作
  • 5. 围绕被激励的人来构建项目。给他们提供所需要的环境和支持,并且信任他们能够完成工作
  • 6. 在团队内部,最具有效果并且富有效率的传递信息的方法,就是面对面的交谈
  • 7. 工作的软件是首要进度度量标准
  • 8. 敏捷开发需要保持稳定的开发速度
  • 9. 不断地关注优秀的技能和好的设计会增强敏捷能力
  • 10. 简约----是根本的
  • 11. 最好的构架、需求和设计出自与自组织的团队
  • 12. 每隔一定时间,团队会反省如何更有效地工作,并对自己的行为进行调整

嵌入式软件开发

嵌入式软件是指制作并集成到传统计算机以外的任何设备中的系统。它充当设备的中央处理单元,如果没有它,设备就毫无用处。本质上,嵌入式软件系统是执行特定功能的硬件和软件的组合。嵌入式系统中的应用程序称为嵌入式应用程序,其开发目的是利用硬件的功能并执行设备的预期功能

嵌入式系统中的硬件层

  • CPU:硬件层围绕CPU构建,CPU是主要的系统控制器
  • 用户界面:用户可以访问的功能、按钮和操作的集合
  • 存储器:包括随机存取存储器(RAM)和只读存储器(ROM)
  • 电源:系统通过电源插座或电池等多种方式充电
  • 计时器:测量时间
  • 通信端口:嵌入式系统与其他设备或系统之间的通信

嵌入式系统中的软件层

  • 为特定硬件编写的固件
  • 用于设置规则和管理系统资源的操作系统
  • 作为上下层软件之间提供通信的中介的中间件
  • 直接执行系统功能并与最终用户交互的应用软件

嵌入式敏捷开发实践

嵌入式开发常见的风险包括:需求变更、代码质量、学习债务、团队间沟通不畅、硬件延期、软件和硬件强依赖、后期软硬件整合风险等。虽然和纯软件开发相比,嵌入式开发对硬件依赖更大,而硬件开发有耗时长、变更成本高、技能更专业因而不易结对等特点,但是敏捷作为一种应对不确定和动荡的环境并最终取得成功的方法,其价值观、原则、方法论和具体实践还是为嵌入式开发提供了非常大的帮助。目前已经有 60+ 具体的技术实践和模式,以实现嵌入式开发的更高质量、快速交付、聚焦客户价值和应对需求的变更。这里分享其中的 8 个:

模块化

以用户故事的方式对业务进行“切片”,每个模块可以更早的独立进行硬件、固件和应用软件等的整合

学习左移

在转向硬件实现之前,开发和运行仿真测试,以便客户评估。通过模型更新快速响应不断变化的需求。

模拟测试

为了减少软件测试对硬件的依赖,模拟器、Mock、Stub都是常用的方式。如果项目允许,推荐实现模拟器


TDD

测试驱动开发,可以有效保证代码的质量。同时在任何可行的场合,和硬件一起测试,自动化是最佳选择

增量开发

增量(在 Scrum 方法中称为“冲刺”),通过对功能进行优先级排序,可以更早地降低风险并强调核心功能,不仅团队获得成就感,利益相关者也获得有形的价值,并且可以及时提供反馈

任务板

当冲刺开始时,工程师需要一个工具来在团队内沟通他们正在执行的任务、任务之间的依赖以及任务的状态。任务板是跟踪任务和传达状态的有效方法


每日站会

每天15分钟的团队沟通,可以快速发现问题,以便尽早解决问题

DoR

鉴于嵌入式开发中软件和硬件的依赖,任务开始之前的“就绪标准”可以帮助明确依赖,减少可能的等待


总结:敏捷应用在嵌入式开发中的优点

  • 更快的产品开发
  • 更高质量的交付成果
  • 持续降低风险
  • 加强开发团队内部以及与利益相关者的协作
  • 项目状态更加透明、准确

最新 如果您在嵌入式开发的敏捷转型中需要帮助,您可以 联系我们!