"Component-Based Software Engineering: Putting the Pieces Together" is an edited, state-of-the-art text composed of 42 chapters by 40 of the world's best known authors in the fields of component-based development, component-based software engineering, and component reuse. The book, although multi-authored, was designed from inception to read as if written by one author for the sake of the intended audience. Consistency of salient definitions was adopted by the authors, or authors explained any deviations from the definitions to diminish readers' confusion. The book covers the best practices of software engineering and describes even more stringent practices necessary for the assembly of components, especially for long-term reuse.
Additionally, the authors describe the pitfalls of component process gone awry and the financial and personnel cost that result from mistakes in the component development process. The book is balanced in that component-based software engineering (CBSE) is not presented as a panacea and problems experienced in the field are described as topics for further research. Routinely, the co-editors recommend that empirical studies are required before the promise of a component and reuse revolution in software development will occur.
Review By: Jan A. Scott 03/03/2003Component-based software engineering (CBSE), as defined by the authors of this book, is a method for developing software systems by combining independent, reusable software elements known as components into larger units to form computer applications. This process is more like electrical or mechanical engineering than it is to the common conceptions of software development. For example, a hotplate intended to heat liquids would contain a number of electrical components such as a power on-off switch, a heating element, and a programmable heating element that would turn the hot plate off if it overheats. These components would be standardized, their specifications published, and the component certified by a third party, typically Underwriters Laboratories (UL). The engineer would purchase and assemble the components into the final system, the hotplate. So too, CBSE is a method of assembling pre-produced components into a final software application.
Testers and QA specialists will especially appreciate this book as the authors strongly state that components must be "trustworthy" to be purchased and used to assemble applications. This means that components must be developed using empirical engineering methods, must be documented rigorously, and must be subjected to exhaustive testing. The authors criticize the current state of software development as routinely producing low-quality, buggy code. They believe this can change using CBSE methods, but it will take commitment from upper management and new engineering-based university education for our software developers and managers.
The book provides an overview of the state-of-the-practice CBSE. It contains chapters giving technical information such as definitions, details of component model implementations (COM+, CORBA, and JavaBeans), and configuration management systems. It also contains more managerial information, such as sections on the business case for components, project management of CBSE projects, and legal issues. Each chapter is written by a different author and contains an introduction and a summary. This turns potentially dry subject matter into very interesting reading.
As a veteran of the software business for many years, I thought much of the information was not really so new. (Good project management principles have been in place for years and so has the idea of reusable software components or modules.) But the material is presented in a new context, the authors are not shy about stating their strong opinions, and they don't mind disagreeing with one another. This all makes for a thought-provoking book.