Chen_software reuse - Louisiana Tech University

advertisement
Software Reuse
Course: csc532
Instructor: Dr. Box
Student: Guangyu Chen
ABSTRACT
Software reuse is one of the hottest research subjects in the software development
area. The reason is obviously since software reuse can benefit in improving software
quality and productivity and also can decrease software production and maintenance
costs as long as the time needed to market.
There are many issues about practicing software reuse. Software reuse can have
different reuse level, such as application system, subsystem, module, object etc. Different
approach can be applied in the reuse practice, such as horizontal reuse and vertical reuse.
How to deal with the pay off and trade off is another important problem in the reuse issue.
In all the work have been done with software reuse, many strategies have been employed.
Among these strategies, most popular methods are routine libraries, class libraries, class
frameworks, components, software architecture, application templates, domain analysis,
and patterns.
Although software reuse attracts people by all its predominance, its limitation also
should not be ignored. Until now, several common problems have not been solved yet in
the software reuse experiment.
The reason causes the problems can be impediments from anywhere: organization,
economic problem, administrative problem, political problem or psychological problem.
INTRODUCTION
Software reuse is the fundamental idea of reusing versatile information made
during software development in order to reduce the effort devoted to the same job in the
development of new software. [2]
In today’s world, many software, especially the big projects involve the work of
software reuse. Many researchers also put their effort in the research of this strategy,
because of its outstanding foreground in the industry market.
THE REASON TO PRACTICE SOFTWARE REUSE AND ITS ADVANTAGES
Researchers put lot of efforts in the study of software reuse is because it can
benefit the software engineering a lot. The main advantages of software reuse include:
increase software productivity, shorten software development time, improve software
system interoperability, develop software with fewer people, move personnel more easily
from project to project, reduce software development and maintenance costs, produce
more standardized software, produce better quality software and provide a powerful
competitive advantages [12].
SOFTWARE REUSE ASSETS
Software reuse is not limited to the code; it can also include the design, analysis,
design process, domain knowledge, etc. In fact, the availability of reusable assets in
development phases provides valuable support to design and implementation with
software architectures by improving productivity, quality, and time-to-market.[1]
Industry has demonstrated that reuse of software assets will provide a basis for dramatic
improvements in quality and reliability, speed of delivery, and in long-term decreases in
costs for software development and maintenance. [1]
TYPES OF SOFTWARE REUSE
1. Horizontal reuse
Horizontal reuse refers to software components used across a wide variety of
applications [11]. This type of reuse includes library of components, string
manipulation routines, or graphical user interface functions.
2. Vertical reuse
Vertical reuse, in another way, deals with the reuse of system functional areas, or
domains that can be shared between systems with similar functionality.
STAGES FOR REUSE DEVELOPMENT
The reuse process can be divided into a number of stages.
 Identify domain
 Identify and classify reusable abstractions
 Identify design/programming language constructs that support reuse
 Study and formulate language reuse guidelines
 Study and formulate domain reuse guidelines
 Reuse assessment—assess components based on the guidelines
 Reuse improvement—modify and improve these components. [10]
REUSEABILITY MEASUREMENT
It is very necessary to evaluate the reusability of a software asset. A practical way
is using the so called quantitative metrics. Such metrics can provide the principle to
determine the proper time the consider a asset’s reusability. Software assets have two
qualities that enhance reusability and thus, if quantified, can serve as a basis for defining
a measure of reusability:
 Generality enhances reusability by making the asset more widely applicable
 Generosity enhances reusability by reducing the cost of adapting the asset to
its host system. [8]
THE PROBLEM IN SOFTWARE REUSE
Many problems can affect the reuse or even make it fail. The primary reasons can
be following;
 The principles, methods, and skills required to develop reusable software
cannot be learned effectively by generalities and platitudes. Instead,
developers must learn concrete technical skills and gain hands-on experience
by developing and applying reusable software components and frameworks
in their daily professional practice.[9]
 To succeed in-the-large, reuse efforts must address both technical and nontechnical issues. Focusing on non-technical issues alone neglects important
skills-building education that must occur to succeed with non-trivial reuse
efforts. Likewise, focusing solely on technological issues neglects the deep
impact that social and economic forces and processes have on the success or
failure of technology adoption.[9]
 It's easier and more cost effective to develop and evolve networked
applications by basing them on reusable distributed object computing
middleware, which is software that resides between applications and the
underlying operating systems, network protocol stacks, and hardware.
Middleware's role is to functionally bridge the gap between application
programs and the lower-level hardware and software infrastructure in order
to (1) coordinate how parts of applications are connected and how they
interoperate and (2) enable and simplify the integration of components
developed by multiple technology suppliers. [9]
INPEDIMENTS IN SOFTWARE REUSE
The impediments which affect the work of reuse can be divided into several
categories.
 Organizational impediments. As the number of developers and projects
employing reusable assets increases, it becomes hard to structure an
organization to provide effective feedback loops between these
constituencies. [9]
 Economic impediments. Many organizations don’t give their reuse group a
full financial support.
 Administrative impediments. That happens when fail to catalog, archive,
retrieve reusable assets among the business units within the large
organizations.
 Political impediments. Groups that develop reusable middleware platforms
are often viewed with suspicion by application developers, who resent the
fact that they may no longer be empowered to make key architectural
decisions. [9]
 Psychological impediments. The example is, application developers may
also perceive ``top down'' reuse efforts as an indication that management
lacks confidence in their technical abilities. [9]
CONCLUSION
Software reuse is proved to be an efficient way to help improving software
development quality, productivity during all these years’ practices. Like all other method,
software reuse also has its own limitation, and is affected by many impediments. But it is
still an research area worth more devotion and is also an powerful approach during the
process of software development.
Reference
[1] N. Nada, L.Luqi, M. Shing, “Software Reuse Technology Practices and Assessment
Tool-Kit”, Naval Postgraduate School Computer Science Department.
[2] Sadahiro I, “An experience of software reuse activities”, software laboratories Nippon
telegraph and telephone corporation.
[3] Rubin P, “The disappearance of software reuse”, reuse Inc.
[4] James J, “Characteristics of a flexible software factory: Organization design applied
to software reuse”, Hewlett-Packard laboratories.
[5] J.M. Perry, “Perspective on software reuse”, GTE government systems Corporation.
[6] Will T, “Software reuse myths revisited”, Loral federal Systems Company.
[7] Jim W, “The solution to the reuse problem”, SUM micro system Inc.
[8] Ali Mili, “Toward an engineering discipline of software reuse”, Institute for software
research.
[9] Douglas C, “Why software reuse has failed and how to make it work for you”,
Department of electrical and computer engineering of university of California.
[10] M. Ramachandran, “Software reuse guidelines”, School of Computing and
Mathematical Sciences Liverpool John Moores University.
[11] Kimberly Jordan, “Software reuse term paper”, George Mason University.
[12] http://www.cs.wustl.edu/~schmidt/reuse-lessons.html
[13] http://www.baz.com/kjordan/swse625/htm/tp-kj.htm
[14] http://gta.georgia.gov/00/channel_modifieddate/0,2096,1070969_1209920,00.html
[15] http://www.selectbs.com/products/solutions/software_reuse.htm
Download