cosc 612. software reuse introduction software reuse: the creation of software systems from pre-...
Post on 27-Dec-2015
231 Views
Preview:
TRANSCRIPT
Introduction
Software Reuse:The creation of software systems from pre-
existing components rather than building them from scratch [11].
Conceived by Douglas McIlroy in 1968Has long been thought as necessary for the
expedient and cost effective production of software
This is particularly important in today’s industry
Introduction
Software Reuse:Despite this awareness, software reuse is
still not what experts imagine it would beToday nearly all programs utilize reuse in
some wayHowever, large scale systematic adoption
remains elusive and still presents many challenges
Outline
I. Why Software Reuse?a. Needs
b. Benefits
II. Software Reuse ExplainedI. What Can be Reused?
II. How is Software Reused?
III. Promising Developments in Reuse
IV. Challenges and Strategies
V. Conclusion
Needs
Ever increasing demands on designers and engineers [15]Large scale, complex softwareRapid and demanding release schedulesMore emphasis on usability and valueHigher quality and customizability [3]Increased productivity
Benefits Productivity Gains
Department of Defense Workforce Analysis [1] Increase in productivity by: ○ • Working faster: 8 percent○ • Working smarter: 17 percent○ • Work avoidance: 47 percent
Return on InvestmentOne study [9] reported values of 210% and 400% over 8 and 10
years. Savings over new development
Cheaper by 40% to 80% [9] Decrease in development effort per module Lower Fault Rates by up to 40% [9]
Reuse of Knowledge
Reuse has grown to include knowledge and documents as well as source code [5][6]Knowledge: Reusing solutions to problems
○ Architecture Patterns○ Design Patterns○ Requirements Reuse○ Has a much greater potential than reusing source
code12.
Reuse of Artifacts Documents
UML standardization has facilitated the reuse of requirement, planning and design documents [12]○ User Stories○ State Diagrams○ Sequence Diagrams○ Data Flow Diagrams
Test CasesUser ManualsInterfaces
Reuse of Source Code
Source CodeMost common form of reuseCode LibrariesCode ScavengingRecent developments in component and
framework technology have made reuse easier [10]○ Provides standard code for common tasks○ Programmers can focus on application code
rather than interface code (back end rather than front end)
Reuse of Source Code Examples of framework technology
○ CORBA (OMG)Middleware to allow programs in multiple languages
and platforms to communicate
○ .NET (Microsoft)Provides a vast library
- User Interfaces- Numeric Algorithms- Database Connectivity- Web Development
Allows for interoperability across multiple languages
○ Java EE
Reuse Techniques Compositional
System is created from the bottom up out of components
Components ideally remain unchangedSystem can be seen as glued together from
parts of a component repositoryWide scopeRequires
○ Proper documentation○ Well defined retrieval protocols
Reuse Techniques Generative
Reuse system designs to generate new softwareThe design process or architecture is general but
specific to a domain of software○ Narrow scope but powerful
Application GeneratorsLanguage Generators
○ Takes a specific problem and generates the implementation
Transformation Systems○ Semantic behavior is described, then
transformations are applied to create concrete code
Reuse Scope and Mode Horizontal
Pulling in software components used in wide variety of applications
Includes use of:○ Software libraries○ Commercial-off-the-shelf (COTS) components
Compositional in nature Horizontal is typically ad-hoc, or opportunistic
Components are found and used as they are needed, if they are available [11]
Can be unreliable, inconsistent or risky for large application / application families
Reuse Scope and Mode Vertical
Largely untapped by current industry, but has more potential than horizontal, ad-hoc reuse [14]
Involves the creation of a product line, or a family of products with similar functionality
Vertical Reuse is Systematic and PlannedInvolves developing a set of vertical assets,
targeted for a specific product domainRequires large overhead and startup, but will
allow for faster creation of products in the long run [11]
Domain Engineering A vertical systematic process which creates
reusable assets and framework for a particular product family or domainAssets can be architectural designs and patterns
as well as components The family of products engineered from this
domain is called a Software Product Line.Developed from a common set of core assets Each is created in a manner prescribed by the
domain
Domain Engineering Current examples include:
Microsoft OfficeGoogle family (Gmail, Google Voice, Google
Documents) Code and Design are drawn upon vertically
instead of horizontally Reuse has narrower scope, but greater
potential for development efficiency and profitability
Challenges and Strategies While there is widespread ad-hoc reuse,
systematic reuse remains to be an industry standard
Some factors in this include:Organizational issues
○ Must have strong management support○ Must have a strong organizational foundation in
place to support systematic reuse○ Requires a coordinated planning effort○ Need for reuse often arises after several variants
of software have been made
Challenges and Strategies Funding
Developing reusable assets requires up front investments
Component must be reused frequently to give a return on investment
Design TimePlanning for systematic reuse often requires
more time due to generality and abstractionsThis will pay off later, but may be difficult at first
Challenges and Strategies Planning
Must have plan for product line evolution so you don’t risk obsolescence
An upfront analysis must be done (domain engineering) to ensure the proper scope and requirements for reuse
Adopt an incremental approach to design so that components may evolve with user requirements
Conclusion Software reuse has become frequently
used, however in a non-systematic, informal way through code libraries, etc.
The most promising method of reuse is systematic, vertical reuse such as is found in product line approaches.
There are great benefits to such reuse, however this has yet to become standard practice in development and remains an emerging branch of software engineering.
References1. Barry Boehm, "Managing Software Productivity and Reuse," Computer, vol. 32, no. 9, pp. 111-113, Sept. 1999, doi:10.1109/2.789755
2. Slawomir Duszynski, Jens Knodel, Martin Becker, "Analyzing the Source Code of Multiple Software Variants for Reuse Potential," wcre, pp.303-307, 2011 18th Working Conference on Reverse Engineering, 2011
3. N. Ilker Altintas, Semih Cetin, Ali H. Dogru, Halit Oguztuzun, "Modeling Product Line Software Assets Using Domain-Specific Kits," IEEE Transactions on Software Engineering, 28 Oct. 2011. IEEE computer Society Digital Library. IEEE Computer Society.
4. Jacky Estublier and German Vega. 2005. “Reuse and variability in large software applications”. In Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering (ESEC/FSE-13). ACM, New York, NY, USA, 316-325. DOI=10.1145/1081706.1081757 http://doi.acm.org/10.1145/1081706.1081757
5. Marcus A. Rothenberger, Kevin J. Dooley, Uday R. Kulkarni, Nader Nada, "Strategies for Software Reuse: A Principal Component Analysis of Reuse Practices," IEEE Transactions on Software Engineering, pp. 825-837, September, 2003
6. William B. Frakes, Kyo Kang, "Software Reuse Research: Status and Future," IEEE Transactions on Software Engineering, pp. 529-536, July, 2005
7. Rubén Prieto-Díaz, "Status Report: Software Reusability," IEEE Software, vol. 10, no. 3, pp. 61-66, May-June 1993, doi:10.1109/52.210605
8. McIlroy, Malcolm Douglas (January 1969). "Mass produced software components". Software Engineering: Report of a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7-11 Oct. 1968. Scientific Affairs Division, NATO. p. 79.
9. Parastoo Mohagheghi and Reidar Conradi. 2007. Quality, productivity and economic benefits of software reuse: a review of industrial studies. Empirical Softw. Engg. 12, 5 (October 2007), 471-516. DOI=10.1007/s10664-007-9040-x http://dx.doi.org/10.1007/s10664-007-9040-x
10.
11. B.Jalender, Dr A.Govardhan, Dr P.Premchand “A Pragmatic Approach To Software Reuse”, Journal of Theoretical and Applied Information Technology (JATIT) Vol 14 No 2 pp.87-96. JUNE 2010.
12. Charles W. Krueger Software Reuse “ACM Computing Surveys (CSUR) Volume 24, Issue 2 (June 1992) Pages: 131 - 183.
13. H. Gomaa, Designing Software Product Lines with UML: From Use Cases to Pattern-Based Software Architectures. Addison-Wesley, 2004.
14. J. Samentinger, Software Engineering with Reusable Components, Springer Verlag, 1997.
15. Boehm, B., Some Future Trends and Implications for Systems and Software Engineering Processes, Systems Engineering, vol. 9, No. 1, 2006, pp 1-19.
16. Selby RW. Enabling reuse-based software development of large-scale systems. IEEE Transactions on Software Engineering 2005; 31(6):495–510..
top related