COMPONENT-BASED DEVELOPMENT Object-oriented technologies (Part Four of this book) provide the technical frame-

2.8 COMPONENT-BASED DEVELOPMENT Object-oriented technologies (Part Four of this book) provide the technical frame-

work for a component-based process model for software engineering. The object- oriented paradigm emphasizes the creation of classes that encapsulate both data and the algorithms used to manipulate the data. If properly designed and implemented, object-oriented classes are reusable across different applications and computer-based system architectures.

The component-based development (CBD) model (Figure 2.11) incorporates many The underlying

XRef

of the characteristics of the spiral model. It is evolutionary in nature [NIE92], demand- technology for CBD is

ing an iterative approach to the creation of software. However, the component-based discussed in Part Four

of this book. A more development model composes applications from prepackaged software components detailed discussion of

(called classes). the CBD process is

The engineering activity begins with the identification of candidate classes. This presented in Chapter

27. is accomplished by examining the data to be manipulated by the application and the algorithms that will be applied to accomplish the manipulation. 12 Corresponding data

and algorithms are packaged into a class.

F I G U R E 2.11

Component- Identify based devel-

candidate opment

components

Planning

Risk analysis

Look up Customer

Construct

components communication

nth iteration

of system

in library

in library

if available

Build evaluation

Customer

Engineering

construction & release

components if unavailable

12 This is a simplified description of class definition. For a more detailed discussion, see Chapter 20.

CHAPTER 2

THE PROCESS

Classes created in past software engineering projects are stored in a class library or repository (Chapter 31). Once candidate classes are identified, the class library is searched to determine if these classes already exist. If they do, they are extracted from the library and reused. If a candidate class does not reside in the library, it is engineered using object-oriented methods (Chapters 21–23). The first iteration of the application to be built is then composed, using classes extracted from the library and any new classes built to meet the unique needs of the appli- cation. Process flow then returns to the spiral and will ultimately re-enter the component assembly iteration during subsequent passes through the engineer- ing activity.

The component-based development model leads to software reuse, and reusabil- ity provides software engineers with a number of measurable benefits. Based on stud- ies of reusability, QSM Associates, Inc., reports component assembly leads to a 70 percent reduction in development cycle time; an 84 percent reduction in project cost, and a productivity index of 26.2, compared to an industry norm of 16.9. [YOU94] Although these results are a function of the robustness of the component library, there is little question that the component-based development model provides significant

advantages for software engineers. UML is discussed in

XRef

The unified software development process [JAC99] is representative of a number of some detail in Chapters

21 and 22. component-based development models that have been proposed in the industry.

Using the Unified Modeling Language (UML), the unified process defines the compo- nents that will be used to build the system and the interfaces that will connect the components. Using a combination of iterative and incremental development, the uni- fied process defines the function of the system by applying a scenario-based approach (from the user point of view). It then couples function with an architectural frame- work that identifies the form the the software will take.