12-09-2013, 04:18 PM
Seminar Report On SOFTWARE REUSE
SOFTWARE REUSE.pdf (Size: 691.33 KB / Downloads: 228)
ABSTRACT
Software reusability is the likelihood a piece of source code that can
be used again to add new functionalities with slight or no modification.
Programmers have always reused sections of code, functions and
procedures. Code reuse is the idea that a partial or complete computer
program written at one time is being or should be used in another program
written at a later time. The concept of software reuse emerged as a
recognized area after proposed basing of industry on reusable components.
To achieve full potential of reuse, we need to focus our attention on
development for reuse.
Organizations implementing systematic software reuse programs must
be able to measure their progress and identify the most effective reuse
strategies. Metrics and models with various reuse readiness levels can be
used to measure reuse and reusability. Current reuse techniques focus on the
reuse of software artifacts on the basis of desired functionality. Non
functional properties of a software system are also crucial. Quality concerns,
therefore, should also be the focus for software reuse.
Introduction
Ad hoc code reuse has been practiced from the earliest days of programming.
Programmers have always reused sections of code, templates, functions, and
procedures. Software reuse as a recognized area of study in software engineering,
however, dates only from 1968 when Douglas McIlroy of Bell Laboratories
proposed basing the software industry on reusable components. Code reuse is the
idea that a partial or complete computer program written at one time can be,
should be, or is being used in another program written at a later time. The reuse of
programming code is a common technique which attempts to save time and energy
by reducing redundant work.
Programmers may decide to create internal abstractions so that certain parts of
their program can be reused, or may create custom libraries for their own use.
Some characteristics that make software more easily reusable are modularity,
loose coupling, high cohesion, information hiding and separation of concerns. For
newly written code to use a piece of existing code, some kind of interface, or
means of communication, must be defined. These commonly include a "call" or
use of a subroutine, object, class, or prototype. In organizations, such practices are
formalized and standardized by software product line engineering.
What is Software Reuse
Software reuse is the process of creating software systems from existing software
rather than building software systems from scratch. Something that was originally
written for a different project will usually be recognized as reuse. Code reuse is
the idea that a partial or complete computer program written at one time can be,
should be, or is being used in another program written at a later time. The reuse of
programming code is a common technique which attempts to save time and energy
by reducing redundant work. Software assets, or components, include all software
products, from requirements and proposals, to specifications and designs, high
level designs, data formats, algorithms to user manuals and test suites. Anything
that is produced from a software development effort can potentially be reused.
Development for reuse
Development for reuse is a process of producing potentially reusable components.
The emphasis here is on development for reuse rather than development with
reuse, which is a process of normal systems development. The process of
developing potentially reusable components depends solely on defining their
characteristics such as language features and domain abstractions. Reuse
guidelines can represent such characteristics clearly. Therefore, we need to
formulate objective and automatable reuse guidelines.
Metrics and Models
Software reuse is a key method for significantly improving software quality and
productivity. Reusability is the degree to which a thing can be reused. To achieve
significant payoffs a reuse program must be systematic. Organizations
implementing systematic software reuse programs must be able to measure their
progress and identify the most effective reuse strategies. A metric is a quantitative
indicator of an attribute of a thing. A model specifies relationships among metrics.
Cost Benefit Analysis
As organizations contemplate systematic software reuse, the first question of
concern will be costs and benefits. Organizations will need to justify the cost and
time involved in systematic reuse by estimating these costs and potential payoffs.
Cost benefit analysis models include economic costbenefit models and quality
and productivity payoff analyses. Models allow a user to simulate the tradeoffs
between important economic parameters such as cost and productivity. These are
estimated by setting arbitrary values for cost and productivity measures of systems
without reuse, and then estimating these parameters for systems with reuse. There
is considerable commonality among the models, as described in the following.
Maturity Assessment
Reuse maturity models support an assessment of how advanced reuse programs
are in implementing systematic reuse, using an ordinal scale of reuse phases. They
are similar to the Capability Maturity Model developed at the Software. A
maturity model is at the core of planned reuse, helping organizations understand
their past, current, and future goals for reuse activities. Several reuse maturity
models have been developed and used, though they have not been validated.