Software Reuse and Component-Based Software Engineering
Software Reuse and Component-Based Software Engineering
Software Engineering
Software Reuse
• In most engineering disciplines, systems are
designed by composition (building system out of
components that have been used in other systems)
• Software engineering has focused on custom
development of components
• To achieve better software quality, more quickly,
at lower costs, software engineers are beginning to
adopt systematic reuse as a design process.
Types of Software Reuse
• Application System Reuse
– reusing an entire application by incorporation of one
application inside another (COTS reuse)
– Commercial Off-the-Shelf Software(COTS)
– development of application families (e.g. MS Office)
• Component Reuse
– components (e.g. subsystems or single objects) of one
application reused in another application
• Function Reuse
– reusing software components that implement a single well-
defined function
Development Reuse as a Goal
Modify requirements
Outline Search for accor ding to
system reusable discovered
requirements components components
Specify system
Search for components
Architectur al
reusable based on reusable
design
components components
Benefits of Reuse
• Increased Reliability
– components already exercised in working systems
• Reduced Process Risk
– less uncertainty in development costs
• Effective Use of Specialists
– reuse components instead of people
• Standards Compliance
– embed standards in reusable components
• Accelerated Development
– avoid custom development and speed up delivery
Requirements for Design with Reuse
• You need to be able to find appropriate reusable
components
• You must be confident that that component you
plan to reuse is reliable and will behave as
expected
• The components to be reused must be documented
to allow them to be understood and modified (if
necessary)
Reuse Problems
• Increased maintenance costs
• Lack of tool support
• Need to create and maintain a component library
• Finding and adapting reusable components
Component-Based Software
Engineering(CBSE)
• CBSE is an approach to software development that relies
on reuse.
• CBSE emerged from the failure of object-oriented
development to support reuse effectively.
• Objects (classes) are too specific and too detailed to
support design for reuse work.
• Components are more abstract than classes and can be
considered to be stand-alone service providers.
Component Abstractions
• Functional Abstractions
– component implements a single function (e.g. ln)
• Casual Groupings
– component is part of a loosely related entities like declarations and
functions
• Data Abstractions
– abstract data types or objects
• Cluster Abstractions
– component from group of cooperating objects
• System Abstraction
– component is a self-contained system
Engineering of Component-Based
Systems - part 1
• Software team evoke system requirements
• Architectural design is established
• Team determines requirements are amenable to composition
rather than construction
– Are commercial off-the-shelf (COTS) components available to implement the
requirement?
– Are internally developed reusable components available to implement the
requirement?
– Are the interfaces for available components compatible within in the
proposed system architecture?
• Team attempts to remove or modify requirements that cannot
be implemented with COTS or in-house components
Engineering of Component-Based
Systems - part 2
• For those requirements that can be addressed with
available components the following activities take place:
– component qualification
– component adaptation
– component composition
– component update
• Detailed design activities commence for remainder of the
system
Definition of Terms
• Component Qualification
– candidate components are identified based on services provided and means
by which consumers access them
• Component Adaptation
– candidate components are modified to meet the needs of the architecture or
discarded
• Component Composition
– architecture dictates the composition of the end product from the nature of
the connections and coordination mechanisms
• Component Update
– updating systems that include COTS is made more complicated by the fact
that a COTS developer must be involved
Commercial Off-the-Shelf Software
• COTS systems are usually complete applications
library the off an applications programming
interface (API)
• Building large systems by integrating COTS
components is a viable development strategy for
some types of systems (e.g. E-commerce or video
games)
Reusable Components
• Tradeoff between reusability and usability
– generic components can be highly reusable
– reusable components are likely to be more complex and
harder to use
• Development costs are higher for reusable
components than application specific components
• Generic components may be less space-efficient
and have longer execution times than their
application specific analogs
Software Maintenance
• Software is a model of the real world. When the real world changes,
the software require alteration wherever possible.
2. Adaptive Maintenance: It contains modifying the software to match changes in the ever-
changing environment.
3. Preventive Maintenance: It is the process by which we prevent our system from being
obsolete. It involves the concept of reengineering & reverse engineering in which an old
system with old technology is re-engineered using new technology. This maintenance
prevents the system from dying out.