Aspect: A Formal Specification Language for Detecting Bugs

Abstract

Aspect is a static analysis technique based on formal specifications. By trading expressive power for tractability, Aspect can offer efficient detection of a class of bugs that is not detectable by other static means. Since the specifications are partial, not all bugs can be caught. But there are never any spurious reports: an error message always indicates an error in the code or a flaw in the specification. Aspect can handle most of the features of modern imperative programming languages: side-effects and aliasing, exceptions, polymorphism and dynamic allocation. It takes advantage of strong typing and is designed for programs that are organized around procedures and abstract types. The checking mechanism is based on an enriched form of dependency analysis. Objects are divided into projections called 'aspects'; the dependencies of different aspects are then tracked individually. The analysis is comparable in complexity to the kinds of analysis already performed by optimizing compilers. A prototype checker has been implemented tor the CLU programming language. It runs almost as fast as the compiler, and has found a variety of bugs in real programs.

Open PDF

Document Details

Document Type
Technical Report
Publication Date
Jun 01, 1992
Accession Number
ADA256797

Entities

People

  • Daniel Jackson

Organizations

  • Massachusetts Institute of Technology

Tags

Communities of Interest

  • C4I
  • Weapons Technologies

DTIC Thesaurus Topics

  • Abstracts
  • C Programming Language
  • Computer Programming
  • Computer Science
  • Computers
  • Debugging
  • Detection
  • Detectors
  • High Level Languages
  • Language
  • Models
  • Procedural Programming Language
  • Programming Languages
  • Side Effects
  • Software Development
  • Software Testing
  • Specifications

Fields of Study

  • Computer science
  • Engineering

Readers

  • Computational Linguistics
  • Computer Vision.