Decentralized Software Evolution

Abstract : We define decentralized software evolution as the ability to evolve software independent of the original software vendor. Decentralized software evolution (DSE) provides a means for third-party software vendors to customize existing applications for particular domains and customers. This capability benefits everyone involved: the original application vendor sells more product since customization constitutes use; the third-party developer delivers a product in less time and with lower cost by reusing software instead of starting from scratch; and the customer receives a higher quality product in less time and with lower cost. Although reliable, rapid, and cost effective software evolution has been a principal concern of software research since the 1970's, results to date do not directly address DSE. The principles and techniques of software evolution anticipation of change, separation of concerns, modularity, information hiding, object-oriented design, mediator-based design, adaptive object-oriented design, design patterns, aspect-oriented design, etc. help design evolvable software systems. Unfortunately, the flexibility attained using these techniques is lost when the application is compiled for use. The compilation process solidifies the plasticity of a design, making it exceedingly difficult to accommodate a change that would otherwise be easy to make. The objective of DSE is to preserve the design's plasticity in the deployed system, thereby enabling third-party evolution.

[1]  D. Levandier,et al.  Approved for Public Release; Distribution Unlimited , 1994 .

[2]  WirthNiklaus Program development by stepwise refinement , 1971 .

[3]  James Martin,et al.  Object-oriented analysis and design , 1992 .

[4]  Niklaus Wirth,et al.  Program development by stepwise refinement , 1971, CACM.

[5]  Gregor Kiczales,et al.  Aspect-oriented programming , 2001, ESEC/FSE-9.

[6]  Alexander L. Wolf,et al.  Acm Sigsoft Software Engineering Notes Vol 17 No 4 Foundations for the Study of Software Architecture , 2022 .

[7]  Peyman Oreizy,et al.  On the role of software architectures in runtime system reconfiguration , 1998, IEE Proc. Softw..

[8]  David Notkin,et al.  Reconciling environment integration and software evolution , 1992, TSEM.

[9]  Karl Lieberherr,et al.  Adaptive Object-Oriented Software: The Demeter Method with Propagation Patterns , 1995 .

[10]  Mark R. Cutkosky,et al.  Madefast: collaborative engineering over the Internet , 1996, CACM.

[11]  Clemens A. Szyperski Independently Extensible Systems - Software Engineering Potential and Challenges , 1996 .

[12]  Richard N. Taylor,et al.  A Component- and Message-Based Architectural Style for GUI Software , 1995, 1995 17th International Conference on Software Engineering.

[13]  Jean-Marc Nerson,et al.  Object-Oriented Analysis and Design , 1992, TOOLS.

[14]  Roy T. Fielding,et al.  The Apache HTTP Server Project , 1997, IEEE Internet Comput..

[15]  Massachusett Framingham,et al.  The Common Object Request Broker: Architecture and Specification Version 3 , 2003 .

[16]  Peyman Oreizy,et al.  Architecture-based runtime software evolution , 1998, Proceedings of the 20th International Conference on Software Engineering.

[17]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .

[18]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[19]  Peyman Oreizy,et al.  On the role of software architectures in runtime system reconfiguration , 1998, Proceedings. Fourth International Conference on Configurable Distributed Systems (Cat. No.98EX159).

[20]  Richard S. Hall,et al.  An architecture for post-development configuration management in a wide-area network , 1997, Proceedings of 17th International Conference on Distributed Computing Systems.

[21]  Gail E. Kaiser,et al.  Models of software development environments , 1988, ICSE '88.

[22]  Robert Balzer,et al.  Instrumenting, Monitoring, & Debugging Software Architectures , 1998 .