Page 281 - 《软件学报》2026年第3期
P. 281

1244                                                       软件学报  2026  年第  37  卷第  3  期


                 一个重要概念是精化: 对于任意的程序, 如果它是契约                A  的实现蕴含着它也是契约        B  的实现, 那么契约    A  是契约
                 B  的精化. Meyer 又将基于契约的设计推广到面向对象领域. 如             Eiffel 语言  [59] 定义了类的契约.
                    基于契约的设计后来被推广到反应式系统和信息物理融合系统. 反应式系统                          (reactive system) 是指需要连续
                 地与环境交互的系统, 而信息物理融合系统是集连续演化、离散控制、通信、并行等一体的混合系统. Abadi 等
                 人  [61,62] 首次提出了反应式系统的假设/保证      (assume/guarantee) 规约, 基于博弈论来定义组件和环境的行为, 并定义
                 规约之间的精化、规约的并行组合和相容性. 假设                (assumption) 表示对环境行为的假设, 保证       (guarantee) 表示在
                 这个环境假设下, 系统本身能够保证的行为, 它们都定义为性质. 最典型的性质表示形式是执行迹的集合, 每个迹
                 表示状态序列或事件序列. de Alfaro      等人  [63] 提出接口自动机   (interface automata), 并利用接口自动机描述系统构件
                 接口与环境之间的契约关系. 接口模型被扩展以处理更加复杂的行为, 例如实时、资源等问题                             [64,65] . 接口输入输出
                 自动机  [66] 与接口自动机不同, 它将环境的假设和系统的保证分别定义为两个不同的自动机.
                    除了安全性, 系统还有对于实时、资源约束等方面的需求. 文献                    [67] 提出了多视点模型的数学基础. 针对实
                 时性质, 文献   [68,69] 提出了实时接口, 定义了实时接口的相容性、精化, 以及并行组合、合取、商等组合方式, 在
                 此基础上实现了工具       ECDAR  [70] . 模态规约的实时扩展在文献     [71] 中给出. 文献  [72] 扩展了实时接口契约, 能够描
                 述周期性、任务完成时间以及与任务调度有关的假设/保证性质, 一些相关的工作参见文献                             [73]. 文献  [74] 介绍了
                                                                                         [75]
                 实时调度规约, 接口可以定义时间、资源、调度策略等多方面的需求, 实现了分析工具                          CARTS , 并应用在    ARINC
                 分区调度中    [76] . 另外, 还有一些专门针对资源约束的接口契约方面的工作               [77] . 假设/保证契约设计还被推广到概率
                 和随机系统中, 能够处理定量概率性质的描述和验证                 [78−80] . 基于契约的设计方法需要从已有软件资产中提取契约,
                 并在契约上进行复杂的操作和推理, 在理论上仍是一个挑战, 因而无法在实践中应用到大规模嵌入式软件.
                    另一方面, 在电子电路设计领域, 硬件           IP  对芯片中常用的功能模块进行封装, 具有高度的可复用性、可组合
                 性和可验证性, 提升了芯片设计的效率. 为方便设计者使用, 硬件                   IP  的生产者需要提供详细的使用文档. 为了促
                 进  IP  产业的发展, SPIRIT Consortium  出台了  IP-XACT  标准  [11] . IP-XACT  使用  XML  格式的语言来定义和描述  IP
                 的规约以及    IP  之间相互连接的细节, 给出了通用的设计表示, 可以在               IP  设计的不同流程内部进行交换. 硬件           IP
                 的设计理念与成功经验为嵌入式软件描述与建模提供了参考. 此外, 知识工程领域提出了知件的概念. 知件是独立
                 的、计算机可操作的、商品化的、有完备文档的、可被某一类软件调用的知识模块                              [81] . 知件工程的愿景是形成
                 与软件和硬件并列的第        3  大产业  [82] . 与知件不同, 本文提出的软件     IP  是一个软件知识实体, 其本质是一种软件模
                 块, 支持嵌入式软件的智能合成.
                  2   嵌入式软件   IP  通用模型设计思路

                    本文的主要贡献是提出面向嵌入式系统的软件                 IP  通用模型, 在介绍具体的模型之前, 本节就该模型的设计思
                 路予以介绍.
                  2.1   软件功能模块通用模型
                    一个软件功能模块都可以抽象成一个输入输出模型, 如图                   1  所示. 功能模块的一次执行包含顺序的           3  个步骤:
                 输入、计算、输出. 从输入端获取计算需要的资源, 然后执行计算, 最后将计算结果从输出端输出. 对模型的输入
                 和输出进行不同的解释, 会得到不同的软件模型.
                    如果将图    1  中的输入端解释为请求接口, 输出端解释为提供接口, 那么会得到软件构件模型, 如图                         2  所示. 软
                 件构件是软件系统中具有相对独立功能、可以明确辨识、接口由契约指定、和语境有明显依赖关系、可独立部
                 署的可组装软件实体       [83] . 构件的请求接口描述了为实现构件的功能所需要的外部服务, 提供接口以                     API 的形式向
                 外部环境提供构件的至少一个功能            (服务).
                    如果将图    1  中的输入和输出解释为数据和事件端口, 那么会得到数据流/事件流模型, 如图                       3  所示. 模型驱动
                 开发  (MDD) 通常采用这种数据流/事件流模型. MDD            方法一般分为     3  个阶段: 首先是建模, 根据系统设计需求从
                 模型库中选择合适的数据流/事件流模块完成组装; 其次是分析, 通过仿真、测试、形式验证等方法确认组装的模
                 型是否满足需求; 最后是代码生成, 利用模型转换技术, 将抽象的模型逐步精化为可执行代码.
   276   277   278   279   280   281   282   283   284   285   286