Software Reuse. Software Engineering Course Given by: Arnon Netzer. To use parts of one product in another product with a different function.



Similar documents
Software Reuse and Reengineering: With A Case Study

Principles of Software Construction: Objects, Design, and Concurrency. Course Introduction. toad. toad Fall School of Computer Science

Introduction. 1.1 Motivation. Chapter 1

Module 1. Introduction to Software Engineering. Version 2 CSE IIT, Kharagpur

Code Refactoring and Defects

Configuration Management for Reusable Software

Manage Software Development in LabVIEW with Professional Tools

Topics. Introduction. Java History CS 146. Introduction to Programming and Algorithms Module 1. Module Objectives

Web Frameworks. web development done right. Course of Web Technologies A.A. 2010/2011 Valerio Maggio, PhD Student Prof.

1.1 The Nature of Software... Object-Oriented Software Engineering Practical Software Development using UML and Java. The Nature of Software...

Using Story Points to Estimate Software Development Projects in the Commercial Phase

Architecture Artifacts Vs Application Development Artifacts

Stack Allocation. Run-Time Data Structures. Static Structures

Software: Systems and Application Software

The V-model. Validation and Verification. Inspections [24.3] Testing overview [8, 15.2] - system testing. How much V&V is enough?

Data Analysis 1. SET08104 Database Systems. Napier University

Object Oriented Design

Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation

The QlikView deployment framework

Unit 2.1. Data Analysis 1 - V Data Analysis 1. Dr Gordon Russell, Napier University

Software Architecture

Paul Boisvert. Director Product Management, Magento

PARCC TECHNOLOGY ARCHITECTURE ARCHITECTURAL PRINCIPLES AND CONSTRAINTS SUMMARY

Introduction to Automated Testing

OOP? What is OOP? Why? OOP in a nutshell. Stéphane Ducasse 2.1

South East of Process Main Building / 1F. North East of Process Main Building / 1F. At 14:05 April 16, Sample not collected

Simplifying development through activity-based change management

Last Class: OS and Computer Architecture. Last Class: OS and Computer Architecture

OO Design Quality Metrics

Basic Trends of Modern Software Development

Agile Business Suite: a 4GL environment for.net developers DEVELOPMENT, MAINTENANCE AND DEPLOYMENT OF LARGE, COMPLEX BACK-OFFICE APPLICATIONS

Algorithms, Flowcharts & Program Design. ComPro

How To Develop A Telelogic Harmony/Esw Project

McGraw-Hill The McGraw-Hill Companies, Inc.,

Adaptive Sampling and the Autonomous Ocean Sampling Network: Bringing Data Together With Skill

A Pattern-based Framework to Address Abstraction, Reuse, and Cross-domain Aspects in Domain Specific Visual Languages *

2 (18) - SOFTWARE ARCHITECTURE Service Oriented Architecture - Sven Arne Andreasson - Computer Science and Engineering.

Abstractions from Multimedia Hardware. Libraries. Abstraction Levels

How To Develop Software

Reusability of WSDL Services in Web Applications

Building Applications Using Micro Focus COBOL

Total Quality Management (TQM) Quality, Success and Failure. Total Quality Management (TQM) vs. Process Reengineering (BPR)

Component Based Development in Software Engineering

TeCReVis: A Tool for Test Coverage and Test Redundancy Visualization

Software Engineering. System Models. Based on Software Engineering, 7 th Edition by Ian Sommerville

Johannes Sametinger. C. Doppler Laboratory for Software Engineering Johannes Kepler University of Linz A-4040 Linz, Austria

Model Decisions and Business Rules in System Architect. Larry Goldberg & Barbara von Halle Knowledge Partners International LLC

GenericServ, a Generic Server for Web Application Development

Agent Languages. Overview. Requirements. Java. Tcl/Tk. Telescript. Evaluation. Artificial Intelligence Intelligent Agents

SOFTWARE TESTING TRAINING COURSES CONTENTS

SOA and BPO SOA orchestration with flow. Jason Huggins Subject Matter Expert - Uniface

LET K2 SHOW YOU WHAT MICROSOFT SHAREPOINT CAN REALLY DO

1. What are Data Structures? Introduction to Data Structures. 2. What will we Study? CITS2200 Data Structures and Algorithms

What is a life cycle model?

CSE 307: Principles of Programming Languages

Chapter 2. Data Model. Database Systems: Design, Implementation, and Management, Sixth Edition, Rob and Coronel

Software Development In the Cloud Cloud management and ALM

Encore. The Powerful, Affordable Answer for Contact Centers Like Yours. Product Description

Using TechExcel s DevSuite to Achieve FDA Software Validation Compliance For Medical Software Device Development

THE EVOLUTION OF COMPONENT BASED SOFTWARE ENGINEERING FROM THE TRADITIONAL APPROACH TO CURRENT PRACTICES

How To Model The Economic Cost Of Software Reuse

Textbook: T. Issariyakul and E. Hossain, Introduction to Network Simulator NS2, Springer

A Comparative Analysis of Structured and Object-Oriented Programming Methods ASAGBA, PRINCE OGHENEKARO; OGHENEOVO, EDWARD E. CPN, MNCS.

II. TYPES OF LEVEL A.

Patterns in. Lecture 2 GoF Design Patterns Creational. Sharif University of Technology. Department of Computer Engineering

Complexities of Simulating a Hybrid Agent-Landscape Model Using Multi-Formalism

Lesson 1 Introduction to Rapid Application Development using Visual Basic

CASE TOOLS. Contents

The Ten Principles of Material Handling

Myths About Service-Oriented Architecture Demystifying SOA. producers can coexist, and still have no dependence on each other.

Pattern Insight Clone Detection

Component Based Software Engineering: A Broad Based Model is Needed

Iterators. Provides a way to access elements of an aggregate object sequentially without exposing its underlying representation.

Analysis of Object Oriented Software by Using Software Modularization Matrix

Compaq Batch Scheduler for Windows NT

A Service-oriented Architecture for Business Intelligence

Rapid application development for JEE using Adobe ColdFusion 9

"FRAMEWORKING": A COLLABORATIVE APPROACH TO CONTROL SYSTEMS DEVELOPMENT

The Most Popular UI/Apps Framework For IVI on Linux

UML for the C programming language.

Freescale Semiconductor, I

For more information about UC4 products please visit Automation Within, Around, and Beyond Oracle E-Business Suite

emipp Extending Medicaid Connectivity for Managing EHR Incentive Payments Overview

Software Engineering Techniques

Online Recruitment System 1. INTRODUCTION

Philosophy of GIMnet

Borland Kylix 3 versus Linux GCC Development

Sistemi ICT per il Business Networking

The Separation of Interface and Implementation in C++

XQuery Web Apps. for Java Developers

Unification of AOP and FOP in Model Driven Development

How To Apply Software Archeology To Your Development Process

Transcription:

Software Reuse Software Engineering Course Given by: Arnon Netzer What is reuse? To use parts of one product in another product with a different function. What can be reused? code, documentation, design, testing, anything Is porting an example of reuse? NO!! 1

How Reuse Happens? accidental reuse: when a part turns out to be reusable by accident. deliberate reuse: when a part is purposely built for possible reuse. Obvious Reuse Examples: Cut & Paste (accidental reuse). Visual Basic - a system that generates code automatically using built-in reusable modules. stdio.h - subroutine libraries are bunches of reusable modules. 2

Advanced Reuse Examples: Hopefully - An organization saves and reuses code modules it has developed itself. Utopically - Organizations sell each other modules for reuse. Purpose of Reuse Cheaper products Better quality products 3

Cheaper products?!! Shorter development time. Increase productivity. Decrease testing domain. Easier maintenance. Better quality products!!? Code that was written for reuse: Has better specifications. Is more thoroughly tested. Software utilizing reused code has to be: Better specified. Well standardized. Organized. 4

Drawbacks of Reuse Code designed for reuse is more expensive to create. Integrating reusable code introduces an overhead in the development process. Maintaining the reusable resources requires added mechanisms. How to Create Reusable Code 5

Problem Domain Vs. Solution Domain Designs which attempt to adhere as closely as possible to the structure of the problem (application) domain are said to be application-driven. Designs which attempt to simplify the solution are said to be solution-driven. Problem Domain Design Design that well describes one application space, should be able to fit a similar application space with minimal design adjustment. Small and localized change in the original problem specification should result in a small and localized change in the objectoriented design. 6

Spanning the Problem Domain Design software that spans as wide a region of the problem space as possible. Regard the properties and behavior of the object rather then the functionalities you currently need. How to Use Reusable Code 7

Inheritance class GeometricObject { Point position; // center of object Point bbox; // bounding box angle orientation; // orientation public: void move(point r); // abs. translate void rotate(double angle); // abs. angle virtual void draw(); // display on screen // etc... }; class Rectangle : public GeometricObject { // etc... }; Composition Composition is the process of composing a class object out of several object of other related classes. class Stack { List list; public: int push(char *s) { return list.add(s); } char *pop() { return list.removeat(list::first); } int size() { return list.size(); } }; 8

Effects of Reuse on Quality Productivity and Economics Metrics collected on two case studies at Hewlett-Packard. Wayne C. Lim 1994. 1st case study-overview The study was done in the Manufacturing Productivity section of HP s Software Technology Division. The MP section produces larg-application software for manufacturing resource planning. The study was started in 1983. 9

1st case study-technical Data Reuse was done on application source code etc. Total reusable code size was 55,000 lines of noncomment source statements. The code was written in Pascal and SPL. 2nd case study-overview The study was done in the San Diego Technical Graphics Division of HP. The STG develops applications for plotters and printers. The study was started in 1987. 10

2nd case study-technical Data Reuse was done on application source code etc. Total reusable code size was 20,000 lines of noncomment source statements. The code was written in C. Code Quality Defects per thousand noncomment-source statements 4.5 4 3.5 3 2.5 2 1.5 1 0.5 0 MP STG New code only Reused & new code Reused code only 11

Coding Productivity 1.2 Thousand of noncomment-source statements / month 1 0.8 0.6 0.4 0.2 0 MP STG New code only Reused & new code Additional Effort in Creating Reusable Code in STG total main-tenance testing coding design analysis 0% 5% 10% 15% 20% 25% Percent increase 12

Reuse Case Study - Economics MP STG time horizon 1983-1992 1987-1994 start-up resources required 26 engineering months $0.3 million 107 engineering months $1.4 million Ongoing resources required 54 engineering months $0.7 million 99 engineering months $1.2 million Gross cost 80 engineering months $1.0 million 206 engineering months $2.6 million Gross savings 328 engineering months $4.1 million 446 engineering months $5.6 million Return on investment 410% 216% Break even year 2 nd year 6 th year 13