280 likes | 300 Views
Explore insights from Chapters 1, 2, and 3 of Sametinger's book on Software Engineering with Reusable Components. Learn about software components, advantages and obstacles of reuse, and the history and benefits of software reuse.
E N D
Software Engineeringwith Reusable Components RiSE’s Seminars Sametinger’s book :: Chapters 1, 2 and 3 Vinicius Cardoso Garcia
Summary • 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
Introduction :: Chapter 1 • Start -> simple programs and implementing algoritms • Complexity -> software crisis • Reuse of software components • Several advantages • What are… components, their proprieties, requirements, implications…
Introduction :: Chapter 1 Software Components • 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
Introduction :: 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 ?
Introduction :: Chapter 1 What is not a component? Why? • “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)
Introduction :: Chapter 1 The reuse of software designs is more effective? • 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 -> black-box reuse (white-box) • Documentation is a necessity • Code scavenging :: more complex, more difficult to reuse
Introduction :: Chapter 1 Software Reuse • 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
Introduction :: Chapter 1 Reuse legacy code, is possible? • 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)
Introduction :: Chapter 1 Soft. systems must be composed of components • Black-box reuse is inflexible and restrictive (Prieto, 1994) • Reuse of source components -> 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
Software Reuse :: Chapter 2 History of Software Reuse • 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…
Software Reuse :: Chapter 2 Introduction and Reuse Definitions • Code scavenging -> 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)
Software Reuse :: Chapter 2 Motivation • 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)
Software Reuse :: Chapter 2 Benefits of Software Reuse • 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
Software Reuse :: Chapter 2 Industry examples • 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)
Software Reuse :: Chapter 2 Obstacles to Software Reuse • 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
Software Reuse :: Chapter 2 Obstacles to Software Reuse • 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?
Technical Aspects for Soft Reuse :: Chapter 3 Reuse facets • 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
Technical Aspects for Soft Reuse :: Chapter 3 Reuse Techniques • 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
Technical Aspects for Soft Reuse :: Chapter 3 Generative Reuse • 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
Technical Aspects for Soft Reuse :: Chapter 3 Generation vs. Composition
Technical Aspects for Soft Reuse :: Chapter 3 Reuse Intentions • Black-box reuse • White-box reuse • Glass-box reuse • Generative reuse • Specification -> implementation
Technical Aspects for Soft Reuse :: Chapter 3 Reuse products • Algorithms • Function and Class libraries • Software architectures and designs • Framework Classes • Design patterns • Applications • Documentation
References • 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.