Title: Software Engineering with Reusable Components
1Software Engineeringwith Reusable Components
- RiSEs Seminars
- Sametingers book Chapters 1, 2 and 3
- Vinicius Cardoso Garcia
2Summary
- Introduction (Chapter 1)
- Software Components
- Software Reuse
- Software Reuse (Chapter 2)
- Introduction and Motivation
- Benefits and Obstacles of Software Reuse
- Technical Aspects of Software Reuse (Chapter 3)
- Reuse Facets
31. Introduction
4Introduction Chapter 1
- Start -gt simple programs and implementing
algoritms - Complexity -gt software crisis
- Reuse of software components
- Several advantages
- What are components, their proprieties,
requirements, implications
5Software Components
Introduction Chapter 1
- Algorithms, designs, requirements,
specifications, procedures, modules,
applications, ideas, among others
components are artefacts that we clearly
identify in our software systems. They have an
interface, encapsulate internal details and are
documented separately
- CBSD has become a buzzword
- Be easily combined with each other
6Introduction Chapter 1
- Reuse component integrate it into a software
- Example what to do to reuse a algorithm?
- Problems?
- Implement reuse idea (pseudocode), programming
language - Component ?
7What is not a component? Why?
Introduction Chapter 1
- A software design is not a software component
- Framework is not one component as a whole
- Consists of many components
- Design patterns are not a software components
too! - Can be reused but they are not a software
components - Solve certain problems by arranging components
(classes)
8The reuse of software designs is more effective?
Introduction Chapter 1
- Depends on what a component is
- Restrict to source code components
- Increase productivity
- reuse a component reusing design
- Components x Algorithms reuse
- Components have an interface -gt black-box reuse
(white-box) - Documentation is a necessity
- Code scavenging more complex, more difficult
to reuse
9Software Reuse
Introduction Chapter 1
- Soft. Component and Soft. Reuse relation
- The use of soft. component is not sufficient
- Reusing soft. influence on Soft. Engineering
- Structures and economic
- Soft. Life cycle domain analysis
10Reuse legacy code, is possible?
Introduction Chapter 1
- New challenges !
- Requirements change constantly rebuilding every
time? - Incorporate old components
- Reengineering, Reverse engineering, Refactoring,
CBSD, CASE tools, Software Transformations, AOSD - (Alvaro et al., 2003), (Garcia et al., 2004) and
(Garcia, 2005)
11Soft. systems must be composed of components
Introduction Chapter 1
- Black-box reuse is inflexible and restrictive
(Prieto, 1994) - Reuse of source components -gt reuse of analysis
and design (implicitly) (Freeman, 87a) - Explicitly misses the opportunity of reusing
this information - Soft. Reuse and Soft. Component will not salve
all the problems in SE - Flexible software systems, evolution and
adaptability
122. Software Reuse
13History of Software Reuse
Software Reuse Chapter 2
- Software crisis late sixties development and
maintenance - McIlroy software factory concept
- Academia late 1970s
- 1980s large-scale reuse programs were done
- Advances repositories, classification tech.,
creation and distribution, environments
14Introduction and Reuse Definitions
Software Reuse Chapter 2
- Code scavenging -gt increased productivity
- source code generators or reuse knowledge
- Many different viewpoints
- Reuse is the use of any information which a
developer may need in the software creation
process (Freeman, 1987a) - the use of everything associated with a software
project, including knowledge (Basili and
Rombach, 1988)
Software reuse is the process of creating
software systems from existing software rather
than building them from scratch. (Krueger, 1992)
15Motivation
Software Reuse Chapter 2
- 40 to 60 of code is reusable
- 60 of design and code are reusable in business
application - 75 of program functions are common
- 15 of the code is unique
- 15 to 85 - rates of actual and potential reuse
(Mili et al, 1995)
16Benefits of Software Reuse
Software Reuse Chapter 2
- Quality Improvements
- Quality, productivity, performance, reliability,
interoperability - 9 times better during component test and 4.5
during system test. Other project no errors found
in life cycle (Bauer, 1993) - Effort reduction
- Redundant work, development time, time to market,
documentation, maintenance costs, training costs,
team size - Other Benefits
- Rapid prototyping support, expertise sharing
17Industry examples
Software Reuse Chapter 2
- NASA 25 projects (3K to 112K LOC) 32 reused
- Motorola candidate technology for initiatives
and goals to improve productivity and quality - HP reduction in defect density range from 24
to 76 and a 40 to 57 increase in productivity - IBM Reuse Tecnology Center, saving in the
millions of dollars, reusing accounting for 20
to 30 - Other examples 1979 to 1992 (Mili et al, 1995)
18Obstacles to Software Reuse
Software Reuse Chapter 2
- Many factor directly or indirectly influence the
success or failure of reuse - Technical, conceptual, organizational, economic,
etc - Managerial and Organizational
- Lack of management support, project management,
lack of explicit procedures, inadequate
organizational structures, not invented here,
legal issues, lack of management incentives
19Obstacles to Software Reuse
Software Reuse Chapter 2
- Economic Obstacles
- Can save money in the long run, but is not for
free - Costs of making something reusable, costs of
reusing it and costs of defining and implementing
a reuse process - Conceptual and Technical Obstacles
- Difficult on finding reusable software,
nonreusability of found software, legacy
components not suitable for reuse, OO technology,
modification, integration, garbage reuse - Other basic technical difficulties
- What a reusable component constitute? What a
component does and how to use it?
203. Technical Aspects for Software Reuse
21Reuse facets
Technical Aspects for Soft Reuse Chapter 3
- Affected by nontechnical and technical aspects
- Substance defines the essence of reused items
- Scope defines the form and extent of reuse
- Mode defines how reuse is conducted
- Technique defines the approach that is used to
implement reuse - Intention defines how elements will be used
- Product defines what is reused
22Reuse Techniques
Technical Aspects for Soft Reuse Chapter 3
- Abstraction
- Specification (what) and realization (how)
- Compositional Reuse
- Components remain unmodified in their reuse
- Repositories principles of organization (pipe
architecture or OO) - Locate components, classification schemes,
retrieval techniques, integrate them in software
systems - Component composition
- Code and design scavenging
23Generative Reuse
Technical Aspects for Soft Reuse Chapter 3
- Reuse of a generation process
- Lexical analyzers, parsers and compilers
- Application generators
- Language-based generators
- Transformation systems
- Draco approach domain-oriented specifications
(Garcia, 2005) - Programming languages
24Generation vs. Composition
Technical Aspects for Soft Reuse Chapter 3
Reuse Techniques Composition Generation
Reused component Building blocks Patterns
Nature of component Atomic and immutable, passive Diffuse and malleable, active
Emphasis Repositories, composition principles Generators, language-based generators, TS
Examples Function/class libraries, Unix filters Parser generators, 4th generation languages
25Reuse Intentions
Technical Aspects for Soft Reuse Chapter 3
- Black-box reuse
- White-box reuse
- Glass-box reuse
- Generative reuse
- Specification -gt implementation
26Reuse products
Technical Aspects for Soft Reuse Chapter 3
- Algorithms
- Function and Class libraries
- Software architectures and designs
- Framework Classes
- Design patterns
- Applications
- Documentation
27References
- SAMETINGER, J. Software Engineering with Reusable
Components. Springer-Verlag, 1997. - ALVARO, A. et al. Orion-RE A Component-Based
Software Reengineering Environment. In
Proceedings of The 10th Working Conference on
Reverse Engineering (WCRE'2003), 2003, Victoria,
British Columbia, Canada. - GARCIA, V. C. et al. Towards an effective
approach for Reverse Engineering. In the 11th
IEEE Working Conference on Reverse Engineering
(WCRE 2004 Conference), 2004, Delft University of
Technology, Netherlands. - GARCIA, V. C. Phoenix An Approach for
Aspect-Oriented Software Reengineering. Master
thesis. Federal University of São Carlos
(UFSCar), São Carlos-SP, Brazil. March, 03 2005.
(in portuguese) - PRIETO, R., Historical Overview. In Software
Reusability, chapter 1, pages 1-16, 1994. - FREEMAN, P. Reusable software engineering
concepts and research directions. In Tutorial
Software Reusability, pages 10-23. 1987. - BASILI, V. R. and ROMBACH, H. D. Towards a
comprehensive framework for reuse A
reuse-enabling software evolution environment.
Technical Report CS-TR-2158, University of
Maryland, December 1988. - MILI, H. et al. Reusing Software Issues and
research directions. IEEE Transactions on
Software Engineering, 21(6)528-562, June 1995. - BAUER, D. A. A reusable parts center. IBM Systems
Journal, 32(4)620-624, 1993.