敏捷编程是否也适用于安全关键系统?

时间:2008-10-24 14:16:20

标签: agile real-time sdlc safety-critical

例如,为航空电子软件做这件事会非常危险吗?

注意,我并不完全理解敏捷。

10 个答案:

答案 0 :(得分:18)

我使用基本的瀑布流程从事空中交通管制系统,这些项目绝对可以从敏捷实践中受益。我不喜欢考虑有多少代码“偶然”工作,没有任何单元级自动回归测试。前面的要求是一件红色的鲱鱼。虽然航空航天系统可能已经尽可能接近预先设定的要求,但是仍然有关于模糊要求含义的争论,这些要求只有在系统出现时才会出现。应该在验收测试中。或者你有吞吐量问题,没有人考虑过因为大爆炸整合而在游戏后期出现的问题。测试优先,尖峰解决方案,持续集成,配对编程 - 我认为所有这些都会改进我所从事的项目。

更新:更不用说项目结束时“设计文件”多少次是一堆谎言,因为设计必然是在现实面前演变的。敏捷认识到紧急设计的事实,这在瀑布项目中与在任何其他项目中一样真实,而不是试图假装你可以在开始编写代码之前获得正确的设计。

答案 1 :(得分:9)

我在航空航天领域工作(特别是卫星),我们使用混合方法,因为我们面临两个不同的问题:现实要求和业务流程要求。

我们对航天器要求和关键部分使用瀑布式方法,因为对卫星的改变是缓慢而罕见的,并且在那里搞砸是不好的。

但是对于不断变化的业务流程,我们使用敏捷方法,因为他们如何飞行航天器因客户需求而不断变化。拧紧那里意味着在最坏的情况下,用户得到的效果并不理想。

答案 2 :(得分:5)

我在该领域(除航空系统用户之外)没有足够的经验来形成我自己真正独立的意见。然而,我一直在阅读关于具有最佳记录的关键系统的所有内容让我相信瀑布实际上是最好的方式。这是可能的,因为人们愿意允许额外的冷冻需求浪费,以促进安全。在这种情况下,我认为权衡有点不同。

答案 3 :(得分:5)

Determining the Applicability of Agile Practices to Mission and Life-Critical Systems

Agile Suitability Filters

简而言之,没有“敏捷”编程。有一套做法。有些人比其他人更好,但总的来说,任何项目都会受益于某些做法。

人们通常关注的最大领域是建模和架构。有很多团队使用敏捷实践 - 例如,我知道Fun3d team与NASA的成员 - 他们使用敏捷实践并处理航天飞机支持等事情。

有几个小组致力于此类工作 - 所以它是可能的。您只需要了解自己的风险 - 就像任何其他方法一样。

答案 4 :(得分:2)

敏捷应该是一个纪律严明的过程。无论您的工艺是什么,都应该预先解决这种情况下的安全问题。我不知道如何在迭代中交付,使用连续构建系统,计算程序员燃烧率,进行站立会议,让客户积极参与等会对安全产生负面影响。

答案 5 :(得分:2)

有很多考虑因素。首先是您的安全关键性。如果你的答案是“A”或“B”(并且真的是“A”)那么绝对不是。你不会以任何形式或形式做敏捷。 A级软件需要非常严格的编码标准,文档标准和过程标准(我的背景大约15年)。这包括:

  • 完全上/下可追溯性。
  • 全分行报道。
  • 完全多条件覆盖。
  • DO-178B详细说明的基本文件包括:SRD,SDD,SCI,SCMP,SDP,TQP,SCI ......

因此,您不仅需要认证您的代码,设计和要求,还必须认证工具集,编译器,自动测试设备等。

简而言之,这不是一个小小的壮举,也不会是一个小团队。同样,接口非常可靠,非常具体和静态。更改界面通常需要与3家以上的公司协调(机身制造,Vender 1与Vender 2交谈)。

老实说,12行代码更改可能会花费170,000美元。当然,500行代码更改将为190,000美元。简而言之,与A级代码相关的处理开销很大(B级代码更少,C级代表更少,D级代码更少),小型迭代代价非常高;即。获得充分燃料和飞行777来测试一个小小的变化需要很多钱。即使是大型商用飞机的系统测试实验室,其燃烧率也只有10,000美元/天。

例如: A级:HUD,推力换向器,动力系统,FADEC(发动机控制) B级:辅助切换逻辑,人声通信系统。 C级:飞行数据链接。 D级:飞行娱乐系统。

D级,也许是C级,可能是敏捷的候选人。

答案 6 :(得分:1)

我认为这取决于安全需求如何整合到流程中。如果它们是一组额外的测试,那就没有任何与敏捷编程相矛盾的了。我认为敏捷方法可以帮助您生成更安全的软件,因为敏捷项目往往比瀑布项目具有更高的质量。重要的是,您安装的附加质量保证也用于敏捷方法。

但如果将安全需求应用于构建过程,则可能与敏捷方法相矛盾。

答案 7 :(得分:1)

实际上,有一种称为V模型的瀑布模型的变体,例如IEC61508所偏爱。它是瀑布式的,但是提供了基本项目周期的重复迭代。在这种情况下重新迭代的主要目的是处理在过程的各个阶段检测到的问题。基本的想法是,在您遇到问题的后期,您需要进一步回过头来处理并检查更改的影响。

所以它不是真的敏捷,而是......: - )

答案 8 :(得分:0)

你可以使用敏捷方法,但第一遍必须包括你的安全和安全方面,或者至少提供它们,这样你就不会自己开枪并最终重写整个事情。但我同意Brian的观点,你可能最好使用瀑布方法进行此类项目。

答案 9 :(得分:0)

在EuroStar 2009大会上,Gittie Ottosen谈到了他们如何在公司里做敏捷。令人印象深刻的是,这家公司Systematic正在为航空工艺,军事等创建软件。他们遵守CMMI 5,ISO 9001和AQAP 150& 2110。所以我认为敏捷可以应用于具有高规则的系统。也许尝试查看该演示文稿,并尝试从他那里获取更多信息。