Page 21 - 《软件学报》2025年第4期
P. 21

杨晓 等: 复杂嵌入式系统需求一致性的组合验证方法                                                       1427


                                           表 3    机载侦查系统验证子系统架构组成          (续)

                      验证子系统          对应需求组         架构组成          验证子系统           对应需求组         架构组成
                                                 软件构件: 1个                                    软件构件: 1个
                  干扰处理单元断电控制                                      温度上报
                 (JPUPowerCloseControl)  {8}     设备构件: 2个     (TemperatureReport)  {18}      设备构件: 6个
                                                  连接件: 2个                                     连接件: 6个
                                                 软件构件: 9个                                    软件构件: 2个
                     信号电流控制          {1, 2, 3, 4,                 超温保护
                 (WorkingCurrentControl)  5, 6, 7, 8, 9}  设备构件: 18个  (OverTempProtect)  {18, 19}  设备构件: 8个
                                                  连接件: 34个                                    连接件: 9个
                  初始化 (Initialization)  {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}  软件构件: 10个, 设备构件: 18个, 连接件: 39个

                    步骤  3: 可执行验证子系统模型生成. 根据          19  个验证子系统架构, 从领域设备知识库中获取设备               TA. 根据软
                 件构件以及输入的情景图生成软件构件              TA, 将设备  TA  与软件构件    TA  组合成  NTA  生成可执行验证系统模型集
                 合, 共包括设备    TA  模型  12  个, 软件构件  TA  模型  19  个. 这里以超温保护可执行验证子系统模型为例进行说明.
                 根据图   12, 首先从领域设备知识库中获取设备构件对应的设备                 TA. 设备构件中有     6  个属于因果领域可以直接获
                 取对应   TA  模型如图  13(a)–(f) 所示, 两个属于词法领域没有       TA  模型. 接下来根据超温保护子系统架构中的两个
                 软件构件对应的情景图生成软件控制器              TA, 如图  13(g) 和  (h) 所示.

                        CRUTemperate!            CRUTemperate!   JPUTemperate!             JPUTemperate!
                    CRU_workt=0,CRUcount=0  CRUSensorWorkingCurrentOpen?  CRUcount==5  JPU_workt=0,JPUcount=0  JPUSensorWorkingCurrentOpen?  JPUcount==5
                         CRUcount==5  CRU_workt<=1  CRU_workt<=1  CRU_workt=0,CRUcount=0  JPUcount==5  JPU_workt<=1  JPU_workt<=1  JPU_workt=0,JPUcount=0
                         CRUcount<5    CRUSensorOn                 JPUcount<5    JPUSensorOn
                         CRU_workt=0  CRUSensorOff  CRUcount<5     JPU_workt=0  JPUSensorOff  JPUcount<5
                                     CRU_workt=0  CRU_workt=0                              JPU_workt=0
                       CRUt-=5,CRUcount+=1                       JPUt-=5,JPUcount+=1  JPU_workt=0
                    CRU_workt>=1 && CRUt>26                   JPU_workt>=1 && JPUt>26
                                     CRU_workt=0  CRUt+=2,CRUcount+=1          JPU_workt=0  JPUt+=2,JPUcount+=1
                         CRUcount+=1                               JPUcount+=1
                    CRU_workt>=1 && CRUt<=26  CRUSensorWorkingCurrentClose?  CRU_workt>=1  JPU_workt>=1 && JPUt<=26  JPUSensorWorkingCurrentClose?  JPU_workt>=1
                                 (a) 设备TA: CRUSensor                       (b) 设备TA: JPUSensor
                        SPUTemperate!            SPUTemperate!   ICUTemperate!            ICUTemperate!
                     SPU_workt=0,SPUcount=0  SPUSensorWorkingCurrentOpen?  SPUcount==5  ICU_workt=0,ICUcount=0  ICUSensorWorkingCurrentOpen?  ICUcount==5
                         SPUcount==5  SPU_workt<=1  SPU_workt<=1  SPU_workt=0,SPUcount=0  ICUcount==5  ICU_workt<=1  ICU_workt<=1  ICU_workt=0,ICUcount=0
                         SPUcount<5    SPUSensorOn                 ICUcount<5    ICUSensorOn
                         SPU_workt=0  SPUSensorOff  SPUcount<5     ICU_workt=0  ICUSensorOff  ICUcount<5
                                                  SPU_workt=0                              ICU_workt=0
                        SPUt-=5,SPUcount+=1  SPU_workt=0         ICUt-=5,ICUcount+=1  ICU_workt=0
                     SPU_workt>=1 && SPUt>26                  ICU_workt>=1 && ICUt>26
                                     SPU_workt=0  SPUt+=2,SPUcount+=1         ICU_workt=0  ICUt+=2,ICUcount+=1
                         SPUcount+=1                               ICUcount+=1
                                                              ICU_workt>=1 && ICUt<=26
                                                                                            ICU_workt>=1
                    SPU_workt>=1 && SPUt<=26  SPUSensorWorkingCurrentClose?  SPU_workt>=1 NoJamResult?
                                                                           ICUSensorWorkingCurrentClose?
                                 (c) 设备TA: SPUSensor                       (d) 设备TA: ICUSensor
                                                              JPUWorkingCurrentCloseCommandFormOP1!
                                                              JPUWorkingCurrentCloseCommandFormOP0?
                      DeviceDataLoadResult?
                                                                               JPUWorkingCurrentOpenCommandFormOP1!
                                ReconnaissanceGuide  TargetInfoDisplay  JamStatusDisplay  DCDJPUOff
                                                                               JPUWorkingCurrentOpenCommandFormOP0?
                        Dataload_time<=20
                                                                             DCDJPUOn
                                                                                            DCDSPUOff
                        DCD_Load=1
                                                                              SPUWorkingCurrentCloseCommandFormOP0?
                              DeviceDataLoadResultDisplay  TrapPolicy?
                        DataLib1!                                             SPUWorkingCurrentCloseCommandFormOP1!
                                             ReceivePolicy1!  TrapPolicy1!
                        Dataload_time=0  DataLoad
                                             ReceivePolicy?  JamResult?                     DCDSPUOn
                                   DataLib?
                                                   TargetInfo?  Jam_state=1
                                                                              SPUWorkingCurrentOpenCommandFormOP0?
                    DeviceDataLoadCommand1!
                                       DeviceDataLoadCommand?                 SPUWorkingCurrentOpenCommandFormOP1!
                        TemperatureReport                                                   DCDCRUOff
                        TemperateDataToDCD?
                                                                              CRUWorkingCurrentCloseCommandFormOP0?
                        TemperatureReportStoIns=1  DCDWork
                        SpectrumDisplay                                       CRUWorkingCurrentCloseCommandFormOP1!
                        SpectrumDataSend?                                     CRUWorkingCurrentOpenCommandFormOP1!
                        SpectrumSurveillanceStoIns=1                          CRUWorkingCurrentOpenCommandFormOP0?
                      DeviceInitCommand1!  DeviceInitCommand?
                                                                                            DCDCRUOn
                          Init_time=0
                                                                              ICUWorkingCurrentCloseCommandFormOP1!
                        Init_time<=10                         Jam_state=0     ICUWorkingCurrentCloseCommandFormOP0?
                        Init_state=1,DCD_Init=1
                                                       TargetDelete?
                        DeviceInitResult?                               JamProhibited?
                                            JamAllowed1!  TargetDelete1!
                                                                        JamProhibited1!     DCDICUOff
                        DeviceInitResultDisplay  JamAllowed?  JamStyle1!
                                                              TargetJamLib1!  ICUWorkingCurrentOpenCommandFormOP1!
                         DeviceWorkingCurrentControlResult?  JamStyle?
                                                            TargetJamLib?     ICUWorkingCurrentOpenCommandFormOP0?
                        DeviceWorkingCurrentStatusDisplay
                                                                                            DCDICUOn
                        Device_state+=1
                                                                     NoJamStatusDisplay
                                                  (e) 设备TA: DisplayControlDevice
                                               图 13 验证子系统超温保护         NTA
   16   17   18   19   20   21   22   23   24   25   26