Refactoring Formal Specifications in Object-Z

Hui Liu, Bin Zhu · 2008

Software refactoring is to restructure artifacts to improve software quality, especially readability, extensibility, and maintainability, while preserving its external behaviors. Software refactoring has been successfully applied to source code and design models. However, refactoring has not yet been introduced to formal specifications. Compared to source code in programming languages similar to nature languages, formal specifications in formal mathematic languages are in urgent need of refactoring because mathematic languages are usually more difficult to understand or modify. Furthermore, formal specifications' inherent formality makes it easier to validate behavior preservation of refactorings, which dramatically increases the dependability of refactorings. This paper illustrates the necessity and possibility of refactoring formal specifications. It first illustrates the necessity with an motivating example, and then proposes a series of primitive refactorings and advanced refactorings that are composed of primitive refactorings.

Read the paper · More papers on PaperTik