功能安全与敏捷开发

Posted 仨人谈起

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了功能安全与敏捷开发相关的知识,希望对你有一定的参考价值。

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


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


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

 

敏捷开发简介

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

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

 

Scrum简介

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

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

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

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


在项目的实施过程中,由Product Owner负责维护Backlog(需求池),包括待开发任务列表和任务优先级;在定义好迭代周期(月//周)后,本轮迭代(本次Sprint)需要实现的需求也就基本确定了;接下来由Product OwnerScrum 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 OwnerScrum MasterISO 26262标准非常熟悉的话,他们完全可以在Scrum活动中将标准里的要求贯彻实施。当然由于标准的系统性和复杂性,更大的可能性还是需要一名专职功能安全工程师参与进来。他的工作内容主要包括:

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

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

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

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

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


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

 

The End


说明:

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

* 欢迎大家踊跃投稿,集百家之所长,融百家之所思,扬百家之所名



推荐阅读:

作者简介

刘钊江,从2012年起在某轨道交通龙头企业担任功能安全工程师,先后负责多个最高SIL 4安全等级产品的开发和审核;从2017年起转战汽车行业,先后在某著名第三方机构和某大型主机厂任职,负责多个最高ASIL D安全等级产品的开发、培训、咨询和审核。


作者微信(添加请备注公司+姓名


以上是关于功能安全与敏捷开发的主要内容,如果未能解决你的问题,请参考以下文章

弄了套力软敏捷开发框架,却不知道能做啥?

敏捷开发模式下的SDL实践

敏捷软件开发与传统软件开发的对比

敏捷开发中的信息安全

敏捷开发过程管理平台的设计与应用

网安好播客|第4周赛况:敏捷开发与SDL多维视角网络安全