功能安全与敏捷开发

在《功能安全量产落地的三座大山》系列文章中,笔者曾预言敏捷开发将逐渐成为汽车软件开发的主流方式,也将逐渐成为功能安全软件开发的主流方式。本文就功能安全与敏捷开发的问题进行一些初步探讨,抛砖引玉,以飨读者。

长期以来,敏捷开发方式在互联网行业比较普遍,而在汽车行业基本上很少见到。主要是因为传统的汽车研发周期通常在2年以上,而且需求比较明确,在项目过程中很少变化,不需要快速迭代。

但到了现在,市场环境已经完全不同。产品需要快速交付,硬件需要提前做好预留,而软件则通过OTA不断升级优化,这在电动汽车领域尤为明显。功能安全作为产品的一部分,同样也需要快速交付。传统的“V”模型开发方式,由于太过死板,已经越来越难以适应需要快速交付的市场了。

敏捷开发简介

敏捷开发强调关注用户痛点,拥抱需求变化,通过快速迭代来持续交付软件。精简流程,精简文档,在团队内部通过高效沟通来实现分工与合作

敏捷开发的核心是迭代开发和增量开发,将一个大任务分解成多次的、渐进的小任务,每轮开发都会发布一个有效版本,每轮开发都会比上一轮增加更多的功能,逐步改进,最终形成完善的产品。敏捷开发的每一轮迭代都是一个完整的软件开发周期,包括需求分析、设计、编码、测试、评估等环节。

Scrum简介

敏捷开发的方法很多,国内最流行的应属Scrum。Scrum里的角色分工包括:

  • Product Owner:产品经理,负责把控项目走向及产品需求;

  • Scrum Master:技术经理,负责把控技术细节,推进项目;

  • Agile Team:具体的实施人员,包括开发、测试等。

在项目的实施过程中,由Product Owner负责维护Backlog(需求池),包括待开发任务列表和任务优先级;在定义好迭代周期(月/旬/周)后,本轮迭代(本次Sprint)需要实现的需求也就基本确定了;接下来由Product Owner和Scrum Master共同完成本轮迭代的需求分解,再组织全员进行讨论(Scrum Meeting),包括需求讨论、技术讨论以及完成任务所需时间讨论,Scrum Master在讨论过程中负责技术决策。

接下来,通过小纸条进行任务分工和开发计划制定,启动软件开发。

通过Story Board(故事板)进行任务管理。项目组每天召开短会(站会),更新任务状态,讨论技术问题和解决方案,评估计划完成情况,并通过Burn Down Chart(燃尽图)可视化的向所有人呈现目前的工作进展。周而复始,本轮迭代周期结束后,开始下一轮迭代。

虽然敏捷开发强调精简文档,但根据实践经验,关键性的技术文档仍然需要制定并维护:

  • 需求和方案:由Product Owner制定并维护;

  • 架构和接口:由Scrum Master制定并维护。

其它相对次要的文档,比如开发计划、详细设计、测试报告等一般不作要求。

基于Scrum的功能安全开发

由上面的介绍可知,敏捷开发不是消灭流程,而是精简流程;不是消灭文档,而是精简文档。需求仍然是开发的起点,测试也是不可或缺的环节。关键性的技术文档持续维护,省略掉的次要文档通过团队成员面对面沟通来弥补信息传递的缺失。在这些前提之下,基于Scrum的功能安全开发是完全可行的。

需要解决的关键问题点是:如何使得Scrum符合ISO26262标准的要求?笔者认为,主要包括流程和技术两个方面:

  • 流程方面:仍然可以通过Functional Safety Audit来保证。由于独立性要求,需要增加一名专职QA来实施检查,尤其是确认ISO 26262标准里要求采用的方法与技术是否落实到位;

  • 技术方面:如果Product Owner和Scrum Master对ISO 26262标准非常熟悉的话,他们完全可以在Scrum活动中将标准里的要求贯彻实施。当然由于标准的系统性和复杂性,更大的可能性还是需要一名专职功能安全工程师参与进来。他的工作内容主要包括:

  • 在Backlog(需求池)补充功能安全相关的内容并进行需求分解;

  • 在Scrum Meeting(全员讨论)时负责功能安全相关的技术决策;

  • 通过Story Board(故事板)管理功能安全相关的工作任务;

  • 制定并维护需求、方案、架构、接口等关键文档里的功能安全内容。

    某种程度上而言,他就是专门负责功能安全的Product Owner + Scrum Master。如果做不到,起码要做到Product Owner的程度。

从整体框架而言,只要运作得当,Agile and Safe是可能的,这也符合行业发展趋势。当然,敏捷开发主要适用于软件,对于系统开发和硬件开发,不能直接套用。另外,敏捷开发对项目组成员的素质要求很高,比如功能安全工程师,需要懂产品、懂技术、懂功能安全,还必须适应快速迭代、不断变化的项目节奏,随时做出应对和调整,这样才能保证敏捷开发的产品符合功能安全的要求。

The End

说明:

* 文章仅代表作者个人观点,不代表'仨人谈起'立场

(0)

相关推荐

  • “敏捷”适用于汽车软件开发吗?

    最近几年一直都有很多关于"敏捷"如何在汽车行业应用的讨论,看了一些文章,大都是说"敏捷"在IT行业如何的成功.提升了多少效率.帮助多少企业脱颖而出,因此汽车行业 ...

  • 《功能安全量产落地的三座大山》番外篇

    导读: 在<功能安全量产落地的三座大山>文章中,笔者曾提出功能安全必须与现有的产品研发相融合,才有落地的可能.因为大多数企业在导入功能安全之前,基本上都已经有自己的产品或者产品原型了.既然 ...

  • MVP方法:如何借助“敏捷开发”快速实现MVP?

    在敏捷实践体系中,迭代交付模式是敏捷开发的核心要素.敏捷开发方法有很多,Scrum提供了迭代管理和持续改进的框架,如图5-15所示.Scrum中的主要角色包括同项目经理类似的Scrum主管角色负责维护 ...

  • Scrum敏捷开发

    Scrum是敏捷开发的一种,是一种以人为本,迭代式增量软件开发的过程,以英式橄榄球争球队形(Scrum)为名,因此可以想象,整个团队是高效而富有激情的.以人为本,即Scrum开发特别强调沟通,要求团队 ...

  • 你大概走了假敏捷:《手绘敏捷宝典》在此,还不来收!

    本文由薄玉桴发表于云+社区专栏 今天你敏捷了没有?"敏捷"在互联网和软件开发领域从涓涓细流逐渐演变为行业潮流,往小了说是改进了开发方法,往大了说是革了瀑布流式的命--把产品开发引向 ...

  • 让开发者相见恨晚?!华为云软件开发云实现云上敏捷开发

    [51CTO.com原创稿件]弗吉尼亚鹿是现存最古老的一种鹿.这并不是偶然的,而是因为350万年来,这门优雅的物种延续了一种有效的生存办法--它们保存了灵活的本性和迅速适应环境的能力.这恰恰佐证了达尔 ...

  • 老曹眼中的敏捷开发

    世界上不存在这样一种方法: 只要套用,就可以写出完美的软件,无论使用的哪种设计模式: 但确实可能存在一种开发方式,可以帮助我们一步步构造出需要的软件和架构--这有可能就是敏捷开发. 相对于软件开发流程 ...

  • 又发现一款牛逼的 API 敏捷开发工具

    小白带你学编程 前天 来源:xie.infoq.cn/article/b5c3a339267e1351c6151b42a 初衷 跟大家分享一个牛逼的 API 敏捷开发工具,用尽可能简单的方式,完成尽可 ...

  • 如何用敏捷开发的12个原则,搞定数据治理?

    作者丨石秀峰    全文共6024个字,建议阅读需15分钟 任何一个企业提出数据要进行数据治理的时候都是满怀期望的,并且常常以为只要实施数据治理,就能实现供应链.生产.销售.物流.财务等业务的打通,就 ...

  • MVP方法:如何通过“敏捷开发”模式开发MVP产品?

    敏捷开发以用户的需求进化为核心,采用迭代.循序渐进的方法进行产品开发.在敏捷开发中,产品项目在构建初期被切分成多个子产品,各个子产品的成果都经过测试,具备可视.可集成和可运行使用的特征.换言之,就是把 ...

  • 我爱我家CIO刘东颖:敏捷开发已成为IT核心竞争力

    近日,我爱我家集团CIO刘东颖,受蜚声全球的美国IT研究与顾问咨询公司Gartner之邀,参加了"CIO 线上高管圆桌会议",并作为特邀嘉宾做主题分享."数字化转型作为集 ...

  • 云钉上的敏捷开发:两家世界500强重组后如何巧解数字化?

    ©深响原创 · 作者|周永亮 两周前,一份内部文件发到了山东能源每一位员工的邮箱中,6月7日开始,山东能源超过22万人全部上钉钉.同时,山东能源的信息技术公司也在考虑用上阿里云大飞天架构,实现全集团数 ...

  • 《敏捷开发项目管理实战应用》--边登峰老师

    <敏捷开发项目管理实战应用>[课程背景]在传统的瀑布式开发中,需求的渐进性与不确定性.市场的时刻变化.团队过度劳累及缺乏动力.沟通的失效.质量问题及技术债务的累积等等问题一直困扰着每个项目 ...