在整个软件开发生命周期和所有开发工件中定义和双向跟踪需求的能力是开发高保证软件不可或缺的方面。在许多情况下,这也是让监管机构认证代码的一部分。它是确保当今关键软件可靠、安全和可靠的关键要素。所有这三个方面,尤其是作为其他两个基础的安全性,必须从头开始构建到代码中。它变得过于复杂,无法像绷带一样固定。
为了完成所有这三个要素,开发人员必须能够清楚地说明系统的功能、安全和安保要求,然后能够验证软件和系统是否满足这些要求。他们需要需求可追溯性,包括将需求从其文档跟踪到执行它的代码的能力,以及从该代码追溯到需求的能力。
曾经有一段时间,可以通过走查等非正式方法来实现可追溯性,但如今的代码已经变得如此庞大和复杂——更不用说至关重要了——以至于这些方法根本不再值得信任。自动化工具既可以测试代码是否存在以执行既定要求,也可以确保此类代码不会受到细微编码错误的影响。第一步是建立双向需求可追溯性,可以跟踪从每个需求的代码到实现该功能的源代码,并且同样能够从该源代码追溯到需求。
通过验证实现软件质量目标所需的工具包括静态和动态分析。静态分析工具使用未编译的源代码来分析它的各种质量方面,例如清晰度、一致性和复杂性,并根据编码规则检查它以符合特定的安全或安全相关编码标准。此外,静态分析可用于建立数据和控制流的基础知识,这对于了解代码中的潜在弱点和漏洞至关重要。也就是说,谁或哪些人或软件实体可以访问哪些数据以及它们如何影响控制?这有助于确定给定的所需功能是否正在获得所需的访问权限,或者未经授权的实体是否也可能正在这样做。
另一方面,动态分析在编译和执行的代码上运行。动态分析利用静态分析过程中产生的信息对编译后的代码进行测试,并与源代码协调,自动生成一套测试。然后可以通过从需求文档派生的手动创建的测试来补充这些测试。这些可以包括功能安全测试,例如通过向设备提供错误数据来获得对设备的控制的模拟尝试。
覆盖分析提供了对代码执行了多少的度量,但更具体地说,通过图形可视化提供了分支/决策覆盖和过程/函数调用覆盖,从而更深入地了解代码对给定刺激的响应。这不仅会告诉您需求是否已得到解决,而且还会告诉您它们是否已正确执行而没有隐藏的危险。需求可追溯性与覆盖分析的结合还可能出现“死代码”或从未执行过的代码区域。这段代码可能会给您带来不便,但如果黑客能够获得访问权限并从中获得控制权,它也可能构成安全威胁。它是无法追踪的代码,因此应该被淘汰。
在整个生命周期和整个开发工件(包括执行代码)中定义和跟踪需求的能力是能够验证代码的不可或缺的方面,并且在许多情况下,对于获得监管机构认证的代码而言。在当今软件日益复杂的世界中,必须使用自动化工具来完成。需求跟踪既支持也支持其他测试活动以构成整体,但它代表了追求其他活动的基础,例如标准合规性、正确编码、单元系统和集成测试等。
审核编辑:郭婷
-
源代码
+关注
关注
96文章
2945浏览量
66793 -
代码
+关注
关注
30文章
4798浏览量
68715
发布评论请先 登录
相关推荐
评论