edited by Gary T. Leavens and Murali Sitaraman. © 2000, Cambridge University Press, New York, NY. Used by permission.
Component-based software construction has become a central focus of software engineering research and computing practice. There is a near-universal recognition in the field that development of high-quality systems on time is possible only through assembly of well-conceived and prefabricated software components.
This volume brings together, for the first time, programming and specification issues as well as framework, architecture, and distributed computing issues that should be considered in designing component-based systems. It simultaneously tries to lay a foundation to bridge a spectrum of approaches that span current component-based technology and formal foundational research. The technological chapters focus on component structure and integration issues, providing a basis for the latter chapters that focus on component semantics in sequential and concurrent setting. Taken together, these chapters should benefit software engineering practitioners in enhancing component-based construction practice and researchers in establishing a connection to practical technology. They should also provide new research directions to computer science and engineering graduate students for advancing the field.
The volume begins with a chapter by Szyperski, which summarizes current technologies, including COM, CORBA, and JavaBeans. This chapter highlights the importance and role of component-based construction for modern computing. It also outlines essential problems to be solved for component-based software to become both reliable and effective.
Following this initial chapter, Part One of the volume focuses on elements of frameworks and architectures for component-based composition. Though the chapters in this section use particular languages and notations to illustrate the ideas, the central themes of the chapters are generally applicable to all component-based software construction.
In Part One, the chapter by Luckham, Vera, and Meldal explains that an architecture is a specification of the components and communication among them, and elaborates on the concepts needed to support this view. Garlan, Monroe, and Wile introduce ACME as a common representation for software architectures and as an enabler to integrate systems built using alternative architecture definition languages. The chapter by Lumpe, Achermann, and Nierstrasz defines the requirements of a flexible software composition language and provides formal semantic foundations to facilitate precise specification and formal reasoning. Chen and Cheng describe criteria for matching specifications and explain what constitutes a reuse-ensuring match.
Part Two deals with aspects of formal specification and verification, with emphasis on object-based software construction. The chapters discuss behavioral subtyping, specification and verification, and preservation of behavior when objects of one type are converted to another. Leavens and Dhara give a background and survey of behavioral subtyping, which is a relationship between types that allows modular specification and verification of object-oriented software. Müller and Poetzsch-Heffter explain a modular technique for specifying and verifying object-oriented components. Wing and Ockerbloom's chapter focuses on guaranteeing consistent observable behavior when converting objects of one type to another.
Part Three concentrates on formal models and formal semantics of components and compositions. The chapters in this part describe complementary approaches for understanding components and compositions.
In Part Three, the chapter by Bergner, Rausch, Sihling, Vilbig, and Broy gives a formal model that encompasses both components and object-oriented features of programming languages. They use this model to describe the meaning of commonly used graphical description techniques (such as some diagram forms in the UML). Gibson, Weide, Pike, and Edwards provide a formal model of parameterized component-based (software) systems that facilitates modular reasoning about collections of interacting components. Goguen and Tracz describe an algebraic approach to software engineering. Their chapter introduces module expressions to compose components and provides an implementation-oriented semantics for composition.
Part Four of the volume contains chapters on reactive and distributed computing, two critical aspects of component-based systems, and modern software practice. The chapter by Lano, Bicarregui, Maibaum, and Fiadeiro describes a modular, declarative approach for specification of reactive systems. The approach is suitable for model-based design notations such as VDM and B. Garland and Lynch's chapter presents a new language for structured modeling of distributed computing systems, using a mathematical I/O automaton model as the basis. The chapter also provides an overview of design and analysis tools that can be developed using the model.
Though we have organized this volume beginning with issues on languages and frameworks, and proceeding to techniques for specification, verification, formal models, and distribution, the individual parts and chapters in this volume are self-contained. A reader or teacher should be able to choose the order in which to read or discuss the chapters.
The chapters in this volume have not been previously published. They were particularly solicited for this volume from experts in the field. To ensure high quality, all chapters were peer reviewed. Every chapter, except for one, had at least two reviewers. In every case, the reviewers provided detailed and timely feedback to the authors for revision. Our sincere thanks are due to the reviewers, including: Franz Achermann, Uwe Assmann, Gerald Baumgartner, Manfred Broy, Jack Callahan, Betty Cheng, Paolo Ciancarini, James Donahue, Stephen Edwards, Bernd Fischer, Rustan Leino, Ali Mili, Anna Mikhajlova, Oscar Nierstrasz, John Penix, Johannes Sametinger, Oleg Sheyner, Judith Stafford, and Raymie Stata.
Our sincere thanks to Lauren Cowles at Cambridge University Press for her support and advice during this project, and to Ernie Haim for his careful eye and help in the production of this book. We thank Addison-Wesley for giving permission to Szyperski to derive his chapter from his book Component Software: Beyond Object-Oriented Programming (Addison-Wesley, 1998). We also thank the U.S. National Science Foundation, the U.S. Defense Advanced Research Projects Agency, and our institutions for supporting this editorial work. Thanks to Janet from Gary and to Susan and Nathan from Murali for their love and support.
Gary T. Leavens, Ames, Iowa
Murali Sitaraman, Morgantown, West Virginia
January 14, 2000
home page for the book
Gary T. Leavens
Last update $Date: 2000/04/06 19:44:36 $