# s6 |/ U+ Z: p. L1 ]9 p6 S 嵌入式系统软件是一个竞争优势。软件可以使得已经舒适的乘坐更具吸引力,比竞争性交通工具更好。它还可减少驾驶室噪音,或降低燃油消耗。可轻松地配置嵌入式软件,以符合用户的喜好 - C& k' b; F O
– 只需按一下开关便可将舒适的公路汽车变为更具运动特色的交通工具。 * X, n8 }$ T, L& Q( u3 p3 r1 R [$ U( e% Z* \% o
当然也可在硬件中实现那些可以通过软件获得的功能,但是这样做会相应地增加制造成本和产品价格。嵌入式软件还可实现重复利用利用,并且可更加频繁地更新,以满足不断增长的需求。 9 I- p6 A, K* ?3 T. [9 T" m
在早期的设计阶段,开发者可开发纯粹的行为模型,以阐明并定义软件的详细要求。( P2 O ] v( N! C; y& C
( v$ V5 w3 d* d% S' t5 A, J/ K( O, }
虽然此类模型已经具备了基本解决方案的轮廓,但是它们依然独立于目标平台。这些目标独立的行为模型将用于设计验证和早期的需求确认。 2 Z/ x$ q) g* \5 V2 |: I2 E4 |2 Q' z: }7 P
用于捕获关键需求、在仿真中展示正确行为以及展示对高层需求可追溯性的模型通常被称为“可执行规范”。$ M7 w6 @" m9 [$ j o& |/ |2 q
7 y3 c# X$ L, Q- n5 g2 f5 } u
对可执行规范的进一步开发和具体实现可产生代表最终实现的模型的定义。这就是用于产品代码生成的模型。通常,这些模型会对代码生成做优化;它将从数据类型、目标架构以及要求的代码风格。所有这些变更需要一个验证过程,确保产品代码生成模型中引入的变更不会改变软件的行为。确认生产代码生成模型以及生成代码的正确行为的测试为代码验证。 把验证分布在设计验证和代码验证阶段允许我们更早地开始验证工作,更多的关注在测试上和更短的时间去修复在测试中检测到的错误。在本文的其余部分,我将介绍两个设计验证方法:% X/ J* b6 ~( k/ o. g& t
; E9 C2 i$ [. }2 F' w n h
·模型在环测试: D( ^( O& i' h; Z0 C T
·软件在环测试3 V& F- _# s; B+ Z* K" c0 t
, @8 P5 N3 ^- g" E- J 以及用于代码验证的两个方法: % {- v1 F# e1 X4 {5 i 8 D7 g" `3 A, F ·处理器在环测试 ; B( y# f# D: d; c7 z ·硬件在环测试% X6 ?3 X# U9 L. s+ W1 C8 y
8 n: H( d. ?* j" N- ~2 设计验证% w7 }5 L$ w' _% U, q
0 O* `( V5 r$ _) n% Y 设计验证的主要目的是确认所有关键要求和设计概念是否已正确体现在设计模型中。 + D2 `# y9 G: K o$ o8 X( n, T6 r* Y: z% l, R
·模型在环测试7 c3 O* H1 m+ D, H
! ]8 N9 O/ W; d5 E! N4 M
与“静态”的书面设计不同,可在仿真过程中评估可执行规范。通常,通过改变一组模型参数或输入信号,或通过查看输出结果或模型的响应,来完成这一操作。依据模型执行的仿真顺序也称为模型在环测试。- C3 B- o! N* \) d6 V
( `) ~- ]5 D3 B. f: D; ]0 c 模型在环测试的测试数据可来自测试矢量数据库,或来自实际系统的模型,在后一种情况下,我们讨论闭环控制系统。 ( z4 H. j7 f7 S' Q* i2 O" o. w$ e2 r8 U- ?* a- K
可执行规范通常不仅仅包含功能设计模型和软件逻辑,还包括设备和环境模型、高层需求的链接以及其他文件。它通常还包括用于自动化仿真结果评估的验证数据。 模型在环测试的结果可用于验证软件行为是否正确,并确认开发流程的初始需求。通过仿真收集的信息会成为代码验证的基准。. a' c4 I9 K( e# f8 T
6 }1 B$ \- R7 h: f' V. p3 x: P3 X ·软件在环 (SIL) 7 W0 b# p0 }6 C0 @# u. [& {5 E, c% G" J# x: ?$ I
在许多情况下,在目标环境中部署软件之前,确保所设计的系统的软件组件能够按预期运行,这一点非常重要。7 n4 e a' n2 t. ^