The C programming language
Continuation-Based Program Transformation Strategies
Journal of the ACM (JACM)
Data Abstraction, Implementation, Specification, and Testing
ACM Transactions on Programming Languages and Systems (TOPLAS)
Abstract data types and software validation
Communications of the ACM
HOPE: An experimental applicative language
LFP '80 Proceedings of the 1980 ACM conference on LISP and functional programming
Transformations of FP program schemes
FPCA '81 Proceedings of the 1981 conference on Functional programming languages and computer architecture
Software bases and software archives: alternatives to support software reuse
ACM '87 Proceedings of the 1987 Fall Joint Computer Conference on Exploring technology: today and tomorrow
ICSE '89 Proceedings of the 11th international conference on Software engineering
ACM Computing Surveys (CSUR)
A transformational approach to generating application-specific environments
SDE 5 Proceedings of the fifth ACM SIGSOFT symposium on Software development environments
SIGSOFT '93 Proceedings of the 1st ACM SIGSOFT symposium on Foundations of software engineering
Software design for reliability and reuse: a proof-of-concept demonstration
TRI-Ada '94 Proceedings of the conference on TRI-Ada '94
A software engineering experiment in software component generation
Proceedings of the 18th international conference on Software engineering
Software components in a data structure precompiler
ICSE '93 Proceedings of the 15th international conference on Software Engineering
Automatically Checking an Implementation against Its Formal Specification
IEEE Transactions on Software Engineering
From ML to Ada: Strongly-typed language interoperability via source translation
Journal of Functional Programming
Hi-index | 0.00 |
Software components often cannot be reused since the algorithms they realize are encoded in terms of particular implementations. This paper presents an approach to reusability where algorithms and implementations are specified separately. An algorithm is specified by a sequence of recursion equations called a software template. Templates are defined over values of abstract data types whose implementations are specified separately and catalogued. When a template's data types are bound to catalogued implementations, the template is automatically translated into a component tailored to the chosen implementations, a process called template instantiation. Different implementations of an algorithm can be achieved by merely binding the data types of its template, specification to different implementations.