Program evolution: processes of software change
Program evolution: processes of software change
The program dependence graph and its use in optimization
ACM Transactions on Programming Languages and Systems (TOPLAS)
The SCHEME programming language
The SCHEME programming language
Detecting conflicts between structure accesses
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Assessing the quality of abstract data types written in ADA
ICSE '88 Proceedings of the 10th international conference on Software engineering
The relationship between slices and module cohesion
ICSE '89 Proceedings of the 11th international conference on Software engineering
The PICASSO applications framework
UIST '91 Proceedings of the 4th annual ACM symposium on User interface software and technology
Computer-aided vs. manual program restructuring
ACM SIGSOFT Software Engineering Notes
Automated assistance for program restructuring
ACM Transactions on Software Engineering and Methodology (TOSEM)
Direct update of data flow representations for a meaning-preserving program restructuring tool
SIGSOFT '93 Proceedings of the 1st ACM SIGSOFT symposium on Foundations of software engineering
An intelligent tool for re-engineering software modularity
ICSE '91 Proceedings of the 13th international conference on Software engineering
Communications of the ACM
On the criteria to be used in decomposing systems into modules
Communications of the ACM
Program Restructuring via Design-Level Manipulation
ICSE '93 Selected papers from the Workshop on Studies of Software Design
Proceedings of the First JSSST International Symposium on Object Technologies for Advanced Software
Restructuring Symbolic Programs for Concurrent Execution on
Restructuring Symbolic Programs for Concurrent Execution on
Architectural Tradeoffs for a Meaning-Preserving Program Restructuring Tool
IEEE Transactions on Software Engineering - Special issue on software architecture
Tool support for planning the restructuring of data abstractions in large systems
SIGSOFT '96 Proceedings of the 4th ACM SIGSOFT symposium on Foundations of software engineering
Just-in-time architecture: planning software in an uncertain world
ISAW '96 Joint proceedings of the second international software architecture workshop (ISAW-2) and international workshop on multiple perspectives in software development (Viewpoints '96) on SIGSOFT '96 workshops
Assessing modular structure of legacy code based on mathematical concept analysis
ICSE '97 Proceedings of the 19th international conference on Software engineering
How Software Engineering Tools Organize Programmer BehaviorDuring the Task of Data Encapsulation
Empirical Software Engineering
Tool Support for Planning the Restructuring of Data Abstractions in Large Systems
IEEE Transactions on Software Engineering
Structural Views, Structural Evolution, and Product Families
Proceedings of the Second International ESPRIT ARES Workshop on Development and Evolution of Software Architectures for Product Families
Strongest postcondition semantics as the formal basis for reverse engineering
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
RIPPLES: Tool for Change in Legacy Software
ICSM '01 Proceedings of the IEEE International Conference on Software Maintenance (ICSM'01)
Star diagram with automated refactorings for Eclipse
eclipse '05 Proceedings of the 2005 OOPSLA workshop on Eclipse technology eXchange
Hi-index | 0.00 |
A software engineer can use a meaning-preserving program restructuring tool during maintenance to change a program's structure to ease modification. One common restructuring action is to create a new abstract data type by encapsulating an existing data structure. Data encapsulation simplifies modification by isolating changes to the implementation and behavior of an abstract data type. To perform encapsulation, a programmer must understand how the data structure is used in the code, identify abstract operations performed on the data structure, and choose concrete expressions to be made into functions. We provide a manipulable program visualization, called the star diagram, that both highlights information partinent to encapsulation and supports the application of meaning-preserving restructuring transformations on the program through a direct-manipulation user interface. The visualization graphically and compactly presents all statements in the program that use the given global data structure, helping the programmer to choose the functions that completely encapsulate it. Additionally, the visualization elides code unrelated to the data structure and to the task, and collapses similar expressions to allow the programmer to identify frequently occurring code fragments and manipulate them together. The visualization is mapped directly to the program text, so manipulation of the visualization also restructures the program. We describe the design, implementation, and application of the star diagram, and evaluate its ability to assist data encapsulation in large programs.