本文是其中的一部分嵌入式软件系列:ADA为嵌入式C开发人员
从C到ADA的迁移的技术益处通常是相对简单的表明。希望这篇文章系列提供了良好的基础。但是,当面对必须进行实际的业务决策时,需要考虑其他考虑因素,例如投资回报,解决方案的额期,工具支持等。本节将涵盖一些通常的问题并提供元素答案。
从C到Ada的转换的预期投资回报率是多少?
从定性的角度来看,可以在软件开发生命周期中的不同时间找到缺陷:
- 在开发人员的桌子上
- 在组件测试
- 在整合测试期间
- 部署后
- 在维护期间
从研究中的数字有很大差异很大,而这些阶段中的每个阶段的相对成本也有很大差异,但它们之间存在明确的顺序。例如,在开发时发现的缺陷比在集成时间内比如发现的缺陷比发现的缺陷更便宜,这可能涉及昂贵的调试会话并减慢整个系统接受。
ADA和Spark的整体目的是尽可能地将缺陷检测到开发人员的桌子上;至少适用于可以在该级别识别的所有缺陷。虽然由于所有额外的保障措施可能需要更多的努力,但这应该具有显着和积极的影响,并帮助整体控制成本。这可能转化为高度业务的确切值。
从定量的角度来看,两项研究已经差不多25年分开并提供了类似的见解:
- Rational Software在1995年发现,用Ada开发软件的总成本是用C开发软件成本的一半。
- VDC在2018年进行了一项研究,发现与C over C开发的成本节约范围从储蓄中的6%达到38%。
从一个定性的角度来看,特别是在正式证明的角度方面,两位研究人员在2017年开始了一个有趣的演示。他们试图在同一段代码上申请正式证明,在一端的ADA / Spark中开发而C / FRAMA-C另一个。它们的结果表明,ADA / Spark技术确实更有利于正式方法。
ADA工具集是否完成?
一种语言本身的使用很少用于开发安全关键软件。需要一个完整的工具集来伴随开发过程,尤其是版本,测试,静态分析等工具。
AdaCore通过其核心或附加包提供了许多这样的工具。它们包括(截至2019年):
- IDE(蚊工作室)
- Eclipse插件(GNATBench)
- 调试器(GDB)
- 测试工具(GNATTEST)
- 结构代码覆盖工具(GNATCOVERAGE)
- 公制计算工具(GNATmetric)
- 编码标准检查程序(GNATcheck)
- 静态分析工具(Codepeer,Spark Pro)
- Simulink代码生成器(QGen)
- ADA解析器开发自定义工具(LibadaLang)
但是,ADA是一种国际标准化的语言,许多公司都提供第三方解决方案来完成该工具集。总的来说,语言可以是,并且与其等效C对应的工具一起使用。
哪里可以找到Ada或SPARK开发人员?
从选择ADA和Spark的边缘的团队中的一个常见问题是如何管理开发人员团队的增长和营业额。虽然ADA和Spark是在全球范围内越来越多的大学教授的,但雇用新员工与先前的ADA经验仍然有挑战性。
幸运的是,ADA的基本语义非常接近C / C ++的语义。因此,良好的嵌入式软件开发人员应该能够相对容易地学习。本文系列是可用于开始的资源。在线培训材料也可提供,以及现场的培训。
一般来说,让一个工程师在Ada和SPARK中运行不需要花费超过几周的时间。
如何在现有代码库中介绍ADA和Spark?
在将ADA和Spark引入项目或团队时,最常见的情况是在预先存在的C代码库中进行,如果不是数百万代码,则可以分布数十万次数。当然,将该软件重写为ADA或Spark,而不是实用和适得其反。
大多数团队要么选择值得特别注意的一小段现有代码,要么选择需要开发的新模块,然后集中精力于此。开发这个模块或应用程序的一部分也将有助于开发用于特定项目和公司的编码模式。这种工作通常需要一些人专注于几千行代码。生成的代码可以链接到C应用程序的其余部分。从那里开始,新建立的实践及其好处可以慢慢地传播到环境的其他部分。
在Ada和SPARK中建立这个初始核心至关重要。虽然学习这门语言并不是一件特别困难的任务,但要充分运用它可能需要一些专业知识。一种帮助加速这一初始过程的可能性是使用AdaCore指导服务。
从中阅读更多嵌入式软件系列:ADA为嵌入式C开发人员