A cutting-edge, UML-based approach to software development and maintenance that integrates component-based and product-line engineering methods.
- ripe market: development of component-based technologies is a major growth area
- CBD viewed as a faster, more flexible way of building systems that can easily be adapted to meet rapidly-changing business needs and integrate legacy and new applications
(e.g. Forrester report in June 1998 predicted that by 2001 "half of packaged apps vendors will deliver component-based apps";
e.g. Butler Group Management Briefing (2000): "Butler Group is now advising that all new-build and significant modification activity should be based on component architectures...Butler Group belives that Component-Based Development is one of the most important events in the evolution of information technology"
e.g. Gartner Group estimates that "by 2003, 70% of new applications will be deployed as a combination of pre-assembled and newly created components integrated to form complex business-systems.
The book defines, describes and shows how to use a method for component-based product-line engineering, supported by UML. This method aims to dramatically increase the level of reuse in software development by integrating the strengths of both of these approaches. UML is used to describe components during the analysis, design & implementation stages and capture their characteristics and relationships.This method includes two new kinds of extensions to the UML: new stereotypes to capture KobrA-specific concepts and new metamodel elements to capture variabilities. The method makes components the focus of the entire software development process, not just the implementation and deployment phases.
The method has grown out of work by two companies in industry (Softlab & Psipenta) and two research organizations (GMD FIRST & Fraunhofer IESE) called the KobrA project. It is influenced by a number of successful existing methods e.g. Fusion method, Cleanroom method, Catalysis & Rational Unified Process, integrated with new ideas in an innovative way. Benefits for the reader:
- gain a clear understanding of the product-line and component-based approaches to software development
- learn how to use UML to describe components in analysis, design and implementation of components
- learn how to develop and apply component-based frameworks in product-lines
- learn how to build new systems from pre-existing components and ensure that components are of a high quality
The book also includes:
- case studies: library system example running throughout the chapters; ERP/business software system as appendix or separate chapter
- appendices covering: UML profiles, concise process description in the form of UML activity diagrams, refinement/translation patterns
AUDIENCE Software engineers, architects & project managers. Software engineers working in the area of distributed/enterprise systems who want a method for applying a component-based or product-line engineering approach in practice.
2. KobrA method overview
3. Framework engineering
4. Komponent specification
5. Komponent realization
6. Context realization
7. Component reuse
8. Application engineering
9. Komponent implementation
10. Configuration and change mangement
11. Quality assurance and modeling
12. Transfer & customization
Bringing the levels of reuse in software development into line with that in other engineering disciplines has been a long sought after but elusive goal of software engineering. In the last few years, however, new development paradigms have emerged which promise to radically change this situation, and allow software engineering to claim its rightful place in the family of engineering disciplines. Most prominent among them are component-based software development and product line engineering. At one end of the granularity spectrum, components represent reusable software building blocks that can be quickly and easily assembled into new systems, while at the other end of the spectrum product line engineering consolidates all the common parts of an organizationms range of products within a single, highly reusable software core.
Unfortunately, the exploitation of these paradigms for enterprise software development is frustrated by the lack of prescriptive, systematic methods for their application. Contemporary software methods that accommodate components or product lines typically do so either very late in the software life-cycle (in the case of components), or very early in the life-cycle (in the case of product lines). Few, if any, existing methods exploit the natural synergy between components and product lines at all stages and levels of development. This book presents a new method, known as KobrA, that aims to address this problem by offering a simple, prescriptive and systematic approach for component-based product line engineering across the full software life-cycle. It also leverages the Unified Modeling Language (UML) to support the two paradigms in a way that is compatible with most mainstream implementation and middleware technologies, including the leading component technologies. It therefore provides a foundation for a Model Driven Architecture (MDA) approach to software engineering.
A major goal of KobrA is to avoid the feature overload found in many other methods by defining as simple and orthogonal a feature set as possible. In particular, both the product and the process of KobrA are based on the recursive application of a minimal set of core principles. Another major emphasis of KobrA is on quality. The very power of components and product lines to promote reuse makes it imperative that the reusable assets are of the highest possible quality. Clearly, an organization that systematically develops and reuses poor-quality artifacts will not fare well in the long run. Well-defined consistency rules, and systematic techniques for verifying them, are therefore integrated into all parts of the method.
The evolution of software development methods is characterized by periods in which there is a rapid proliferation of concepts followed by periods of unification and consolidation. The story of the UML is perhaps the clearest example of this pattern. We hope the ideas in KobrA will represent a step towards the consolidation of component-based and product line development concepts, and help to expose and refine some of the key principles involved. Product line engineering is characterized by the idea of analyzing and explicitly capturing the commonalities and variabilities among different members of a product family. Component-based development is characterized at the analysis and design levels by llocalizedn development artifacts (e.g. UML diagrams) focussed on the description of individual logical abstractions (i.e. components). These two core ideas form the backbone of the book.
The method described in this book was developed as part of a project funded by the German Federal Ministry of Education and Research (BMBF) known as the Komponentenbasierte Anwendungsentwicklung1 or KobrA project. Four organisations collaborated in the project:
This book is intended primarily for software engineers who are looking for a simple but prescriptive method for developing software, especially those involved in the development of a family of applications who seek leverage from existing software assets. Because of the modular nature of the method, the main technological ingredients can be applied independently of one another. Developers seeking support with component-based developments can apply the component-oriented ideas independently of product lines. Similarly, developers seeking help with model-driven architectures can apply the specification and realization ideas without worrying about components.
The book will also be of interest to academics and students who wish to gain a greater insight into the key principles of component-based development and/or product line engineering and how they relate to one another.
Readers should ideally have a familiarity with the general concepts of software engineering, the fundamentals of object-oriented software development, and the main features of the UML.
The book is organized in five parts. Part 1 provides an introduction to the KobrA method and its background, and gives an overview of its key features. Part 2 focuses on the activities involved in modeling a system of logical components using the UML, without concern for product line issues. Part 3 describes how executable incarnations of these logical components can be attained, either by direct implementation or by the reuse of existing components such as Commercial Off-The-Shelf (COTS) components, and discusses how this fits into an incremental development approach. Part 4 focuses on product line engineering, and shows how support for product lines can be added. Finally, Part 5 focuses on the critical supporting activities, namely maintenance, quality assurance, quality modeling, and the introduction of KobrA into real-life software development settings.
Two appendices follow the main body of the book. Appendix A describes the KobrA metamodel, and includes a complete listing of the consistency rules that govern the structure and relationships of components. Appendix B provides a detailed specification of the KobrA process, and includes a complete listing of the activities that make up the process and the product flow dependencies between them.
A single, running case study is used in all but Part 1 of the book to illustrate the application of the KobrA method. The domain of library systems is used for the case study since its basic concepts are familiar to nearly everybody. Systems in this domain help librarians and information professionals perform the tasks involved in running a library. This includes assistance in customer interaction, stock management, and accounting.
The basic library system supports the management of registered users and available items and tracks all performed loans, returns, and reservations. This basic library is selected as the particular member of the library system family used to illustrate the development of single systems in Parts 2 and 3 of the book.
The illustration of the product line concepts in KobrA requires many more details about the library system domain to be useful. For this purpose, three library systems were analyzed and their common and distinct features modeled in a generic framework. The extension of the case study to cover product lines is explained in Part 4.