Gandalf: software development environments
IEEE Transactions on Software Engineering
The SCHEME programming language
The SCHEME programming language
A Critical Analysis of Incremental Iterative Data Flow Analysis Algorithms
IEEE Transactions on Software Engineering
The Cornell program synthesizer: a syntax-directed programming environment
Communications of the ACM
Social processes and proofs of theorems and programs
Communications of the ACM
On the criteria to be used in decomposing systems into modules
Communications of the ACM
Restructuring symbolic programs for concurrent execution on multiprocessors
Restructuring symbolic programs for concurrent execution on multiprocessors
Chapter I: Notes on structured programming
Structured programming
Automated assistance for program restructuring
ACM Transactions on Software Engineering and Methodology (TOSEM)
Automated support for encapsulating abstract data types
SIGSOFT '94 Proceedings of the 2nd ACM SIGSOFT symposium on Foundations of software engineering
Supporting the restructuring of data abstractions through manipulation of a program visualization
ACM Transactions on Software Engineering and Methodology (TOSEM)
How Software Engineering Tools Organize Programmer BehaviorDuring the Task of Data Encapsulation
Empirical Software Engineering
Context-sensitive cut, copy, and paste
Proceedings of the 2008 C3S2E conference
Hi-index | 0.00 |
Restructuring a software system as it evolves promises to reduce associated maintenance costs. To simplify restructuring, we have developed a tool that preserves the meaning of a program as the engineer applies structural transformations. To help evaluate the prototype tool and its underlying approach, we ran an experiment to compare how people using standard editing tools restructure a program against the computer-aided style that our tool supports.We drew three conclusions from the experiment. First, the subjects generally used a mix of copy/paste and cut/paste editing paradigms; our tool gives the engineer the safety of copy/paste and the speed of cut/paste. Second, most of the subjects made mistakes, including simple syntactic errors and semantic errors (such as not updating the call site after modifying a function definition); our tool avoids errors by the engineer using compensation (for instance, it automatically updates call sites when a procedure definition is changed) or by signalling an error. Third, manual restructuring tends to be haphazard, with engineers handling the order of changes, testing, etc. in inconsistent and potentially error-prone ways; by separating restructuring from functional maintenance and by ensuring preservation of meaning during restructuring, our approach can make the maintenance process more orderly.