Register your product to gain access to bonus material or receive a coupon.
Preface.
I. INTRODUCTION TO COMPONENT-BASED DEVELOPMENT.
1. Component-based Development: Attempting to Manage Chaos.Problems of Software Development.
Steps Toward Improving Software Development.
The Promise of Component-based Development.
The Feasibility of Component-based Development.
2. What are Components?Definition of a Component.
Component Granularity.
Component Environment.
Components and Their Place in a Whole.
Deploying Components.
Component Models.
Component Specification.
3. Putting Components in Perspective.The Relevance of Model-based Development.
Specification and Design Reuse.
The Relevance of Object-oriented Techniques.
Software Infrastructure and Development Automation.
Differing Needs of Different Types of Organization.
Where Component-based Development is not Relevant.
Limitations of Component-based Development.
II. THE PLANNING PROCESS.
4. Positioning Components within the Organization.The Ownership and Scope of a Component-based Development Initiative.
Coordinating Software across Organizational Units.
The Internal Market Model.
5. Software Architecture and Infrastructure.Areas of Architectural Concern.
Technical Environment Issues.
Software Infrastructure Issues.
Application Architecture Issues.
6. Defining Components.A Layered Architecture.
Component Types.
Wrappers and Adapters.
Defining the Scope of Components.
Component Specification.
7. Putting Component-based Development into Practice.Defining the Scope and Expected Benefits of a Component-based Development Initiative.
Defining a Component Blueprint.
Auditing Current Systems.
Establishing an Architectural Framework.
Organizational Considerations.
Program Planning.
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:
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 attention to 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.
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.
The book contains the following parts and chapters:
PART 1. Introduction to component-based developmentChapter 1 Component-based development: attempting to managing chaosThis 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 processChapter 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:
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 componentsChapter 10 Acquiring 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 studyChapter 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.
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.