Abstract :
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 and implementation 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.
Software
developed and used repeatedly by the same people on the same project and implementation,
Product maintenance and new product versions, use of operating systems, database
management systems, and other system tools doesn’t amount to reuse. Software engineering
has been more focused on original development but it is now recognized that to achieve better
software, more quickly and at lower cost, we need to adopt a design process that
is based on systematic software reuse.
For systematic
reuse to succeed organizations must recognize that good components, frameworks,
and software architectures require time to design, implement, optimize, validate,
apply, maintain, and enhance. Creating reusable software assets requires a mature
organization whose developers and architects can distinguish key sources of variability
and commonality in their application domain. Identifying and separating these concerns
for complex networked applications requires an iterative development process since
it's hard to design reusable artifacts correctly the first time using a top
down “waterfall” software lifecycle model.
Why Software
Reuse
A good software
reuse process facilitates the increase of productivity, quality, and reliability,
performance and the decrease of costs, effort, risk and implementation time. An
initial investment is required to start a software reuse process, but that
investment pays for itself in a few reuses. In short, the development of a reuse
process and repository produces a base of knowledge that improves in quality after
every reuse, minimizing the amount of development work required for future project
and implementations, and ultimately reducing the risk of new project and implementations
that are based on repository knowledge Reusing code
saves programming time, which reduces costs. If one person or team has already
solved a problem, and they share the solution, there's no need to solve the problem
again (with some potential caveats see Drawbacks).
• Sharing code
can help prevent bugs by reducing the amount of total code that needs to be written
to perform a set of tasks. Generally, the more code a system contains the more bugs
it's likely to have. The shared code can also be tested separately from the applications
which use it.
• Separating
code into common libraries lets programmers specialize in their particular strengths.
A security library, for example, can be built by security experts while a user
interface which uses the library can let UI experts focus on their tasks.
• Repeatedly,
separating code into specialized libraries lets each be tuned for performance,
security, and special cases. For example, a Python application might delegate graphics
functionality to a C library for performance.
Download :
Download :
PPT