• <tr id='btzVZe'><strong id='btzVZe'></strong><small id='btzVZe'></small><button id='btzVZe'></button><li id='btzVZe'><noscript id='btzVZe'><big id='btzVZe'></big><dt id='btzVZe'></dt></noscript></li></tr><ol id='btzVZe'><option id='btzVZe'><table id='btzVZe'><blockquote id='btzVZe'><tbody id='btzVZe'></tbody></blockquote></table></option></ol><u id='btzVZe'></u><kbd id='btzVZe'><kbd id='btzVZe'></kbd></kbd>

    <code id='btzVZe'><strong id='btzVZe'></strong></code>

    <fieldset id='btzVZe'></fieldset>
          <span id='btzVZe'></span>

              <ins id='btzVZe'></ins>
              <acronym id='btzVZe'><em id='btzVZe'></em><td id='btzVZe'><div id='btzVZe'></div></td></acronym><address id='btzVZe'><big id='btzVZe'><big id='btzVZe'></big><legend id='btzVZe'></legend></big></address>

              <i id='btzVZe'><div id='btzVZe'><ins id='btzVZe'></ins></div></i>
              <i id='btzVZe'></i>
            1. <dl id='btzVZe'></dl>
              1. <blockquote id='btzVZe'><q id='btzVZe'><noscript id='btzVZe'></noscript><dt id='btzVZe'></dt></q></blockquote><noframes id='btzVZe'><i id='btzVZe'></i>

                SSI:从需求到代码的持续保证

                admin 系统开发 2018-12-03 10:29 0
                   
                 
                   在整个开发过程中维护系统到软件的完整性(SSI)可提高软件质量,降低开发成本并提高安全性和安全性。
                 
                   系统↘的开发,无论是高保证还是关键任务,都面临着一个长期存在的问题:我们可以设想并因此希望建立比我们用传统方法所能保证的更有能力和更复杂的系统。结果是可预测的:系统错误导致系统故障导致损→失 - 有时包括生命损失。
                 
                   许多系统错误可以追溯到关键系统软▲件的错误行为。软件,甚至不仅仅是系统,都容易摆脱可管理复杂性的束缚。软件没有物理范围,没有物理重量,也没有物理功率需求本身。限制我们想要添加到系统的功能的压力不会限制软件。如果我们能够想象※一个功能,我们可以将该功能添加到软件中。结果再次可预测:软件过于复杂而无法保证; 失败了; 这会导致系统故障。
                 
                   正式?
                 
                   传统上通过广泛的测试收集软件保证。不幸的是,测试并非详尽无遗,因此只能揭↙示存在而非缺失错误。但我们可以做得更好而不仅仅是测试。在系统级别,我们应用分析∞和测试。例如,在设计飞机时,航空航天工程师在进入风洞之前使用计算流体动力学进行广泛的空气动力学分析。风洞试验验证了基本保证所依据的分析模型。
                 
                   对于软件,我们可以应用正式方法。这些是基于软件行为的数学表示的技术,其允许对软」件状态进行真正详尽的检查以证明没有错误。然后,软件测试验证了这种全面的分析。
                 
                   尽管它有力量,使用正式方法并不是一个灵丹妙药。特别是,软件工程师在进行分析时必须提出正确的问题。当关键系『统级属性未明确跟踪到软件时,提出正确的问题很难。软件工程师通常不知道需要证明哪些属性。
                 
                   在关注SSI时,系统工程师◇会识别关键的系统级属性,并通过跨系统架构的分解以及从一个工件到下一个工件的转换来跟踪这些属性。这种对系统级属性演变的关注使系统工程师能够有效地向软件工程师传达他们应该证明的关键属性。专注于SSI使工程师能够充分利用正式方法。
                 
                   随着基于模型的系统工程变得越来越流行,支持这种方法的工具包括越来越︼强大的分析。这些工具不仅仅是对延迟或空间,重量和功耗的简单检查,而且它们试图证明架构的功能正确性。实际上,这些工具在更高的抽象层次上应用了形式化方法。为了充分利用这些工具,系统工程师需要明确识别他们〓应该证明的①属性。专注于SSI使系统工程师能够充分利用这些分析工具。
                 
                   与业界的系统和软件工程师交谈时,我们经常听到需求文档和设计∩文档等系统工程工件从一个团队到另一个团队“被淹没”。这种说法有点令人惊讶。当然,所有参与开发的工程师 - 从系统工程师到软件工程师 - 都应该是一个整合的团队。
                 
                   不同的人有不同的专业,DO-178B / C等软件标准要求在◆最高的设计保证水平下,开发组件的人与验证组件的人之间的独立性。但是,如果团队成员之间没有持续和有管理的沟通,那么诚信肯定会丢失。通过关注关键属性的通信以及充当团队成员之间接口的工件,专注于SSI使系统和软件工程师能够跨越隔离它们的╱隔离墙。
                 
                   如何支持SSI?
                 
                   SSI是高∴保证系统工程的特征 - 不是工具或技术。但是,为了促进系统工程中的SSI,工具支持至①关重要。该工具支持有四个不可或缺的部分,另外还有可选的第五部分:翻译,可追溯性,分析,参数和(可选)测试用例【生成。
                 
                   翻译
                 
                   翻译通过自动将一个工件中表示的属性表示到下一个工件中来帮助保持完整性。例如,在SysML建模语言中,与在OCL(对象卐约束语言)中编写并附加到内部框图上的输出端口的需求相关联的约束可能会被转换为使用Simulink模型编写的同步观察器。 Simulink阻塞并连接到子系统的输出端口。类似地,约束可能被转换为支持软件合同的SPARK等编程语言中的后置∏条件。
                 
                   翻译弥合了将∑ 架构(在SysML中)与设计(Simulink模型)或实现(在SPARK中)分开的差距。它还可以通过不要求工程师手动重新编译※目标语言的属性来降低出错的可能性。当然,这要求我们对翻译的正确性有信心,但是可以提供这种信心的技术(例如DO-178B / C下的工具认证)。
                 
                   可追溯性
                 
                   可追溯性通过允许工程师通过系统开发跟踪属性的演变,有助于保持完整性。继↓续上面的示例,Simulink同步观察器▼将被跟踪到OCL约束,以便如果更改了任何一个,将通知工程师必须重新检查或重新生成另一个。
                 
                   分析
                 
                   分析通过允许工程师在分解过程中证明财产满意度来帮助保持完整性。在系统开发∏的每个阶段,更大的抽象被更高的精度所取代,直到系统被完全和精确地描述。分解在这种不断提高的精度中起着至关重要的」作用,因为较大的抽象组件被分解为多个较小的组件。
                 
                   通过分析,工程师可以证明较小的组件一起满足ω 较大的抽象组件的预期功能。继续上面的例子①,Simulink子系统将被分解成更小的子系统,每个子系统◤都有自己的契约,这些】契约一起必须满足顶级子系统的观察者。
                 
                   争论
                 
                   当可追溯性或分析不充分或无法提供足够的支持时,论证有助于工程师记录其财产连续性的基本原理,从而有助于保持完整性。继续上面的示↙例,子系统之一可以是ぷCOTS,并且可能没有足够精确的合同以使得能够证明满足顶级子系统的观察者。但是,工程ω师可能知道,使用COTS子系统的方式将与其他子系统一起始终满足顶级子系统的观察者。该论点记录了这一理由。
                 
                   测试用例生成
                 
                   测试用例生成通过证明系统满足关键属性来帮助确认完整性。继续上面的例子,子系统的观察者可以形成一个测试用例或一组测试用例的基础,以包含在集成测试的那个阶段。
                 
                   此高级工作流程支持SSI。  
                 
                   支持SSI的工具的一个关键要求是它们满足系统工程师的需求:这些工具应该支持现有语言和现有的开◤发方法,而不是要求工程师采用全新的语言和全新的开发方☉法。目前不支持◆支持SSI的工具,但  AdaCore正致力于构建它们。完成后,他们将支持可能看起来像图中所示的工作流程。
                 
                   硬件▆怎么样?
                 
                   本文主要关注软件方面的SSI:系统到软件的完整性。但SSI同样适用于↑硬件。系统开发最■后阶段使用的语言因硬件而异,但总体方法仍然可以显着提高硬件开发和软件开发的效率。
                 
                   底线
                 
                   采用集成的方法进行系统开发和验证 - 通过及早识别关键属性并确保它们在系统从需求到实施的整个生命周期中保持不变,可以节〖省时间和精力ㄨ。它还可以防止系统应该做什么和实际做什么之间的不匹配。通过现有和『即将推出的技术的自动化支持,SSI可以为社会所依赖的最关键系统提供所需的保证。

                分享:

                扫一扫在手机阅读、分享本文

                发表评论

                评论列表(条)