×

面向对象程序的模块化规范和验证。 (英语) Zbl 0974.68035号

黑根:弗伦尼夫。Hagen,Fachbereich Informatik,vi,261 p.(2001)。
概要:从过程编程到面向对象编程的范式转变促进了模块化软件开发。特别是预制软件模块的重用增加了对精确规范和质量认证的需求,从而增加了对模块规范和验证技术的需求。这些技术必须能够处理面向对象的语言特性,如子类型、继承和动态方法绑定,并且必须支持规范和证明的模块化开发。特别是,它们应该使规范和证明能够与实现一起重用。
本文介绍了00程序的功能行为、框架属性和类型不变量的模块化描述和验证技术。这项工作的核心思想是将最先进的规范和验证技术与别名控制的类型系统进行正式集成。
我们提出了可用于静态控制混叠的universe类型系统。它将读写引用的强类型约束与只读引用的灵活性结合在一起。这种组合保证了一个不变量,它支持模块化验证,同时保留足够的灵活性来处理最常见的实现模式,尤其是相关方法不支持的二进制方法和迭代器等模式。
本文提出的声明性接口规范技术提供了前后规范、具有显式依赖关系的抽象字段、修改子句和类型不变量。功能方法行为可以由前后规范涵盖。抽象字段用于将对象结构映射到抽象域的值。抽象字段对表示它的具体字段的依赖关系是显式声明的。这些声明与modifies-子句一起用于表示框架属性。框架属性特别难以以模块化的方式进行验证,因为它们需要证明某些抽象没有被方法修改,即使这些抽象在其他模块中声明也是如此。为了解决这个问题,我们利用宇宙类型系统保证的不变量来定义修改子句的新语义,并限制抽象字段的允许依赖性,从而使框架属性的模块化验证成为可能。将类型不变量视为特殊的抽象字段,可以将框架属性的规范和验证技术应用于不变量。
为了进行验证,我们使用了能够处理OO特性和模块化的Hoare-style编程逻辑。特别是,它确保了只有模块的那些属性才能被证明在模块可以重用的所有格式良好的上下文中保持不变。也就是说,逻辑保证了我们验证技术的模块化可靠性。
我们的技术是针对类似于顺序Java的编程语言提出的,但也可以适用于过程语言和其他面向对象的语言。

MSC公司:

68甲19 其他编程范式(面向对象、顺序、并发、自动等)
PDF格式BibTeX公司 XML格式引用