Structured algebraic specifications: A kernel language
Theoretical Computer Science
Statemate: a working environment for the development of complex reactive systems
ICSE '88 Proceedings of the 10th international conference on Software engineering
The Z notation: a reference manual
The Z notation: a reference manual
Unified algebras and institutions
Proceedings of the Fourth Annual Symposium on Logic in computer science
The C++ programming language (2nd ed.)
The C++ programming language (2nd ed.)
Object-oriented modeling and design
Object-oriented modeling and design
Overview of reverse engineering and reuse research
Information and Software Technology
Larch: languages and tools for formal specification
Larch: languages and tools for formal specification
Object-oriented analysis and design with applications (2nd ed.)
Object-oriented analysis and design with applications (2nd ed.)
POPL '85 Proceedings of the 12th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Program development by stepwise refinement
Communications of the ACM
Reverse Engineering and Design Recovery: A Taxonomy
IEEE Software
Structural Redocumentation: A Case Study
IEEE Software
Developing Formal Specifications from Informal Requirements
IEEE Expert: Intelligent Systems and Their Applications
Building Bridges Between Knowledge Representation and Algebraic Specification
ISMIS '94 Proceedings of the 8th International Symposium on Methodologies for Intelligent Systems
Proceedings of the Carnegie Mellon Workshop on Logic of Programs
Hi-index | 0.00 |
Recovering design information from software is an active research area in reverse engineering. If the extracted information is represented formally, we are able to process the information at the semantic level for analysis and reasoning. We describe a formal approach to representing modules. A module encapsulates a collection of dependent components. The main feature of the formalism is characterized by its underlying operational semantics. This allows us to execute the specification of a module and to simulate its behavior. A homogeneous algebra is used for representing a module. The type hierarchy of certain modules is represented by means of a lattice. A lattice can be transformed into an executable form easily, such as to a frame notation in a knowledge representation system. The properties, of the operations or the functions in a module, are described by characteristic assertions which result from certain relationships between the operations. In our formalism, the properties are represented by Horn clauses. A set of Horn clauses provides a capability to check the behavior of a module.