Ch1-Concept and Terminology part 2
Ch1-Concept and Terminology part 2
Module 1:
Concept and Terminology
Part 2
Software Reuse Processes
• Corporate management
– Initiates the reuse initiative and monitors the
attending costs and benefits
• Domain engineering team
– Responsible for producing, classifying and
maintaining reusable assets
• Application engineering team
– Responsible for producing applications, possibly
using reusable assets
Software Reuse Processes:
Organizational Structures
• Organizational Structures is defined by a set of
rules that describe the relationships between
the various stakeholders of the software reuse
initiative
• Define the goals of each stakeholder,
reporting relations between stakeholders,
accounting procedures (who gets credit for
what), incentives structures and rewards
structures
Software Reuse Processes:
Domain Engineering
• Domain Analysis
• Domain Engineering
• Asset Acquisition
• Asset Classification
• Asset Maintenance
Software Reuse Processes:
Domain and Application Engineering
Software Reuse Processes:
Domain Engineering
• Domain Analysis
– Define application domain
– Analyze to develop reuse infrastructure for the
domain
Software Reuse Processes:
Domain Engineering
• Domain Engineering
– The team proceeds to build the reuse
infrastructure that is required to support
application development within the domain
– Includes generic architecture (captures structural
commonalities/general data identified) and;
– Set of reusable asset specifications and protocols
that fit in the architecture
Software Reuse Processes:
Domain Engineering
• Asset Acquisition
– Consists of development for reuse (some external
procurement of reusable assets)
– Differs from traditional development; meet
requirements of genericity, reliability,
maintainability and documentation
Software Reuse Processes:
Domain Engineering
• Asset Classification
– This task is in effect the database administration
task; consists of cataloging and storing reusable
assets to facilitate retrieval and assessment by
application engineering team
Software Reuse Processes:
Domain Engineering
• Asset Maintenance
– This task is in effect a maintenance task, merged
with a configuration management/ version control
task
– As components evolve through corrective
maintenance (correcting bugs) and perfective
maintenance (producing successive upgrades), the
applications that use these components may be
affected and need to modify
Software Reuse Processes:
Application Engineering
• Development with Reuse
• Specifying Reusable Assets
• Reengineering for Reuse
Software Reuse Processes:
Application Engineering
• Development with Reuse
– Impact whether using top-down OR bottom-up
– Reuse-based top-down discipline of application
development;
• Requirements specification: the application’s
requirements are specified
• Product design: the system’s design is refined to the
point where it is possible to identify design units that
can be found in reusable library
Software Reuse Processes:
Application Engineering
• Retrieval: the units are looked up in the reuse library
and then assessed to determine whether adequate
design for the purposes of the design at hand
• Coding the missing units: not found in the library
• And subsequent integration and testing
– Reuse-based bottom-up discipline;
• After requirements specification, proceed to browse
the library and then to develop a design that takes the
best possible advantage of the assets we have seen in
the library
Software Reuse Processes:
Application Engineering
• Specifying Reusable Assets
– Under an application-centered organization, the
application engineering team is mandated to
commission the development of reusable assets;
for purposes of a specific project with
understanding of long-term reuse potential
Software Reuse Processes:
Application Engineering
• Reengineering for Reuse
– The application engineering team may take
components developed for a specific application
and select them for reuse
– Selected based on their reuse potential; before
they are integrated into the reuse library, they
need to be reengineered to meet the reusability
standards of the library
Exercises
1.3.5
Software Reuse Paradigms
• Paradigms for Software Retrieval
• Paradigms for Software Adaptation
• Paradigms for Software Composition
Software Reuse Paradigms
• Paradigms for Software Retrieval
– Browsing: consists of navigating the software
library
– Retrieval: consists of navigating the library to find
assets that satisfy prespecified requirements
• Exact Retrieval
• Approximate Retrieval
Software Reuse Paradigms
• Paradigms for Software Adaptation
– Blackbox reuse
– Whitebox reuse
• Loss of Productivity
• Loss of Quality
Software Reuse Paradigms