1 / 27

Software Engineering with Reusable Components

Software Engineering with 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

netherton
Download Presentation

Software Engineering with Reusable Components

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Software Engineeringwith Reusable Components RiSE’s Seminars Sametinger’s book :: Chapters 1, 2 and 3 Vinicius Cardoso Garcia

  2. 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

  3. 1. Introduction

  4. 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…

  5. 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

  6. 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 ?

  7. 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)

  8. 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

  9. 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

  10. 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)

  11. 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

  12. 2. Software Reuse

  13. 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…

  14. 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)

  15. 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)

  16. 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

  17. 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)

  18. 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

  19. 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?

  20. 3. Technical Aspects for Software Reuse

  21. 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

  22. 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

  23. 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

  24. Technical Aspects for Soft Reuse :: Chapter 3 Generation vs. Composition

  25. Technical Aspects for Soft Reuse :: Chapter 3 Reuse Intentions • Black-box reuse • White-box reuse • Glass-box reuse • Generative reuse • Specification -> implementation

  26. Technical Aspects for Soft Reuse :: Chapter 3 Reuse products • Algorithms • Function and Class libraries • Software architectures and designs • Framework Classes • Design patterns • Applications • Documentation

  27. 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.

More Related