This is a book about CBSE - Component-Based Software Engineering. CBSE is the emerging discipline of the development of software components and the development of systems incorporating such components. Component-based systems are built by assembling components developed independently of the systems. To assemble components, a proprietary code, which connects the components, is usually needed. This code is often referred to as “glue code”. In an ideal world of components the assembly process is smooth and simple: the effort required to obtain the glue code is practically negligible; a system incorporating components knows everything about them – their operational interfaces and their non-functional properties and the components are exactly what the system needs; in short, components can be assembled as easily as Lego blocks. In the real world, the component-based development process is complex and often difficult; systems are built from pre-existing components when appropriate and possible and by developing a new code specific to the particular system. The system may know about the syntax of the operational interfaces of the components, but not necessarily their other properties. Developing the glue code can be costly - it may take a longer time to develop it than the components concerned. Software components are in fact much harder to assemble than Lego blocks: Constructing software systems from components “is more like having a bathtub full of Tinkertoy, Lego, Erector set, Lincoln logs, Block City, and six other incompatible kits – picking out parts that fit specific functions and expecting them to fit together” (Mary Shaw: Architectural Issues in Software Reuse: It’s Not Just the Functionality, It’s the Packaging, Presentation slides at the Symposium on Software Reusability SSR’95). CBSE tries to make the real world as close as possible to the ideal world of component-based development. There is a long way to go to achieve this goal.
In spite of many difficulties, the component-based approach has achieved remarkable success in many domains. A majority of the software programs we use everyday take advantage of component-based technologies. There are however many classes of software in which the utilization of the component-based approach is rudimentary. For these classes of software the specification of “how” is at least as important as the specification of “what”. Example of these classes of systems are reliable systems, safety-, business- or mission- critical systems, (also known as dependable systems), embedded systems. The general-purpose component technologies currently available cannot cope with the non-functional (or more correctly extra-functional) requirements of such systems. These additional requirements call for new technologies, new methods and a specific approach of component-based software engineering. This book describes the basic principles, trends in research and practice of CBSE with emphasises on dependable systems.
The book is divided into parts, each of which explores a theme through the different chapters. Each part begins with a short introduction presenting its objective and an overview of the chapters. Although the parts and the chapters are relatively independent of each other, several principles apply to all. The first principle is from general to concrete: The book begins with general parts related to software components, proceeds through topics such as processes related to component-based software engineering, continues with domain-specific processes, and concludes with concrete case studies. The second principle is from theoretical to practical issues: While the first chapters discuss theoretical topics such as component specifications, the last chapters give examples of the use of concrete component models. The third principle is from simple to complex. The first chapters discuss the elements of component-based development, the components, the middle parts describe systems built from components, and the final parts give complex examples of real component-based systems.
The book consists of seven parts:
Part 1, The Definition and Specification of Components, gives en overall introduction to components and the basic terminology of component-based software engineering.
Part 2, Software Architecture and Components, discusses different component models from the point of view of software architecture.
Part 3, Developing Software Components, describes a component-based development process and certain methods for the successful design and specification of components.
Part 4, Using components, discusses problems related to component evaluation, integration and testing.
Part 5, Software Product Lines, gives an overview of Software product line architectures and gives a case study of a component model used in a product line.
Part 6, Real-time software components, discusses the principles and methods for building real-time, embedded and safety-critical systems.
Part 7: Case Studies, Component-Based Development in Industrial Applications, shows how the methods and theory described previously in the book are implemented or utilized in concrete cases.
This book is directed toward several reader categories. Software developers and engineers will find the theoretical grounds to existing component models. The case studies will provide useful information about challenges, pitfalls and successes in the practical use of component-based technologies. Experienced developers will find useful technical details in the last part of the book, while inexperienced developers can learn about the principles of component-based software engineering. Project and company managers will be interested in the process and organisational aspects of component-based development, either for developing components, or systems, with a focus on the reuse of components. The book includes topics related to current research and to the state of the art of CBSE. For this reason, it will be of interest to researchers, either those beginning research in this field or those already involved. Extensive lists of references in each chapter give a broad insight into current trends. Finally, the book is appropriate as a course book, primarily for graduate students or undergraduate students in the later years of their studies.
The different chapters have been written by different authors, experts in different areas. For this reason all chapters are relatively autonomous and can be read independently of each other. For a broader perspective of a topic, an entire part of interest can be read. This does not exclude a reading of the entire book! It is not necessary for the book to be read in the order in which the book is organised. Those interested in basic principles and theories related to component models would be interested in the first parts, especially chapters 1 to 5. As course literature, a reading could begin with the first parts and a study of some of the chapters presenting case studies (i.e. chapters 12, or 15 to 19). An experienced practitioner or researcher might be especially interested in these chapters. Chapters 2 and 6 to 10 are more of a theoretical and research character with many open questions and might therefore be of special interest to researchers and graduate students. Chapters 5, 11, 13 and 19 cover component-based software lifecycle and can be of special interest to project leaders or those working with development processes. Chapters 13 to 17 are related to real-time and dependable systems.
The book Web site http://www.idt.mdh.se/cbse-book includes set of presentation slides and additional material to support the use of this book in teaching and personal study. Instructors may freely use and modify the presentation material.
Many people contributed to the development of the book. First, we wish to thank all the authors. It was a wonderful experience to work with them; to read the contributions, to discuss the book’s overall objectives, or particular ideas. We never met all together; still we made a great team. We are grateful to all the reviewers, known and unknown to us. Special gratitude to Heinz Schmidt, who reviewed the entire book and whose comments greatly improved the book. The students attended the CBSE course at Mälardalen University have reviewed, presented and analysed the chapters and work on selected topics from the book. They gave an excellent view of the book and their comments and discussions contributed to the book improvement. We wish to thank Victor Miller who did a great job by reviewing all chapters and enhancing the writing style. We are particularly indebted to Tim Pitts and Ruth Harris from Artech House for their enormous and continuous support during the writing of the book.’
Finally a huge thank to our families, to the children Tea and Luka, and Amy, Jacob and Ida, and to our wives Gordana and Christina for their love and support.
Ivica Crnkovic and Magnus Larsson