RCS—a system for version control
Software—Practice & Experience
Program evolution: processes of software change
Program evolution: processes of software change
Detecting interference when merging specification evolutions
IWSSD '89 Proceedings of the 5th international workshop on Software specification and design
When objects collide experiences with reusing multiple class hierarchies
OOPSLA/ECOOP '90 Proceedings of the European conference on object-oriented programming on Object-oriented programming systems, languages, and applications
The GemStone object database management system
Communications of the ACM
SDE 5 Proceedings of the fifth ACM SIGSOFT symposium on Software development environments
A flexible object merging framework
CSCW '94 Proceedings of the 1994 ACM conference on Computer supported cooperative work
Concurrent programming in ERLANG (2nd ed.)
Concurrent programming in ERLANG (2nd ed.)
Reuse contracts: managing the evolution of reusable assets
Proceedings of the 11th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
A simple and unifying approach to subjective objects
Theory and Practice of Object Systems - Special issue on subjectivity in object-oriented systems
Dynamic class loading in the Java virtual machine
Proceedings of the 13th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
Type-based hot swapping of running modules (extended abstract)
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
A State-of-the-Art Survey on Software Merging
IEEE Transactions on Software Engineering
Conquering aspects with Caesar
Proceedings of the 2nd international conference on Aspect-oriented software development
JMLC '00 Proceedings of the Joint Modular Languages Conference on Modular Programming Languages
Optimizing Dynamically-Typed Object-Oriented Languages With Polymorphic Inline Caches
ECOOP '91 Proceedings of the European Conference on Object-Oriented Programming
Extending object oriented programming in Smalltalk
LFP '80 Proceedings of the 1980 ACM conference on LISP and functional programming
Version Control With Subversion
Version Control With Subversion
An infrastructure for development of object-oriented, multi-level configuration management services
Proceedings of the 27th international conference on Software engineering
The Role of Refactorings in API Evolution
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
ACM Transactions on Programming Languages and Systems (TOPLAS)
How do APIs evolve? A story of refactoring: Research Articles
Journal of Software Maintenance and Evolution: Research and Practice - IEEE International Conference on Software Maintenance (ICSM2005)
Language constructs for context-oriented programming: an overview of ContextL
DLS '05 Proceedings of the 2005 symposium on Dynamic languages
Classboxes: controlling visibility of class extensions
Computer Languages, Systems and Structures
Incremental model transformation for the evolution of model-driven systems
MoDELS'06 Proceedings of the 9th international conference on Model Driven Engineering Languages and Systems
Open modules: modular reasoning about advice
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
On the revival of dynamic languages
SC'05 Proceedings of the 4th international conference on Software Composition
Change-Enabled Software Systems
Software-Intensive Systems and New Computing Paradigms
Flexible features: making feature modules more reusable
Proceedings of the 2009 ACM symposium on Applied Computing
Revision classes for explicit versioning
Proceedings of the Workshop on AOP and Meta-Data for Software Evolution
Model-Centric, Context-Aware Software Adaptation
Software Engineering for Self-Adaptive Systems
Implicit First Class Genericity
SC '09 Proceedings of the 8th International Conference on Software Composition
Lessons in Software Evolution Learned by Listening to Smalltalk
SOFSEM '10 Proceedings of the 36th Conference on Current Trends in Theory and Practice of Computer Science
Object spaces for safe image surgery
IWST '09 Proceedings of the International Workshop on Smalltalk Technologies
Hot clones, maintaining a link between software clones across repositories
Proceedings of the 4th International Workshop on Software Clones
Avoiding bugs pro-actively by change-oriented programming
Proceedings of the 1st Workshop on Testing Object-Oriented Systems
Aspect-based dynamic software updating: a model and its empirical evaluation
Proceedings of the tenth international conference on Aspect-oriented software development
Change-based FODA diagrams: bridging the gap between feature-oriented design and implementation
Proceedings of the 2011 ACM Symposium on Applied Computing
Supporting simultaneous versions for software evolution assessment
Science of Computer Programming
Worlds: controlling the scope of side effects
Proceedings of the 25th European conference on Object-oriented programming
Using first-class contexts to realize dynamic software updates
Proceedings of the International Workshop on Smalltalk Technologies
Scoping changes in self-supporting development environments using context-oriented programming
Proceedings of the International Workshop on Context-Oriented Programming
CoExist: overcoming aversion to change
Proceedings of the 8th symposium on Dynamic languages
Hi-index | 0.00 |
Real world software systems change continuously to meet new demands. Most programming languages and development environments, however, are more concerned with limiting the effects of change rather than enabling and exploiting change. Various techniques and technologies to exploit change have been developed over the years, but there exists no common support for these approaches. We propose Changeboxes as a general-purpose mechanism for encapsulating change as a first-class entity in a running software system. Changeboxes support multiple, concurrent and possibly inconsistent views of software artifacts within the same running system. Since Changeboxes are first-class, they can be manipulated to control the scope of change in a running system. Furthermore, Changeboxes capture the semantics of change. Changeboxes can be used, for example, to encapsulate refactorings, or to replay or analyze the history of changes. In this paper we introduce Changeboxes by means of a prototype implementation. We illustrate the benefits that Changeboxes offer for evolving software systems, and we present the results of a preliminary performance evaluation that assesses the costs associated with Changeboxes while suggesting possible strategies for improvement.