APP下载

软件工具鉴定要求及方法

2021-03-26汪智超

直升机技术 2021年1期
关键词:源代码级别生命周期

汪智超,周 媛,张 旸

(1.海军装备部驻武汉军事代表局,湖北 武汉 430000;2.海军航空大学,辽宁 葫芦岛 12500;3.海军研究院,北京 100000)

0 引言

在现代软件工程中,软件工具广泛应用于软件研制过程中,软件工具的使用可以帮助实现软件研制过程中的部分活动,包括开发、验证、管理和支持等活动。可靠的软件工具可以大大提高软件的开发效率,并且在正确使用相关工具的条件下,还有望提高软件的质量,减少人为错误。然而,如果由于软件工具本身存在错误(缺陷)或者未能正确地使用工具,导致研制出的软件出错,或者不能发现软件中的错误,则将带来严重的安全隐患;并且由于工具的功能日益强大,人工有时已经无法对工具的输出进行直接的判别。

民用飞机时刻以“安全性”为最高要求,为了保证达到预期的安全性水平,往往不惜牺牲效率和其他性能。就民机机载软件研制过程中使用的工具来说,风险也是显而易见的,主要原因在于:工具的输出中隐藏的错误往往更加分散,难以发现,难以通过手工的方式排查并加以修正;当同样的工具用于多个项目中时,同样的错误将被成批地复制。

为了规避“工具应用”给民机机载软件带来的风险,确保软件工具能够提供被其省略、减少或自动实现的活动的等效审定信用,在适航审定过程中,通常采用将机载软件的要求延伸到相关工具中的方法,这一方法也称为“工具鉴定”。在DO-178B/C《机载系统和设备合格审查中软件方面的考虑》描述了工具鉴定的相关考虑。为了更好地指导工具鉴定在机载软件研制过程中的实施,RTCA发布了DO-178C标准的补充文档之一DO-330《软件工具鉴定的考虑》,作为软件工具鉴定相关考虑的指南。本文结合DO-178B/C以及DO-330,对机载软件研制过程中的工具鉴定要求和方法进行研究探讨。

1 软件工具的定义和分类

软件工具是指用来帮助开发、转换、测试、分析或者修改其他程序及其数据或者文档的计算机程序或者功能部件。本文中的软件工具是指在机载软件研制过程中所使用到的工具软件。

软件工具广泛应用于机载软件的开发、验证和管理控制等多个领域和过程。根据软件工具支持的软件生命周期过程,可将软件工具分为软件开发工具、软件验证工具和其他工具:软件开发工具是指用于实现软件开发过程(包括软件需求过程、软件设计过程、软件编码过程、集成过程)活动的工具;软件验证工具是用于实现软件验证过程活动(主要包括评审、分析和测试)的工具;其他工具主要指软件生命周期中的管理和支持工具,用于实现软件开发过程和软件验证过程之外的过程的活动,例如,软件项目管理工具、问题报告管理工具、变更控制工具等。表1所示的是软件生命周期中可能会使用到的一些常见工具及其分类。

2 工具鉴定的目的和意义

2.1 工具鉴定的目的

如引言中所述,如果工具不当地执行了其预期的功能,工具中的错误可能会对软件功能造成负面的影响。为了规避这种风险并确保工具功能的完整性,应该使用正确合理的研制流程来开发和验证软件工具。

表1 软件生命周期中常见的工具

工具鉴定是工具获得合格审定信用必需的过程,其目的是建立对工具功能的信心,确保工具提供的置信度至少等同于被省略、缩减或者自动化的过程[1]。例如,在机载软件验证过程中,对于“源代码是否符合编码标准”这一目标(DO-178C附录A中的表A-5#4),可以使用人工评审的方式来验证,或者使用源代码静态分析工具来验证。若使用源代码静态分析工具并且相信该工具,即不再对该工具输出的验证结果进行验证,那么需要对该工具验证源代码是否符合编码标准的这一功能进行鉴定,以确保其提供的置信度至少等同于人工评审方式的置信度。

2.2 工具鉴定的意义

当软件生命周期中的某个过程活动通过工具来实现时,该过程活动的可信度可以通过对该工具的输出按照DO-178B/C的要求进行验证获得,也可以通过对该工具进行工具鉴定获得。通常,审定机构会有倾向性地建议使用鉴定的工具。

工具鉴定的意义是把重复性的验证活动转化为一次性的工具鉴定活动。通过工具鉴定,可获得该工具的审定信用,建立对该工具功能的信心。需要注意的是,工具鉴定获取的审定信用仅在获取批准的项目范围内有效,即工具鉴定是在其所在的机载软件合格审定过程中进行且有效的。

3 工具鉴定的适航要求

3.1 确定工具是否需要鉴定

软件生命周期中会使用到很多软件工具,但这不代表适航要求所有的软件工具都要进行工具鉴定。进行工具鉴定会带来人力和成本的消耗,因此需要判断哪种情况下什么样的工具需要进行工具鉴定,才能避免不必要的人力和成本消耗。DO-178B/C给出了工具鉴定的必要性的判断准则,可以通过评估以下两个问题来确定某个软件工具是否需要进行工具鉴定:

1) 工具是否省略、缩减或自动化了DO-178B/C中的过程活动;

2) 工具的输出是否由其它验证活动根据DO-178B/C软件验证过程的要求进行了验证。

确定工具是否需要鉴定的判定过程如图1[1]所示,项目中所有软件开发和验证工具都需要一一进行如下判定评估。需要注意的是,一个工具鉴定项目仅仅适用于一个特定系统的机载软件项目,使用工具的目的和鉴定的考虑应在支持该系统的软件合格审定计划(PSAC)中阐述。如果一个工具先前基于一个特定系统被鉴定过,当该工具应用于其他系统软件的研发过程时,它应该在新系统背景下被重新鉴定。

图1 确定工具是否需要鉴定的判定流程图

3.2 工具鉴定的实施

如果通过评估确定需要对某软件工具进行工具鉴定,依据DO-178C及DO-330标准,可通过下列步骤来实施工具鉴定:

1) 首先,评估工具对软件生命周期过程的影响,以确定工具鉴定的判定准则(准则1、2或3);

2) 其次,结合工具鉴定的判定准则和软件级别,确定工具鉴定级别(TQL1~TQL 5);

3) 最后,根据对应TQL的工具鉴定准则要求(依据DO-330工具鉴定的目标要求),进行工具鉴定。

需要注意的是,工具鉴定是伴随着特定的机载软件合格审定项目开展的。从上述工具鉴定的实施步骤中便可以发现,工具在具体项目中的使用情况不同,就可能会导致对软件生命周期过程的影响不同;工具所应用的特定项目的软件级别不同,对工具鉴定的级别也会造成影响。因此工具鉴定的审定属于机载软件审定过程的组成部分之一。

3.2.1 工具鉴定的判定准则

DO-178C根据工具对软件生命周期过程的影响不同,定义了3个工具鉴定的判定准则[2]:

准则1:工具的输出是机载软件的一部分,其使用结果可能会在机载软件中引入错误;

准则2:工具属于自动化验证过程的工具,使用它可能会导致机载软件中的一些错误没能被发现,并且它的输出证明消除或者减少了如下活动:工具自动化验证过程以外的验证过程活动,或对机载软件有影响的开发过程。

准则3:工具在其预期使用范围内未能检测到错误。

这3条准则是从上往下依次推进的,即对于某软件工具,应首先判断其使用的影响是否符合准则1,如不符合,再对比是否符合准则2,最后是准则3。

准则1适用于自动生成软件开发过程(输入/输出格式不限)的部分输出的工具,相当于DO-178B中的软件开发工具,其输出是机载软件的一部分,因而可能会对机载软件引入错误。

准则2和准则3适用于验证机载软件或其软件生命周期数据、分析计算软件特征等的所有工具。对应于DO-178B中的软件验证工具,其使用不会对机载软件引入错误,但可能会导致检测不到机载软件中的部分错误。

3.2.2 确定工具鉴定级别

确定需要鉴定的工具及其适用的判定准则后,需要结合机载软件的软件级别,确定其工具鉴定级别(TQL)[3]。不同的工具鉴定级别,对于工具鉴定准则要求的严格程度不同,需要实现的活动和达成的目标也有所不同。

工具鉴定级别(包括TQL-1到TQL-5)是基于工具使用在软件生命周期中潜在影响和机载软件级别所判定的。工具鉴定级别的划分同软件级别和判定准则之间的对应关系如表2所示:

表2 工具鉴定级别的划分

在表2中,TQL-1是要求最严格的级别,TQL-5是要求最不严格的级别。

3.2.3 工具鉴定需满足的鉴定准则要求

DO-330针对不同的工具鉴定级别,明确地定义了工具鉴定需要满足的工具鉴定准则要求和满足这些工具鉴定准则要求需要实施的活动和指导意见,以及用于证明满足这些工具鉴定准则要求的生命周期数据。

4 实际场景应用示例参考

本文前面章节中描述了软件生命周期中软件工具的工具鉴定判定准则,以及工具鉴定级别的划分。下面提供两个实际的场景分析示例,来明确对于工具鉴定适航要求的实践。

4.1 场景应用示例1

场景:在某项目中,软件级别为“C级”,其软件需求标准要求软件高级需求文字描述中的“shall”必须为斜体字。使用这样的工具:是word的插件,点击按钮,能够找到所有不是斜体字的“shall”。

分析:首先,该工具能够省略对高级需求在“shall”要求上面的评审过程,且它的输出并没有得到验证,所以可以判断该工具需要鉴定。根据本文第3.2.1节的内容进行判断,工具符合“准则3”,结合软件级别可以判断出该工具鉴定级别应该是“TQL-5”。因此需按照“TQL-5”级别要求进行工具的鉴定。

4.2 场景应用示例2

场景:在某项目中,软件级别为“B级”,其软件设计标准要求软件低级需求必须使用某形式化语言描述。使用了这样的工具:如果软件低级需求的描述符合该形式化语言的语法,它可以生成符合该低级需求的源代码程序;如果软件低级需求描述不符合该形式化语言的语法,它可以给出警告。

分析:这是一个综合工具,拥有两个不同的功能:检查语法和生成源代码。对于生成源代码的功能,自动化了源代码生成过程,所以可以判断该工具需要鉴定。根据本文第3.2.1节的内容进行判断,满足“准则1”,结合软件级别可以判断出该工具鉴定级别为“TQL-2”。对于检查语法的功能,省略了验证过程,如果软件验证过程中不对该工具检查语法功能的输出进行验证,则可以判断该工具需要鉴定,根据3.2.1节的内容判断,符合“准则3”,结合软件级别,可以判断该工具鉴定级别为“TQL-5”。

注:对于这种“综合工具”,包含了不同鉴定级别的多个功能,通常有两种鉴定方法:①以最高的鉴定级别来鉴定整个工具;②把工具的各个功能按照各自的鉴定级别分开进行鉴定。

5 工具鉴定数据的重用

工具鉴定依托一个特定的项目进行,因此在一个项目中经过鉴定的工具,在新的项目里使用时需要重新鉴定[4]。已鉴定工具的重用包括以下三种情况:未经修改的已鉴定工具,操作环境发生改变的已鉴定工具和有其它变更的已鉴定工具(如TQL级别提高,工具自身版本变化)。

1) 未经修改的已鉴定工具,需要同时满足如下条件:

①工具在其它项目中已经鉴定;

②本项目中的工具鉴定级别和以前的鉴定级别相同或更低;

③工具生命周期数据在上次鉴定后没有发生改变;

④工具运行环境与上次鉴定的项目相同;

⑤工具操作需求与上次鉴定的项目相同;

⑥申请人有权限访问上次鉴定的数据;

⑦使用上次鉴定数据支持的同一软件版本。

上述条件只要有一个不满足,则需要依据后两个方案执行。对于满足上述所有条件的,需要在《软件合格审定计划》或《软件工具鉴定计划》中列明重用鉴定数据的意图与合理性。

2) 运行环境发生改变的已鉴定工具,需要做如下的分析:

①工具验证环境相对新的运行环境来说是否具有代表性;

②《工具操作需求》中描述的工具运行环境的兼容性需求是否完整,是否适用于新的工具运行环境;

③工具安装到新的环境后是否依然符合预定的软件生命周期。

根据上述分析结果,明确定义需要(重复)执行的活动,并在《软件合格审定计划》和《软件工具鉴定计划》中描述上次鉴定以后发生的变化以及分析结果。

3) 有其它变更的工具,需要做如下的影响分析:

①工具操作需求;②工具需求;③工具设计描述;④工具源代码;⑤工具开发环境和开发过程。

根据上述影响分析,明确定义需要重新验证的内容。

6 结论

本文针对DO-178B/C和DO-330中有关软件工具鉴定的考虑,进行了深入研究和详细分解,明确了满足适航要求的软件工具鉴定实施方法与准则,并提供了应用示例参考和工具鉴定数据重用的方法,可为民机机载软件研制过程中的工具鉴定工作提供有效的指导。

猜你喜欢

源代码级别生命周期
动物的生命周期
人工智能下复杂软件源代码缺陷精准校正
全生命周期下呼吸机质量控制
痘痘分级别,轻重不一样
基于TXL的源代码插桩技术研究
从生命周期视角看并购保险
民用飞机全生命周期KPI的研究与应用
软件源代码非公知性司法鉴定方法探析
迈向UHD HDR的“水晶” 十万元级别的SIM2 CRYSTAL4 UHD
新年导购手册之两万元以下级别好物推荐