A Theory of Structured Change

Abstract

This project has developed a theoretical framework for describing and reasoning about changes in software. The theory provides a basis for the implementation of tools to support software maintenance tasks in the presence of changes. Specific contributions include the choice calculus, a formalism for representing variation and changes in structured documents. The choice calculus offers laws and transformation rules that make variation representations flexible. A design theory for the choice calculus has been developed for the systematic elimination of redundancies or dead variants. Another focus of this project has been the development of methods for effectively checking properties of variational software, which has led to the design of variational type systems and new unification algorithms. The practical work with variational software is supported through a user study that has demonstrated that the dimension-structured choice constructs of the choice calculus help users reason about variational code faster and more accurately and ultimately support code understanding better than traditional CPP annotations. Finally, a domain-specific language (DSL) has been developed which makes it possible to write programs to query, manipulate, and analyze variation structures.

Open PDF

Document Details

Document Type
Technical Report
Publication Date
Jun 29, 2012
Accession Number
ADA565299

Entities

People

  • Martin Erwig

Organizations

  • Oregon State University

Tags

Communities of Interest

  • Human Systems

DTIC Thesaurus Topics

  • Abstracts
  • Algorithms
  • Artifacts
  • Calculus
  • Computer Programming
  • Computer Programs
  • Computer Science
  • Computers
  • Electrical Engineering
  • Engineering
  • Feature Selection
  • Graphical User Interface
  • Language
  • Standards
  • Students
  • User Interface
  • User Interface Engineering

Fields of Study

  • Computer science
  • Engineering

Readers

  • Calculus or Mathematical Analysis
  • Computational Linguistics
  • Software Engineering.