Software Reuse
Abstract of
Software Reuse
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. Nonfunctional properties of a software system are also crucial. Quality concerns, therefore, should also be the focus for software reuse. This Mathematical Theory of Intelligence structures objects in such a way that they become maximally reusable, interoperable and archival. The theory claims that reusability of an object is maximized if the object itself is defined as having been produced by maximizing reuse of the operations that were used to produce it. Many metrics and models have been developed for software reuse and reusability
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. Nonfunctional properties of a software system are also crucial. Quality concerns, therefore, should also be the focus for software reuse. This Mathematical Theory of Intelligence structures objects in such a way that they become maximally reusable, interoperable and archival. The theory claims that reusability of an object is maximized if the object itself is defined as having been produced by maximizing reuse of the operations that were used to produce it. Many metrics and models have been developed for software reuse and reusability
Introduction of
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. Software developed and used repeatedly by the same people on the same project, 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 recognised 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 topdown “waterfall” software lifecycle model.
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, 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 recognised 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 topdown “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
projects, and ultimately reducing the risk of new projects 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
securityexperts while a user interface which uses the library can let
UI experts focus on
their tasks.
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.
• Delegation of tasks into shared modules allows offloading of some
functionality onto separate systems. For example, a system specialized for fast
readonly
database queries can be used for reporting and accessed by multiple
desktop applications.
desktop applications.
• Proper and efficient reuse of code can help avoid code bloat. Bloated code
contains unnecessary duplication and unused instructions. By efficiently sharing
code across systems each individual component avoids duplicate or unneeded
functionality.