Presentation is loading. Please wait.

Presentation is loading. Please wait.

Software Engineering with Reusable Components

Similar presentations


Presentation on theme: "Software Engineering with Reusable Components"— Presentation transcript:

1 Software Engineering with Reusable Components
RiSE’s Seminars Sametinger’s book :: Chapters 1, 2 and 3 Vinicius Cardoso Garcia April 10, 2019

2 Summary Introduction (Chapter 1) Software Reuse (Chapter 2)
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 April 10, 2019

3 1. Introduction April 10, 2019

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… April 10, 2019

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 April 10, 2019

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 ? April 10, 2019

7 What is not a component? Why?
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) April 10, 2019

8 The reuse of software designs is more effective?
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 April 10, 2019

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 April 10, 2019

10 Reuse legacy code, is possible?
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) April 10, 2019

11 Soft. systems must be composed of components
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 April 10, 2019

12 2. Software Reuse April 10, 2019

13 History of Software Reuse
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… April 10, 2019

14 Introduction and Reuse Definitions
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) April 10, 2019

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) April 10, 2019

16 Benefits of Software Reuse
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 April 10, 2019

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) April 10, 2019

18 Obstacles to Software Reuse
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 April 10, 2019

19 Obstacles to Software Reuse
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? April 10, 2019

20 3. Technical Aspects for Software Reuse
April 10, 2019

21 Reuse 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 April 10, 2019

22 Reuse 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 April 10, 2019

23 Generative 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 April 10, 2019

24 Generation vs. Composition
Technical Aspects for Soft Reuse :: Chapter 3 Generation vs. Composition 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 April 10, 2019

25 Reuse Intentions Technical Aspects for Soft Reuse :: Chapter 3
Black-box reuse White-box reuse Glass-box reuse Generative reuse Specification -> implementation April 10, 2019

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

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, (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 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): , June 1995. BAUER, D. A. A reusable parts center. IBM Systems Journal, 32(4): , 1993. April 10, 2019


Download ppt "Software Engineering with Reusable Components"

Similar presentations


Ads by Google