Introduction to Software Reuse

Similar documents
Software Reuse Techniques

Reuse in Object Oriented Programming

Architectural Patterns: From Mud to Structure

Software Engineering

DCC / ICEx / UFMG. Software Code Clone. Eduardo Figueiredo.

Chapter 18. Software Reuse

SOFTWARE ENGINEERING DECEMBER. Q2a. What are the key challenges being faced by software engineering?

Dr. Tom Hicks. Computer Science Department Trinity University

Study of Component Based Software Engineering

S.O.L.I.D: Software Engineering Principles

Design Patterns. Gunnar Gotshalks A4-1

How to Harvest Reusable Components in Existing Software. Nikolai Mansurov Chief Scientist & Architect

Code Harvesting with Zeligsoft CX

User Centered Design Interactive Software Lifecycle

Seminar report Software reuse

Com S/Geron 415X Gerontechnology in Smart Home Environments Implementation. Dr. Hen-I Yang Computer Science Department, ISU

CAS 703 Software Design

Topics in Object-Oriented Design Patterns

Software Engineering Chap.7 - Design and Implementation

DOMAIN ENGINEERING OF COMPONENTS

Game Production: reuse

TRANSITIONING PROJECTS TO A MODEL-BASED APPROACH

Cocoa Design Patterns. Erik M. Buck October 17, 2009

CHAPTER 5 GENERAL OOP CONCEPTS

BASIC CONCEPT OF OOP

SOFTWARE ARCHITECTURE & DESIGN INTRODUCTION

Objectives. Architectural Design. Software architecture. Topics covered. Architectural design. Advantages of explicit architecture

Idioms and Design Patterns. Martin Skogevall IDE, Mälardalen University

SOFTWARE ENGINEERING. To discuss several different ways to implement software reuse. To describe the development of software product lines.

Specifying and Prototyping

Efficiency Gains in Inbound Data Warehouse Feed Implementation

Jonathan Haulund. AEHF Program Office United States Air Force. Reuse: Dealing With The Hand You re Dealt

Delta Oriented Programming

Building the Enterprise

In this Lecture you will Learn: System Design. System Architecture. System Architecture

SOFTWARE REQUIREMENTS ENGINEERING LECTURE # 7 TEAM SKILL 2: UNDERSTANDING USER AND STAKEHOLDER NEEDS REQUIREMENT ELICITATION TECHNIQUES-IV

INTERNAL ASSESSMENT TEST III Answer Schema

Software Architecture

Software Reuse and Component-Based Software Engineering

UCSD Extension. Fundamentals of Web Services. Instructor: John Pantone. 2007, Objectech Corporation. All rights reserved

Examples. Object Orientated Analysis and Design. Benjamin Kenwright

Table of Contents What is Test Automation Framework?... 3 Different types of Frameworks used in QTP... 4 Linear Framework in QTP...

Contemporary Design. Traditional Hardware Design. Traditional Hardware Design. HDL Based Hardware Design User Inputs. Requirements.

Mission Possible: Move to a Content Management System to Deliver Business Results from Legacy Content

Selling Improved Testing

Design Pattern Detection

Chapter 1 GETTING STARTED. SYS-ED/ Computer Education Techniques, Inc.

IBM Rational Application Developer for WebSphere Software, Version 7.0

Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions

Introduction to Software Engineering

CSCI 445 Amin Atrash. Control Architectures. Introduction to Robotics L. Itti, M. J. Mataric

Software Design Patterns. Background 1. Background 2. Jonathan I. Maletic, Ph.D.

Decommissioning Legacy Networks

CS560: Formal Modelling and Implementation of Systems (Term II)

The modularity requirement

Coordination Patterns

Design Pattern Detection

1Z Oracle IT Architecture SOA 2013 Essentials Exam Summary Syllabus Questions

Work groups meeting 3

Design Patterns. Observations. Electrical Engineering Patterns. Mechanical Engineering Patterns

White Paper. Rose PowerBuilder Link

Model Driven Development with xtuml and BridgePoint

Klocwork Architecture Excavation Methodology. Nikolai Mansurov Chief Scientist & Architect

WHITE PAPER. SCORM 2.0: Assessment Framework. Business Area Data Representation and Interfaces

developer.* The Independent Magazine for Software Professionals

FPGA-Based Embedded Systems for Testing and Rapid Prototyping

Minsoo Ryu. College of Information and Communications Hanyang University.

Object-Oriented Systems. Development: Using the Unified Modeling Language

The software lifecycle and its documents

Graph-Based IP Verification in an ARM SoC Environment by Andreas Meyer, Verification Technologist, Mentor Graphics Corporation

Solution: Reuse Design Patterns Design patterns support reuse of software architecture Patterns embody successful solutions to problems that arise whe

Going Modular: Turning Legacy Docs into User Story-Based Content. Open Source Summit Europe 2017

The PISA Project A Model Driven Development case study

An Introduction to Patterns

ebook library PAGE 1 HOW TO OPTIMIZE TRANSLATIONS AND ACCELERATE TIME TO MARKET

From Design Patterns: Elements of Reusable Object Oriented Software. Read the sections corresponding to patterns covered in the following slides.

Study Goals. Evaluation Criteria. Problems with OO Solution. Design Pattern Implementation in Java and AspectJ

Software Architecture Recovery based on Dynamic Analysis

DISTRIBUTION STATEMENT A. Approved for public release: distribution is unlimited. (10 OCT 2018)

Using Mobile Devices for Campus Orientation with QR-Codes. Group 11 Jake, Jarrod, Aaron, Tevita

Architecture Engagement Purposes Towards a Framework for Planning Just Enough - Architecting

Software Prototyping Animating and demonstrating system requirements. Uses of System Prototypes. Prototyping Benefits

Design Patterns Design patterns advantages:

Platform Agnostic Approaches for FPCT Development

GCSE German 2016: Exemplars for Paper 4 Foundation Tier

Utilizing a Common Language as a Generative Software Reuse Tool

VMware Cloud Operations Management Technology Consulting Services

Business Process Testing

Woman and Veteran-Owned Small Business. we listen and respond to your IT needs

Decommissioning Legacy Networks

Question 1: What is a code walk-through, and how is it performed?

The COSA Framework. A Cognitive System Architecture with its implementation based on a CORBA-wrapped SOAR process

OBJECT ORIENTED SYSTEM DEVELOPMENT Software Development Dynamic System Development Information system solution Steps in System Development Analysis

TECHNOLOGY BRIEF: CA ERWIN DATA PROFILER. Combining Data Profiling and Data Modeling for Better Data Quality

Object Oriented Programming

Crash Course in Modernization. A whitepaper from mrc

A number of optimizations are already in use by the majority of companies in industry, notably:

Test How to Succeed in Test Automation Björn Hagström & Davor Crnomat, Testway AB

Virtustream Managed Services Drive value from technology investments through IT management solutions. Tim Calahan, Manager Managed Services

THE BCS PROFESSIONAL EXAMINATION BCS Level 6 Professional Graduate Diploma in IT September 2017 EXAMINERS REPORT. Software Engineering 2

Transcription:

DCC / ICEx / UFMG Introduction to Software Reuse Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo

Software Reuse The use of existing software or software knowledge to build new software In the last 20 years, several reuse techniques have been proposed Libraries, objects, components, and so on Open source initiatives have created a large amount of source code available

Granularity of Reuse Objects and Functions Most common type of reuse It has been practiced for 50 years Components Middle-granularity reuse. Examples are architectural components and subsystems Systems A system can be packed for reuse and, for instance, included into a larger system It usually requires customization

Advantages of Software Reuse Expect to decrease time and costs The system may be delivered in shorter time and at lower price Increase the product reliability Software was used and tested before Use of expert knowledge A way of exchange knowledge Follow standards For instance, interface have similar look and feel

Potential Drawbacks Maintenance Costs Reused components may become incompatible with others in future versions Lack of Tool Support Development environments are not fully prepared to support software reuse It is hard to maintain a library You need to find the right software and understand how it works, before reusing

Types of Reuse by Motivation Opportunistic Reuse While getting ready to begin a project, the team realizes that there are existing components they can reuse Planned Reuse A team strategically designs components so that they will be reusable in future

Planning for Reuse Effective reuse requires planning Managers have to be engaged and motivate the whole organization Companies focused on a specific domain have advantages It is easier to find reuse opportunities in this case

Planning Factors Several factors have to be considered in planning for reuse Development schedule Software lifecycle Expertise and knowledge of the team Application domain more in the textbook +

Schedule and Lifecycle Development schedule In a tight schedule scenario, reuse may speed up software development The learning curve might be a bottleneck Software lifecycle Software reuse might be challenge in highly changed code Third-part components may impose maintenance difficulties

Team and Application Domain Expertise and knowledge of the team People have to be familiar with the reuse technique Some reuse techniques might be hard to be understood and applied Application Domain In some domains, it is easy to find reusable components and libraries Other domains are not so easy

Overview of Reuse Techniques Frameworks Design Patterns Configurable Applications Architecture Patterns Software Product Lines API and Libraries Encapsulation of Legacy Systems Component-based Development COTS Generative Programming Feature-Oriented Programming Aspect-Oriented Software Development Model-driven Development Service-Oriented Architecture

Reuse Techniques (1 of 3) Library and API Classes and functions that implement common reusable abstractions Design and Architecture Patterns Patterns are reusable general solutions for recurring problems Application Framework It is as set of classes that implements the standard structure of an application

Reuse Techniques (2 of 3) Components Subsystems that can be integrated to create a new system Encapsulation of Legacy Systems Cheap option that wraps a legacy system and defines new interfaces Service-Oriented Architecture New systems are developed by sharing common services

Reuse Techniques (3 of 3) Aspect Oriented Software Development Reuse technique to support advanced separation of concerns (modularity) Software Product Lines Family of applications following a common architecture Model Driven Development Code is generated by means of refining domain and application models

Bibliography Ian Sommerville. Software Engineering, 9th Edition. Pearson Education, 2011. Chap. 16 Software Reuse