ACM Transactions on Programming Languages and Systems (TOPLAS)
The use of machines to assist in rigorous proof
Proc. of a discussion meeting of the Royal Society of London on Mathematical logic and programming languages
PROUST: Knowledge-Based Program Understanding
IEEE Transactions on Software Engineering
Automating the Transformational Development of Software
IEEE Transactions on Software Engineering - Special issue on artificial intelligence and software engineering
Implementing mathematics with the Nuprl proof development system
Implementing mathematics with the Nuprl proof development system
Mechanical translation of set theoretic problem specifications into efficient RAM code-A case study
Journal of Symbolic Computation
Software processes are software too
ICSE '87 Proceedings of the 9th international conference on Software Engineering
Software reusability: vol. 1, concepts and models
Software reusability: vol. 1, concepts and models
Integrating non-intering versions of programs
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
On the adequacy of program dependence graphs for representing programs
POPL '88 Proceedings of the 15th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Design by derivational analogy: issues in the automated replay of design plans
Artificial Intelligence
Software reusability: vol. 2, applications and experience
Software reusability: vol. 2, applications and experience
KIDS: A Semiautomatic Program Development System
IEEE Transactions on Software Engineering
Program Transformation Systems
ACM Computing Surveys (CSUR)
Program developments: formal explanations of implementations
Communications of the ACM
Program Transformation and Programming Environments
Program Transformation and Programming Environments
A Discipline of Programming
A Functional Programming Environment Supporting Execution, Partial Execution and Transformation
PARLE '89 Proceedings of the Parallel Architectures and Languages Europe, Volume I: Parallel Architectures
Automated Program Recognition
A transformational approach to generating application-specific environments
SDE 5 Proceedings of the fifth ACM SIGSOFT symposium on Software development environments
Integration of domain analysis and analogical approach for software reuse
SAC '93 Proceedings of the 1993 ACM/SIGAPP symposium on Applied computing: states of the art and practice
Supporting software reuse within an integrated software development environment (position paper)
SSR '95 Proceedings of the 1995 Symposium on Software reusability
Using KIDS as a tool support for VDM
Proceedings of the 18th international conference on Software engineering
EVA: A Flexible Programming Method for Evolving Systems
IEEE Transactions on Software Engineering - Special issue on formal methods in software practice
IWSSD '93 Proceedings of the 7th international workshop on Software specification and design
SPARTACAS Automating Component Reuse and Adaptation
IEEE Transactions on Software Engineering
Hi-index | 0.00 |
Software development environments of the future will be characterized by extensive reuse of previous work. This paper addresses the issue of reusability in the context in which design is achieved by the transformational development of formal specifications into efficient implementations. It explores how an implementation of a modified specification can be realized by replaying the transformational derivation of the original and modifying it as required by changes made to the specification. Our approach is to structure derivations using the notion of tactics, and record derivation histories as an execution trace of the application of tactics. One key idea is that tactics are compositional: higher level tactics are constructed from more rudimentary using defined control primitives. This is similar to the approach used in LCF[12] and NuPRL[1, 8].Given such a derivation history and a modified specification, the correspondence problem [21, 20] addresses how during replay a correspondence between program parts of the original and modified program is established.Our approach uses a combination of name association, structural properties, and associating components to one another by intensional descriptions of objects defined in the transformations themselves.An implementation of a rudimentary replay mechanism for our interactive development system is described. For example with the system we can first derive a program from a specification that computes some basic statistics such as mean, variance, frequency data, etc. The derivation is about 15 steps; it involves deriving an efficient means of computing frequency data, combining loops and selecting data structures. We can then modify the specification by adding the ability to compute the maximum or mode and replay the steps of the previous derivation.