Sei sulla pagina 1di 28

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++
Software Reuse 2018-19

CHAPTER 1
INTRODUCTION

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.

Dept. of CSE NIE-IT, Mysore Page 1


Software Reuse 2018-19

Software reuse vs Software engineering

In most engineering disciplines, systems are designed by composing existing components that
have been used in other systems.

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.

Reuse-based software engineering

1. Application system reuse

The whole of an application system may be reused either by incorporating it without change into
other systems (COTS reuse) or by developing application families.

2. Component reuse

Components of an application from sub-systems tosingle objects may be reused.

3. Object and function reuse

Software components that implement a single well-defined object or function may be reused.

Dept. of CSE NIE-IT, Mysore Page 2


Software Reuse 2018-19

CHAPTER 2
LITERATURE SURVEY

Papers surveyed for presenting the seminar :


International Journal of Scientific Research Engineering & Technology (IJSRET), ISSN
2278 – 0882 Volume 6, Issue 4, April 2017 Software reuse: A survey Tajinder Singh
Sondhi, Shivam Ghildyal, Srishti Sabharwal, Akash Nagarkar, K Lavanya
SCOPE, VIT University, Vellore, India
We have studied numerous methodologies available for software reuse starting from the
traditional ones like REBOOT, faceted implementation to the more recent ones like the PULSE
methodology, object oriented methodology and design science research methodologies,
pragmatic approach and maturity model. These methodologies have constantly provided better
techniques that have enhanced the development time, reduced the development costs, decreased
the process risk, improved its dependability and have provided a standardized approach for
software reuse.
In this paper, we have tried to compare and analyse the various techniques and methods
available for solving the various problems associated with the reuse of software components
Jones et al., [Reusability in Programming: A Survey of the State of the Art, 2] published a
report which addresses the 1984 state of the art in the domains of reusable data, reusable
architectures, reusable design, common systems, reusable programs, and reusable modules
or subroutines
If current trends toward reusability continue, the amount of reused logic and reused code in
commercial programming systems may approach 50 percent by 1990.
Standish et al., [Programming Environment Project, 1]
In this paper we discuss briefly some economic incentives for developing effective software
reuse technology and notes that different kinds of software reuse, such as direct use without
modification and reuse of abstract software modules after refinement have different
technological implications. It sketches some problem areas to be addressed if we are to achieve
the goal of devising practical software reuse systems. These include information retrieval
problems and finding effective methods to aid us in understanding how programs work. There is

Dept. of CSE NIE-IT, Mysore Page 3


Software Reuse 2018-19

a philosophical epilogue which stresses the importance of having realistic expectations about the
benefits of software reuse
Prieto-Diaz et al., [Implementing faceted classification for software reuse, 11]
In this paper an article was published whose central component is a software reuse library
organized around a faceted classification scheme. The system supports search and retrieval of
reusable components and librarian functions such as cataloging and classification.

Dept. of CSE NIE-IT, Mysore Page 4


Software Reuse 2018-19

CHAPTER 3
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.

Dept. of CSE NIE-IT, Mysore Page 5


Software
 Reuse 2018-19

Reuse benefits and problems

Benefits of software reuse:

 Accelerated development: Bringing a system to market as early as possible is often


more important than overall development costs. Reusing software can speed up system
production because both development and validation time may be reduced.
 Effective use of specialists: Instead of doing the same work over and over again,
application specialists can develop reusable software that encapsulates their knowledge.
 Increased dependability: Reused software, which has been tried and tested in working
systems, should be more dependable than new software. Its design and implementation
faults should have been found and fixed.
 Lower development costs: Development costs are proportional to the size of the
software being developed. Reusing software means that fewer lines of code have to be
written.
 Reduced process risk: The cost of existing software is already known, whereas the
costs of development are always a matter of judgment. This is an important factor for
project management because it reduces the margin of error in project cost estimation.
This is particularly true when relatively large software components such as subsystems
are reused.
 Standards compliance: Some standards, such as user interface standards, can be
implemented as a set of reusable components. For example, if menus in a user interface
are implemented using reusable components, all applications present the same menu
formats to users. The use of standard user interfaces improves dependability because
users make fewer mistakes when presented with a familiar interface.

Dept. of CSE NIE-IT, Mysore Page 6


Software Reuse 2018-19

Problems with software reuse:

 Creating, maintaining, and using a component library: Populating a reusable


component library and ensuring the software developers can use this library can be
expensive. Development processes have to be adapted to ensure that the library is
used.
 Finding, understanding, and adapting reusable components: Software
components have to be discovered in a library, understood and, sometimes, adapted
to work in a new environment. Engineers must be reasonably confident of finding
component in library before they include a component search as part of their process.
 Increased maintenance costs: If the source code of a reused software system or
component is not available then maintenance costs may be higher because the reused
elements of the system may become increasingly incompatible with system changes.
 Lack of tool support: Some software tools do not support development with reuse. It
may be difficult or impossible to integrate these tools with a component library
system. The software process assumed by these tools may not take reuse into account.
This is particularly true for tools that support embedded systems engineering, less so
for object-oriented development tools.
 Not-invented-here syndrome: Some software engineers prefer to rewrite
components because they believe they can improve on them. This is partly to do with
trust and partly to do with the fact that writing original software is seen as more
challenging than reusing other people's software.

Dept. of CSE NIE-IT, Mysore Page 7


Software Reuse 2018-19

CHAPTER 4
THE REUSE LANDSCAPE

Although reuse is often simply thought of as the reuse of system components, there are many
different approaches to reuse that may be used. Reuse is possible at a range of levels from simple
functions to complete application systems. The reuse landscape covers the range of possible
reuse techniques.

Key factors for reuse planning:


 The development schedule for the software.
 The expected software lifetime.
 The background, skills and experience of the development team.
 The criticality of the software and its non-functional requirements.
 The application domain.
 The execution platform for the software.

Dept. of CSE NIE-IT, Mysore Page 8


Software Reuse 2018-19

CHAPTER 5
CONCEPT REUSE

When you reuse program or design components, you have to follow the Design decisions made
by the original developer of the component. This may limit the opportunities for reuse.
However, a more abstract form of reuse is concept reuse where a particular approach is described
in an implementation independent way and an implementation is then developed.
The two main approaches to concept reuse are:

 Design patterns

 Generative programming

Dept. of CSE NIE-IT, Mysore Page 9


Software Reuse 2018-19

DESIGN PATTERN
A design pattern is a way of reusing abstract knowledge about a problem and its solution.
A pattern is a description of the problem and the essence of its solution
. It should be sufficiently abstract to be reused in different settings. Patterns often rely on object
characteristics such as inheritance and Polymorphism
The image below describes an example of a design pattern.

Pattern elements
 Name – A meaningful pattern identifier
 Problem description.
 Solution description. – Not a concrete design but a template for a design solution
that can be instantiated in different ways.
 Consequences – The results and trade-offs of applying the pattern.

Dept. of CSE NIE-IT, Mysore Page 10


Software Reuse 2018-19

OBSERVER PATTERN

The observer pattern is a software design pattern in which an object, called the subject, maintains
a list of its dependents, called observers, and notifies them automatically of any state changes,
usually by calling one of their methods.
It is mainly used to implement distributed event handling systems, in "event driven" software.
In those systems, the subject is usually called a "stream of events" or "stream source of events",
while the observers are called "sink of events". The stream nomenclature simulates or adapts to a
physical setup where the observers are physically separated and have no control over the emitted
events of the subject/stream-source. This pattern then perfectly suits any process where data
arrives through I/O, that is, where data is not available to the CPU at startup, but can arrive
"randomly" (HTTP requests, GPIO data, user input from keyboard/mouse, distributed databases
and blockchains). Most modern languages have built-in "event" constructs which implement the
observer pattern components. While not mandatory most 'observers' implementations will use
background threads listening for subject events and other support mechanism from the
kernel(Linux,epoll).

Dept. of CSE NIE-IT, Mysore Page 11


Software Reuse 2018-19

CHAPTER 6
APPLICATION FRAMEWORKS
Frameworks are moderately large entities that can be reused. They are somewhere between
system and component reuse. Frameworks are a sub-system design made up of a collection of
abstract and concrete classes and the interfaces between them. The sub-system is implemented
by adding components to fill in parts of the design and by instantiating the abstract classes in the
framework.
Application frameworks are moderately large entities that can be reused. They are somewhere
between system and component reuse. Frameworks are a sub-system design made up of a
collection of abstract and concrete classes and the interfaces between them. The sub-system is
implemented by adding components to fill in parts of the design and by instantiating the abstract
classes in the framework.
Frameworks are generic and are extended to create a more specific application or sub-system.
They provide a skeleton architecture for the system. Extending the framework involves Adding
concrete classes that inherit operations from abstract classes in the framework; Adding methods
that are called in response to events that are recognized by the framework. Problem with
frameworks is their complexity which means that it takes a long time to use them effectively.

Dept. of CSE NIE-IT, Mysore Page 12


Software Reuse 2018-19

Framework Classes
The following are the different classes of frameworks:-

System infrastructure frameworks


Support the development of system infrastructures such as communications, user interfaces and
compilers.

Middleware integration frameworks


Standards and classes that support component communication and information exchange.

Enterprise application frameworks


Support the development of specific types of application such as telecommunications or financial
systems

Dept. of CSE NIE-IT, Mysore Page 13


Software Reuse 2018-19

CHAPTER 7
Model-view-controller (MVC)
Model–View–Controller (usually known as MVC) is a software design pattern commonly used
for developing user interfaces which divides the related program logic into three interconnected
elements. This is done to separate internal representations of information from the ways
information is presented to and accepted from the user. Following the MVC architectural pattern
decouples these major components allowing for code reuse and parallel development.

Diagram of interactions within the MVC pattern.

Traditionally used for desktop graphical user interfaces (GUIs), this pattern has become popular
for designing web applications. Popular programming languages like JavaScript, Python, Ruby,
and PHP, Java, and C# have MVC frameworks that are used in web application development
straight out of the box.
The same (or similar) view for one application can be refactored for another application with
different data because the view is simply handling how the data is being displayed to the user.
Unfortunately this does not work when that code is also useful for handling user input. For
example, DOM code (including the application's custom abstractions to it) is useful for both
graphics display and user input. (Note that, despite the name Document Object Model, the DOM
is actually not an MVC model, because it is the application's interface to the user).
To address these problems, MVC (and patterns like it) are often combined with a component
architecture that provides a set of UI elements. Each UI element is a single higher-level
component that combines the 3 required MVC components into a single package. By creating
these higher-level components that are independent of each other, developers are able to reuse
components quickly and easily in other applications.

Dept. of CSE NIE-IT, Mysore Page 14


Software Reuse 2018-19



Components of MVC

Model
The central component of the pattern. It is the application's dynamic data structure, independent
of the user interface.It directly manages the data, logic and rules of the application.
View
Any representation of information such as a chart, diagram or table. Multiple views of the same
information are possible, such as a bar chart for management and a tabular view for accountants.
Controller
Accepts input and converts it to commands for the model or view.

In addition to dividing the application into these components, the model–view–controller design
defines the interactions between them.
The model is responsible for managing the data of the application. It receives user input from the
controller.
The view means presentation of the model in a particular format.
The controller responds to the user input and performs interactions on the data model objects.
The controller receives the input, optionally validates it and then passes the input to the model.
As with other software patterns, MVC expresses the "core of the solution" to a problem while
allowing it to be adapted for each system.[8] Particular MVC designs can vary significantly from
the traditional description here

Dept. of CSE NIE-IT, Mysore Page 15


Software Reuse 2018-19

CHAPTER 8
APPLICATION SYSTEM REUSE
An application system product is a software system that can be adapted for different customers
without changing the source code of the system. Application systems have generic features and
so can be used/reused in different environments. Application system products are adapted by
using built-in configuration mechanisms that allow the functionality of the system to be tailored
to specific customer needs.
The whole of an application system may be reused by incorporating it without changing into
other systems or by configuring the application for different customers. Alternatively,
application families that have a common architecture, but which are tailored for specific
customers, may be developed.

There are 2 methods of implementing application system reuse:-

 COTS (Commercial Off The Shelf) systems


 Software Product lines

COTS - Commercial Off-The-Shelf systems


Short for commercial off-the-shelf, an adjective that describes software or hardware products
that are ready-made and available for sale to the general public. For example, Microsoft Office is
a COTS product that is a packaged software solution for businesses.
COTS purchases are alternatives to custom software or one-off developments.
Although COTS products can be used out of the box, in practice the COTS product must be
configured to achieve the needs of the business and integrated to existing organizational systems.
Extending the functionality of COTS products via custom development is also an option,
however this decision should be carefully considered due to the long term support and
maintenance implications. Such customized functionality is not supported by the COTS vendor,
so brings its own sets of issues when upgrading the COTS product.
The use of COTS has been mandated across many government and business programs, as such
products may offer significant savings in procurement, development, and maintenance.
Motivations for using COTS components include hopes for reduction system whole of life costs.

Dept. of CSE NIE-IT, Mysore Page 16


Software Reuse 2018-19

Software Product Lines


Software product lines or application families are applications with generic functionality that can
be adapted and configured for use in a specific context. A software product line is a set of
applications with a common architecture and shared components, with each application
specialized to reflect different requirements. Examples: a mobile operating system that works on
different hardware models, a software line for a family of printers with varying features.

Adaptation of a software line may involve:


• Component and system configuration;
• Adding new components to the system;
• Selecting from a library of existing components;
• Modifying components to meet new requirements

The base application of a software product line includes:


• Core components that provide infrastructure support. These are not usually modified when
developing a new instance of the product line.
• Configurable components that may be modified and configured to specialize them to a new
application. Sometimes, it is possible to reconfigure these components without changing their
code by using a built-in component configuration language.
• Specialized, domain-specific components some or all of which may be replaced when a new
instance of a product line is created.

Product line architectures must be structured in such a way to separate different sub-systems
and to allow them to be modified. The architecture should also separate entities and their
descriptions and the higher levels in the system access entities through descriptions rather
than directly.
Various types of specialization of a software product line may be developed:
• Different versions of the application are developed for different platforms.
• Different versions of the application are created to handle different operating environments
e.g. different types of communication equipment.
• Different versions of the application are created for customers with different functional
requirements.

Dept. of CSE NIE-IT, Mysore Page 17


Software Reuse 2018-19

Software product lines are designed to be reconfigurable. This configuration may occur at
different stages in the development process:
• Design time configuration: The organization that is developing the software modifies a
common product line core by developing, selecting or adapting components to create a new
system for a customer.
• Deployment time configuration: A generic system is designed for configuration by a
customer or consultants working with the customer. Knowledge of the customer's specific
requirements and the system's operating environment is embedded in configuration data that
are used by the generic system..

Key points
• Advantages of reuse are lower costs, faster software development and lower risks.
• Design patterns are high-level abstractions that document successful design solutions.
• Program generators are also concerned with software reuse – the reusable concepts are
embedded in a generator system.
• Application frameworks are collections of concrete and abstract objects that are designed for
reuse through specialization.
• COTS product reuse is concerned with the reuse of large, off-the-shelf systems.
• Problems with COTS reuse include lack of control over functionality, performance, and
evolution and problems with inter-operation.
• ERP systems are created by configuring a generic system with information about a customer’s
business.
• Software product lines are related applications developed around a common core of shared
functionality
Benefits of application system reuse
• As with other types of reuse, more rapid deployment of a reliable system may be possible.
• It is possible to see what functionality is provided by the applications and so it is easier to judge
whether or not they are likely to be suitable.
• Some development risks are avoided by using existing software. However, this approach has its
own risks, as I discuss below.
• Businesses can focus on their core activity without having to devote a lot of resources to IT
systems development.

Dept. of CSE NIE-IT, Mysore Page 18


Software Reuse 2018-19

•As operating platforms evolve, technology updates may be simplified as these are the
responsibility of the COTS product vendor rather than the customer

Problems of application system reuse


• Requirements usually have to be adapted to reflect the functionality and mode of operation of
the COTS product.
• The COTS product may be based on assumptions that are practically impossible to change.
• Choosing the right COTS system for an enterprise can be a difficult process, especially as many
COTS products are not well documented.
• There may be a lack of local expertise to support systems development.
• The COTS product vendor controls system support and evolution.

Dept. of CSE NIE-IT, Mysore Page 19


Night Vision technology 2018-19

CHAPTER 9
NIGHT VISION EQUIPMENT

Night-vision equipment can be split into three broad categories:


Scopes - Normally handheld or mounted on a weapon, scopes are monocular (one eye-piece).
Since scopes are handheld, not worn like goggles, they are good for when you want to get a
better look at a specific object and then return to normal viewing conditions.

Fig 9.1: Dark Invader multipurpose pocketscope

Goggles - While goggles can be handheld, they are most often worn on the head. Goggles are
binocular (two eye-pieces) and may have a single lens or stereo lens, depending on the model.
Goggles are excellent for constant viewing, such as moving around in a dark building.

Dept. of CSE NIE-IT, Mysore Page 20


Night Vision technology 2018-19

Fig 19.2: Dark Invader night vision goggles 4501

Cameras - Cameras with night-vision technology can send the image to a monitor for display
or to a VCR for recording. When night-vision capability is desired in a permanent location,
such as on a jungle,building or as part of the equipment in a helicopter, cameras are used.
Many of the newer camcorders have night vision built right in.

Fig 9.3: Stealth cam G42ng ( a day/ night video camera)

Dept. of CSE NIE-IT, Mysore Page 21


Night Vision technology 2018-19

CHAPTER 10
APPLICATIONS

The main purpose for the development of this technology was for the military use, to locate
enemies at night. Not only is it used extensively for military purposes, but also for navigation,
surveillance and targeting. Thermal imaging and Image enhancement technologies are used for
surveillance purpose by the police and security departments. It is also used for the
maneuverability of the hunters and nature enthusiasts through the woods at night. Following are
some other applications of the night-vision
 Law-Enforcement
 Wildlife Observation
 Security
 Hidden Object detection, Entertainment, etc

Law-Enforcement
To support law enforcement during the hours of darkness and low light situations and help them
detect, deter and prevent the disruption of a enemy. When an event is designated, the Secret
Service assumes the role as the lead agency for the design and implementation of the operational
security plan. The challenge around events is security on all fronts. During daylight hours and
within areas of full light, the playing field is fairly level; however, remove the element of light
and someone has the advantage. During events, The challenge is to eliminate low light situations
as a potential threat. Prevention, readiness and diligence are the key factors in securing an event
from a terrorist threat. Night vision surveillance is a crucial means of protecting an area and its
assets before, after and during an event. Night vision techniques give law enforcement the
advantage of monitoring activity in darkness and areas of low light. The most effective way to
prepare for and provide effective security for an event is to ensure that law enforcement officials
have the equipment and training they need long before an event takes place. Therefore with the
help of night vision techniques best surveillances can be done in low light conditions.

Dept. of CSE NIE-IT, Mysore Page 22


Night Vision technology 2018-19

Fig 10.1 : Various night vision devices

Wildlife Observation
Keen-eyed observer can see much wildlife during the day .but many animals, including most
large mammals, are more active at night or twilight. Night-vision binoculars give the option of
continuing our observations after the sun has set and the chance to see elusive creatures that are
less active during the day. Once a good pair of night-vision binoculars is acquired we can find
the best spots to spot critters.

Fig 10.2 : Observed wildlife using night vision technique

Dept. of CSE NIE-IT, Mysore Page 23


Night Vision technology 2018-19

Security
There are lots of challenges in performing video surveillance at night. The optimal solution for a
particular application depens night vision cameras.They are built for the specific application. The
night vsion camera provide best surveillance during night or low light condition. After sunrise,
night vision cameras filter out mid-infrared wavelengths so that they don't distort the daytime
images and colors. This “filtering” allows the lens to pick up the same colors as the human eye
and so record natural looking images.

Fig 10.3: Night vision camera

Hidden Object Detection And For Entertainment


Many people are beginning to discover the unique world that can be found after darkness falls. If
you're out camping or hunting a lot, chances are that night-vision devices can be useful to
you.Just be sure to get the right type for your needs

Fig 10.4: Camcorders are a fast-growing segment of the night-vision industry

Dept. of CSE NIE-IT, Mysore Page 24


Night Vision technology 2018-19

CHAPTER 11
TECHNICAL CHARACTERISTICS

Using intensified night vision is different from using regular binoculars and/or your own eyes.
Below are some of the aspects of night vision that you should be aware of when you are using an
image intensified night vision system.

Textures, Light and Dark


Objects that appear light during the day but have a dull surface may appear darker through the
night vision unit than objects that are dark during the day but have a highly reflective surface.
For example, a shiny, dark-colored jacket may appear brighter than a light-colored jacket with a
dull surface.

Depth Perception
Night vision does not present normal depth perception.

Fog and Rain


Night vision is very responsive to reflective ambient light; therefore, the light reflecting off of
fog or heavy rain causes much more light to go toward the night vision unit and may degrade its
performance. However, advances in the latest night vision help offset these effects.

Honeycomb*
Honeycomb is a faint hexagonal pattern, which is the result of the manufacturing process.

Spots*
A few black spots throughout the image area also are inherent characteristics of all night vision
technology. These spots will not increase in size or number.

Dept. of CSE NIE-IT, Mysore Page 25


Night Vision technology 2018-19

Do not be concerned if you see this feature. It is an inherent characteristic found in light
amplification night vision systems that incorporate a microchannel plate in the
intensifier.

Advantages And Disadvantages Of Night Vision Technology


Advantages :
 No particular skill required
 Accidents cases reduction
 Compact system
 3x range visual
 Small in size
 Light weight
 Able to see in dark
 Low power required

Disadvantages:
 The big disadvantage is that its Initial cost too high.
 Image is not good quality with NVT
 Its excessive use is not good for human health , especially eye
 Image size slightly vary from its actual size

Dept. of CSE NIE-IT, Mysore Page 26


Software Reuse 2018-19

CHAPTER 12
CONCLUSION AND FUTURE SCOPE

In this Paper, we consider a few concepts, process and principles that have a positive impact on
Software reuse. We have reviewed the software reuse & reusability, the current trends and
existing problems, and specific difficulties, which are helpful for increasing reuse and
reusability.
Today in the 21st century we have come a long way in the development of software reuse, from
the early 1980s.Using a mixture of technical practices, collaboration, and pragmatism it is
possible to slowly grow your reusable asset base.
Code reuse sometimes results in dependency on the component being reused. Rob Pike opined
that "A little copying is better than a little dependency". When he joined Google, the company
was putting heavy emphasis on code reuse.
Software reusability more specifically refers to design features of a software element (or
collection of software elements) that enhance its suitability for reuse.

Dept. of CSE NIE-IT, Mysore Page 27


Software reuse 2018-19

BIBLIOGRAPHY

Journal Papers:

1. IEEE Std 15171999 IEEE Standard for Information Technology—Software Life


Cycle Processes—Reuse Processes –Description [12]
Abstract: A common framework for extending the software life cycle processes of
12207.01996 to include the systematic practice of software reuse is provided.
This standard specifies the processes, activities, and tasks to be applied during
each phase of the software life cycle to enable a software product to be constructed
from reusable assets. It also specifies the processes, activities, and tasks to enable
the identification, construction, maintenance, and management of assets supplied.
2. IEEE/EIA 12207.0, "Standard for Information Technology – Software Life Cycle
Processes", is a standard that establishes a common framework for software life
cycle process. This standard officially replaced MILSTD-
498 for the development of DoD software systems in May 1998.
This standard defines a comprehensive set of processes that cover the entire lifecycle of a
software system—from the time a concept is made to the retirement of the software.

Websites Searched:
 www.ieee.org
 www.google.com
 www.wikipedia.com
 https://www.infoq.com/articles/vijay-narayanan-software-reuse
 www.wikihow.com

Dept. of CSE NIE-IT, Mysore Page 28

Potrebbero piacerti anche