Component-Based Development: Principles and Planning for Business Systems
Katharine Whitehead · Medical Entomology and Zoology · 2002
From the Book: This book tries to answer the questions: What is it that we are trying to achieve with components? and How can we define and implement components so that we do achieve this? It is intended to provide an insight into the specific benefits of component-based development (CBD) and to convey the conceptual issues that must be fully understood in order to be successful with CBD. It aims to: explain the rationale for CBD and the key concepts behind it; outline an approach to program planning that should significantly improve the effectiveness of CBD; provide guidance on introducing a component-based approach into the organization; provide an understanding of the issues involved in the design and assembly of components, including strategies for scoping components and for managing their assembly. It is left to other books in the field to provide technical insights into J2EE, .NET, etc. or to provide a full method that would necessarily have a heavy emphasis on modeling techniques. Instead, it is assumed that you will use a model-based development method (preferably OO or at least hybrid). This assumption makes it possible to concentrate in this book on issues that are specific to adopting a component-based approach, rather than discussing software development techniques that are already widely understood. CBD is usually regarded as principally relevant to new software development. However, software development cannot take place in a vacuum. It must take account of the current application portfolio and existing software infrastructure of the organization. It is for this reason that this book pays particular attentionto program planning. In this book, CBD and integration with existing systems are seen as natural partners. Software development is seen as a process of gradual migration forwards from an existing application portfolio to an improved (and more component-based) application portfolio. CBD provides a means of achieving this gradual improvement, while a component-based vision of how the application portfolio could ultimately look provides guidance as to how to move it forwards. Audience This book aims to meet the needs of practitioners, and in particular the needs of program planners and architects, who are likely to be responsible for achieving the introduction of CBD into the organization. Managers, designers, and developers should also find it of use. Content and organization The book contains the following parts and chapters: PART 1. Introduction to component-based developmentChapter 1 Component-based development: attempting to managing chaos This chapter explains the industry context within which CBD has emerged, and why CBD provides a way of dealing with the conflicting pressures facing software developers. Chapter 2 What are components? This chapter provides a definition of components and a discussion of component characteristics. It also discusses the environment required to support components, and briefly outlines the advantages and disadvantages of existing component models such as COM, CORBA, and EJB. Chapter 3 Putting components in perspective CBD is only a part of what is relevant for effective software development. This chapter positions CBD in relation to other development techniques, and in relation to OO. It also discusses the limitations to the potential of CBD, and the contexts in which it will not be relevant. PART 2. The planning process Chapter 4 Positioning components within the organization phis chapter discusses the ownership and scope of a CBD initiative and its positioning within the organization. Chapter 5 Software architecture and infrastructure This chapter discusses the need for an architecture and the various aspects that an architecture for CBD needs to cover. Chapter 6 Defining components This chapter covers the principles affecting component definition: coarse- versus fine-grained components; types of component and how they can be fitted together; defining component scope. Emerging standards are discussed. Chapter 7 Putting component-based development into practice This chapter builds on the previous three chapters and outlines a set of tasks that can be carried out to create an initial CBD strategy and to refine this strategy over time. Chapter 8 Pragmatics of program planning This chapter discusses how the CBD strategy can be put into effect over time, as part of program planning. It covers the process of reconciling an ideal vision with short-term requirements and messy reality. Chapter 9 Organization for component-based development This chapter discusses alternative organizational structures for implementing a zBD program. It discusses roles and team structures for strategy planning, component acquisition, and component assembly. PART 3. Building and assembling components Chapter 10 Acquir components This chapter covers issues that are specific to procuring components as opposed to packages. Chapter 11 Designing components This chapter discusses how to design components for flexibility [ and where to draw the line in designing for reuse. Chapter 12 Assembling components This chapter discusses some of the issues that arise when fitting components together. Chapter 13 Testing, certification, and maintaining a component catalog This chapter outlines issues relating to the management and maintenance of a portfolio of components, including a consideration of what is needed to make a component available for reuse or sale. PART 4. A brief case study Chapter 14 Managing chaos with components This chapter contains a brief (fictional) case study of the use of CBD in an organization with existing mainframe-based applications that is evolving toward a component-based approach, as it introduces call centers and Internet-based systems. Acknowledgments The origins of this book lie in work on components that my colleagues and I carried out while I was working at Seer Technologies. I owe much to Jon Cogdale, who was my collaborator on our original research into components, and my examples in Chapter 7 are based on his. Graham Berrisford contributed lively and thought-provoking discussion of the concepts, and the order processing examples in Chapter 12 owe much to discussions with him. Amongst my colleagues, Doug Kime, Rob Allen, Tony Phillips, Bernard Londeix, Mark Gilbert, and Martin Carter also offered valuable advice. I also learned from the experiences our customers shared with us, from the CBDi Forum run by David Sprott and Lawrence Wilkes, as well as from other literature and work in the field.