Agents of change: managing the introduction of automated tools
Agents of change: managing the introduction of automated tools
The synthesizer generator: a system for constructing language-based editors
The synthesizer generator: a system for constructing language-based editors
SDE 3 Proceedings of the third ACM SIGSOFT/SIGPLAN software engineering symposium on Practical software development environments
Integrating noninterfering versions of programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Algebraic properties of program integration
ESOP '90 Selected papers from the symposium on 3rd European symposium on programming
The maintenance problem of application software: an empirical analysis
Journal of Software Maintenance: Research and Practice
A meta-environment for generating programming environments
ACM Transactions on Software Engineering and Methodology (TOSEM)
The ALF proof editor and its proof engine
TYPES '93 Proceedings of the international workshop on Types for proofs and programs
A Controlled Experiment to Assess the Benefits of Procedure Argument Type Checking
IEEE Transactions on Software Engineering
Building program optimizers with rewriting strategies
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
MetaML and multi-stage programming with explicit annotations
Theoretical Computer Science - Partial evaluation and semantics-based program manipulation
Communications of the ACM
Using multidimensional separation of concerns to (re)shape evolving software
Communications of the ACM
Composing crosscutting concerns using composition filters
Communications of the ACM
Communications of the ACM
Resistance to New Technology: Nuclear Power, Information Technology, Biotechnology
Resistance to New Technology: Nuclear Power, Information Technology, Biotechnology
A rule-based language for programming software updates
Proceedings of the 2002 ACM SIGPLAN workshop on Rule-based programming
Software Engineering: A Practitioner's Approach
Software Engineering: A Practitioner's Approach
Template meta-programming for Haskell
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Software Maintenance Management
Software Maintenance Management
Scrap your boilerplate: a practical design pattern for generic programming
Proceedings of the 2003 ACM SIGPLAN international workshop on Types in languages design and implementation
Typed Combinators for Generic Traversal
PADL '02 Proceedings of the 4th International Symposium on Practical Aspects of Declarative Languages
A Strafunski Application Letter
PADL '03 Proceedings of the 5th International Symposium on Practical Aspects of Declarative Languages
Programs Are Abstract Data Types
Proceedings of the 16th IEEE international conference on Automated software engineering
Term rewriting with traversal functions
ACM Transactions on Software Engineering and Methodology (TOSEM)
Scrap more boilerplate: reflection, zips, and generalised casts
Proceedings of the ninth ACM SIGPLAN international conference on Functional programming
Toward an engineering discipline for grammarware
ACM Transactions on Software Engineering and Methodology (TOSEM)
ESOP'03 Proceedings of the 12th European conference on Programming
A language for software variation research
GPCE '10 Proceedings of the ninth international conference on Generative programming and component engineering
Formal verification techniques for model transformations specified by-demonstration
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Type-changing rewriting and semantics-preserving transformation
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
Hi-index | 0.00 |
The dominant share of software development costs is spent on software maintenance, particularly the process of updating programs in response to changing requirements. Currently, such program changes tend to be performed using text editors, an unreliable method that often causes many errors. In addition to syntax and type errors, logical errors can be easily introduced since text editors cannot guarantee that changes are performed consistently over the whole program. All these errors can cause a correct and perfectly running program to become instantly unusable. It is not surprising that this situation exists because the ''text-editor method'' reveals a low-level view of programs that fails to reflect the structure of programs. We address this problem by pursuing a programming-language-based approach to program updates. To this end we discuss in this paper the design and requirements of an update language for expressing update programs. We identify as the essential part of any update language a scope update that performs coordinated update of the definition and all uses of a symbol. As the underlying basis for update languages, we define an update calculus for updating lambda calculus programs. We develop a type system for the update calculus that infers the possible type changes that can be caused by an update program. We demonstrate that type-safe update programs that fulfill certain structural constraints preserve the type correctness of lambda terms. The update calculus can serve as a basis for higher-level update languages, such as for Haskell or Java.