Main Page

Previous Section Next Section

Chapter 3: Component-Based Service Development


In the previous chapter, we discussed service-oriented architecture, which specifies service interfaces and the way service consumers, services, and registries interact. However, it does not specify how a service is implemented. Organizations that want to use service-oriented architecture for new development need to know how to develop the service implementations as well.

A basic tenet of software design is to separate a software module's interface from its implementation. SOA describes the interface. Now we will discuss implementation using component-based development. Service-based development is simply an extension of this. Component-based service (CBS) development describes a service that uses components and component-based development practices for its implementation.

The word component is applied to many different software constructs. It is used to describe user interface components, such as Java beans, and server-side logic, such as entity beans. It is also used to describe an entire functional system, such as for billing or order entry. In all cases, a component is a software package with one or more well-defined interfaces. In addition, a component executes on a component execution environment. For instance, a robust execution environment, such as a J2EE container, provides functions all components need, such as transaction management and database connection pooling. Another feature of a component is that it is packaged and deployed as an independent software entity into an execution environment. A classic definition of a software component states, "In general, software components are binary units of possibly independent production, acquisition and deployment that interact to form a functioning system" (Szyperski 1998).

In this chapter, we will discuss the component development lifecycle, from requirements-gathering through maintenance. However, we will highlight the special aspects of developing component-based services and will focus our discussion on component design principles. Each principle will be related to the effect it has on the overall system's quality attributes.

Previous Section Next Section

JavaScript Editor Java Tutorials Free JavaScript Editor