> >网站资源
..> >图书馆:TechXchange
. . . .>> TechXchange:嵌入式软件
. . . . . .>>主题:Ada和SPARK
这种文件类型包括高分辨率的图形和原理图(如适用)。
交付一个能够完成设计任务的应用程序是大多数开发人员的目标。实现这一目标的一种方法是使用增强开发过程的工具。使用MISRA编码标准是改进C/ c++开发的一种方法。另一种方法是使用火花, Ada的一个子集,专为安全的应用程序而设计。
当然,使用一种新的编程工具并不是一件轻松的事情。我最近担任的评委之一Adacore的“与艾达一起创造”比赛。法国Issy Les Moulineaux公司的Stephane Carrez凭借一款名为EtherScope的网络流量监控工具获得了冠军。第二名是来自奥斯汀的德国人里维拉(German Rivera),他为NXP杯赛车开发了一款自动驾驶汽车框架。但我想强调的是来自安大略省伦敦的肖恩·诺克(Shawn Nock)获得第三名的反馈,他使用Ada开发了一款蓝牙信标“iBeacon”。
原因是Shawn是一个C程序员,在比赛之前没有使用过Ada。他在博客中写道:“用Ada(一种我不太了解的语言)开发beacon所花的时间与用C开发类似功能所花的时间大致相同,而且我对Ada代码更有信心。”这可以归结为几个简单的因素:
“我觉得艾达的语法很直观。我已经用Python做了大量的工作,所以我发现块表示法和缩进马上就很舒服。与Python不同,Ada保留了分号作为语句分隔符,[使]我感到亲切和模糊。
“我发现在规范文件中起草接口很自然。在C语言中,我养成了在. C文件中同时编写代码和接口的坏习惯,当我的编译器报错时,还会在. C文件中编写头文件。我本可以在C语言中做得更好,但切换到Ada让我清楚地看到了优势。
“更固执的编译器——我已经在我的VCS提交钩子中运行外部测试器和静态分析工具很久了,但是写C有90种方法和上千种工具……让编译器在编译时表达强烈的意见并执行它们可以节省我的时间。从语法检查到样式检查;我发现自己不需要花时间寻找合适的工具来开始编写像样的代码。我认为,在团队中工作时,同意(并执行)一组编译器标志比同意一整个工具生态系统更容易。
“gnat -它是GCC的一部分。这可能是一些嵌入式工程师的缺点…但我喜欢和GCC一起工作。它是一致的,几乎可以在每个平台上使用,维护良好,而且是免费的。使用GNAT,我只需要在我的开发生态系统中添加一个工具,就可以开始使用Ada。
“我没有花任何时间在调试器上。一旦我说服GNAT我的意图在一些相当强烈的编译器标志(-gnatg -gnatp -gnatn2 -gnatwa -gnatQ -gnatw.X);我的软件倾向于Just Work。”
大多数项目的目标是微控制器,比如意法半导体的32位STM32包括Cortex-M4和Cortex-M7解决方案。
这种类型的反馈并不局限于竞争中的个体。我最近主持了Adacore的网络研讨会,“在不倾家荡产的情况下构建高可靠性软件,”在那里,Protean Codes的Rod Chapman谈到了许多使用SPARK的项目。底线是,提出的安全关键项目能够以更少的错误按时完成,从而减少所需的测试量。这降低了项目成本。
静态和动态分析工具被用于C、c++和Java应用程序,以提高代码质量。不幸的是,它们比不上SPARK。出于许多原因,C和c++仍将是嵌入式应用程序的主要工具,但如果您正在寻找这种优势,SPARK可能值得一看。
这种文件类型包括高分辨率的图形和原理图(如适用)。
> >网站资源
..> >图书馆:TechXchange
. . . .>> TechXchange:嵌入式软件
. . . . . .>>主题:Ada和SPARK