Component Evolution and Versioning State of the Art
Total Page:16
File Type:pdf, Size:1020Kb
ACM SIGSOFT Software Engineering Notes Page 1 January 2005 Volume 30 Number 1 Component Evolution and Versioning State of the Art Alexander Stuckenholz FernUniversitat¨ in Hagen Lehrgebiet fur¨ Datenverarbeitungstechnik Universitatsstrasse¨ 27, 58084 Hagen, Germany [email protected] October 26, 2004 Abstract the kind of information about the running system as well as the lifecycle of the component in which the mechanisms are applied. Emerging component-based software development architectures The most frequently used technology in this area is versioning. promise better re-use of software components, greater flexibility, Versioning mechanisms are typically used to distinguish evolv- scalability and higher quality of services. But like any other piece ing software artifacts over time. As we will show in section 4 on of software too, software components are hardly perfect, when be- page 4, these mechanisms play an important role in component ing created. Problems and bugs have to be fixed and new features based software development too. need to be added. This paper presents an overview of current versioning mecha- This paper analyzes the problem of component evolution and nisms and substitutability checks in the area of component based the incompatibilities which result during component upgrades. software development. In a comparison, these systems will be We present the state of the art in component versioning and com- evaluated against their usability in the case of component up- pare the different methods in component models, frameworks and grades. Here we come to the conclusions that the available so- programming languages. Special attention is put on the automa- lutions are not sufficient to reduce version conflicts in component tion of processes and tool support in this area. The concluding systems. To overcome this weakness, we are proposing an im- section sketches a possible solution of these problems we are cur- proved upgrade mechanism that can applied to all major compo- rently working on. nent models. This paper is organized as follows: Section 2 on the following page will focus on the ultimate problem of evolving components, its reasons and related works. 1 Introduction Section 3 on the next page will render more precisely the au- thors comprehension of the term software component. We illus- During the last years component based software development trate the linkage mechanisms between components, which influ- changed from a pure scientific research field to a widely used tech- ence their substitutability, and the problems that arise during com- nique [1]. A number of component models for different layers ponent upgrades. Further on an overview about versioning mech- (desktop, server) have been established [2–5]. After consolidation anisms, generally used terminology in this area and the semantics of standards and specifications in this area, it is now time to look of version numbers is given. at the problems that arise by the practical use of software compo- Section 4 on page 4 introduces a component based software nents in everyday projects. system, which is used as a running example in the next sections to Just like any other piece of software too, software components clarify the different versioning mechanisms. We compare a series are hardly perfect, when they are created [6]. Problems and bugs of component models, programming languages and other systems have to be fixed and new features need to be added [7]. Software which promise solutions to the upgrade problem by using partic- development generally may be defined as the process of creating ular versioning mechanisms. The author focuses on four main and propagating changes [8]. By this process, new versions of questions: software components come into existence. To take advantage of these updates, one has to deploy the new 1. Does the system have the ability to distinguish different ver- components into the systems that use them. Doing this, the main sions of the same component at all? question is: Does the system run with the new component, or is 2. How are syntactical and semantic changes detected and how the system negatively affected by the upgrade? [9] are these changes reflected in the version information? As we will show in the following, a series of different ap- proaches exist in this area (see section 4 on page 4). They vary 3. How is the compatibility and incompatibility between differ- in the component model that is used, the kind of meta informa- ent component versions detected and how is that reflected in tion about the component, which is used for compatibility checks, the version information? ACM SIGSOFT Software Engineering Notes Page 2 January 2005 Volume 30 Number 1 4. Will the provided mechanisms warn the component user of As long as this situation lasts, the advantages of component based incompatible upgrades and does the system provide solutions software development such as flexibility, scalability and higher for such situations? quality of services are abrogated. The problem of versioning and check for substitutability is therefore one of the most burdensome In section 5 on page 8 the results will be categorized and evalu- in this area. ated with special attention to the questions and the main problem. Special importance is attracted to the automation level of the used practises to minimize the burdens for component developers and 2.1 Related Work system administrators. System Evolution is the stepwise development of systems or mod- In section 6 on page 9 we will propose an advanced component els due to environment changes [12]. These environment changes upgrade system called intelligent component swapping that seizes are, e.g., the need for new functionality, changes in use cases, new and enhances a number of mechanisms in this area to minimize the conditions (laws), implementation of new technologies or major negative effects during component upgrades and to initiate coun- changes in the processed data. At the Fraunhofer Institute for teractive measures as automatic as possible. Software- and System Technology (ISST) the project Continuous is focusing on evolving systems [12–14], which use component based software development (CBS) as a base technology. 2 The Problem In general, Configuration Management (CM) is the discipline for organizing and controlling evolving systems [15]. Accord- Software components undergo dynamic evolution during which a ing to this definition, controlling component evolution is a sub- client component experiences the effects of modifications made discipline of CM. However, the term Software Configuration to a service component even though these occurred after the client Management (SCM) includes the creation phase of software. Pro- was built [10]. cedures like construction and team work are in the center of in- Dynamic evolution means that all characteristics of a compo- terest [16]. Component Evolution also includes managing the de- nent that are observable from external clients may change over ployment of components and system management. time. These characteristics are part of different contract levels. Class Evolution is defined as the process of evolving class hi- Beugnard et. al have identified four classes of contracts in the soft- erarchies in object oriented programming. Since almost all cur- ware component world (see [11]): basic or syntactic (1), behav- rent component models are based on object oriented develop- ioral (2), synchronization (3) and quantity (4). The higher the level ment, class evolution plays an important role in this area. [17] of contracts in which changes have been performed, the lower is distinguishes the categories Class Tailoring, Class Surgery, Class the chance to detect them. So far there are a couple of approaches Versioning and Class Reorganization as solutions for evolving to detect syntactical and only a few approaches to detect behav- classes. For component evolution especially versioning plays an ioral changes (see section 4 on page 4), but we are not aware of any important role. approaches that considers the level of synchronization or quantity. Whichever level of contract is affected by component changes, such changes are necessary in many situations. In many cases 3 Components, Models and Versioning bugfixes need to be enforced, which entail changes in the compo- nent’s implementation. In some cases the requirements, like the 3.1 Definitions required precision of results or the used types, may change over time, which causes changes at the interface level of the component A widely accepted definition of the term software component is next to its implementation. The simple addition of functionality is from Szyperski [18]. He defines software components as a coarse in most cases unproblematic. grained blackbox software element with contractually specified In the case of a component upgrade, problems may arise in the syntax and semantics on both the provided and required side of the interaction of the changed component and other components in interface. He claims that a software component can be deployed the system. In these situations of incompatibilities it may come to independently and is subject to composition by third parties. malbehavior of system parts or the crash of the whole system. The rules for the creation, composition and communication of This problem did not carry so much authority, because during individual components are defined by component models and put the last years the majority of components were created by those into operation by component frameworks. developers that also had the responsibility for the whole system. A component encapsulates specific knowledge which is acces- Hence incompatibilities could be removed on the spot. But the sible only by its provided interfaces (ip). Furthermore a com- problem will emerge in the future, because a growing number of ponent needs access to some general framework services and to components will be created by third persons (Off-The-Shelf Com- other components or services to work. These necessities are ex- ponents), who do not have control over the client systems and pressed by the components required interfaces (ir).