An experimental evaluation of the assumption of independence in multiversion programming
IEEE Transactions on Software Engineering
A cookbook for using the model-view controller user interface paradigm in Smalltalk-80
Journal of Object-Oriented Programming
Software reusability: vol. 1, concepts and models
Software reusability: vol. 1, concepts and models
Analysis of Faults in an N-Version Software Experiment
IEEE Transactions on Software Engineering
ACM Computing Surveys (CSUR)
The design and implementation of hierarchical software systems with reusable components
ACM Transactions on Software Engineering and Methodology (TOSEM)
Foundations for the study of software architecture
ACM SIGSOFT Software Engineering Notes
Architectural issues in software reuse: it's not just the functionality, it's the packaging
SSR '95 Proceedings of the 1995 Symposium on Software reusability
Distributed snapshots: determining global states of distributed systems
ACM Transactions on Computer Systems (TOCS)
Architectural mismatch or why it's hard to build systems out of existing parts
Proceedings of the 17th international conference on Software engineering
Software architecture: perspectives on an emerging discipline
Software architecture: perspectives on an emerging discipline
A Component- and Message-Based Architectural Style for GUI Software
IEEE Transactions on Software Engineering - Special issue: best papers of the 17th International Conference on Software Engineering (ICSE-17)
Reuse of off-the-shelf components in C2-style architectures
ICSE '97 Proceedings of the 19th international conference on Software engineering
A formal basis for architectural connection
ACM Transactions on Software Engineering and Methodology (TOSEM)
Version models for software configuration management
ACM Computing Surveys (CSUR)
Architecture-based runtime software evolution
Proceedings of the 20th international conference on Software engineering
Using off-the-shelf middleware to implement connectors in distributed software architectures
Proceedings of the 21st international conference on Software engineering
A language and environment for architecture-based software development and evolution
Proceedings of the 21st international conference on Software engineering
Highly reliable upgrading of components
Proceedings of the 21st international conference on Software engineering
Towards a taxonomy of software connectors
Proceedings of the 22nd international conference on Software engineering
Taming architectural evolution
Proceedings of the 8th European software engineering conference held jointly with 9th ACM SIGSOFT international symposium on Foundations of software engineering
Software evolution: let's sharpen the terminology before sharpening (out-of-scope) tools
IWPSE '01 Proceedings of the 4th International Workshop on Principles of Software Evolution
Architecture-Level Support for Software Component Deployment in Resource Constrained Environments
CD '02 Proceedings of the IFIP/ACM Working Conference on Component Deployment
Mae---a system model and environment for managing architectural evolution
ACM Transactions on Software Engineering and Methodology (TOSEM)
Component evolution and versioning state of the art
ACM SIGSOFT Software Engineering Notes
A Style-Aware Architectural Middleware for Resource-Constrained, Distributed Systems
IEEE Transactions on Software Engineering
Towards a unified formal model for supporting mechanisms of dynamic component update
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Supporting the dynamic evolution of Web service protocols in service-oriented architectures
ACM Transactions on the Web (TWEB)
Self-Architecting Software SYstems (SASSY) from QoS-annotated activity models
PESOS '09 Proceedings of the 2009 ICSE Workshop on Principles of Engineering Service Oriented Systems
A fault-tolerant software architecture for component-based systems
Architecting dependable systems
Enhancing dependability of component-based systems
Ada-Europe'07 Proceedings of the 12th international conference on Reliable software technologies
The state of the art in end-user software engineering
ACM Computing Surveys (CSUR)
Process elements: components of software process architectures
SPW'05 Proceedings of the 2005 international conference on Unifying the Software Process Spectrum
Architecting web services applications for improving availability
Architecting Dependable Systems III
A framework for ensuring and improving dependability in highly distributed systems
Architecting Dependable Systems III
Compatible component upgrades through smart component swapping
Proceedings of the 2004 international conference on Architecting Systems with Trustworthy Components
ACM SIGSOFT Software Engineering Notes
Hi-index | 0.01 |
The promise of component-based software development is that larger, more complex systems can be built reasonably quickly and reliably from pre-fabricated (“ off-the-shelf”) building blocks. Additionally, such systems can be upgraded incrementally, simply by replacing individual components with their new versions. However, practice has shown that while it may improve certain aspects of an existing component, a new component version frequently introduces unforeseen problems. These problems include less efficient utilization of system resources, errors in the newly introduced functionality, and even new errors in the functionality carried over from the old version. This paper presents an approach intended to alleviate such problems. Our approach is based on explicit software architectures and leverages flexible software connectors in ensuring that component versions can be added and removed in the deployed, running system. Our connectors, called multi-versioning connectors, also unintrusively collect and compare the execution statistics of the running component versions (e.g., execution time and results of invocations). We illustrate our approach with the help of an example application.