1 Reusability and Portability Xiaojun Qi. 2 Reuse Concepts Reuse is the use of components of one product to facilitate the development of a different.

Slides:



Advertisements
Similar presentations
Building Bug-Free O-O Software: An Introduction to Design By Contract A presentation about Design By Contract and the Eiffel software development tool.
Advertisements

Software Reuse SEII-Lecture 28
© 2005 by Prentice Hall Appendix 2 Automated Tools for Systems Development Modern Systems Analysis and Design Fourth Edition Jeffrey A. Hoffer Joey F.
1 Postdelivery Maintenance Xiaojun Qi. 2 Why Postdelivery Maintenance Is Necessary Corrective maintenance: To correct residual faults –Analysis, design,
SMM5101 (ADVANCED MULTIMEDIA PROGRAMMING) Review of Multimedia Programming.
Software Reuse Building software from reusable components Objectives
Object-Oriented Analysis and Design Lecture 12 Reusability, Portability, and Interoperability (from Schach, “O-O and Classical Software Engineering”)
Software Evolution Managing the processes of software system change
Soft. Eng. II, Spring 02Dr Driss Kettani, from I. Sommerville1 CSC-3325: Chapter 6 Title : The Software Reuse Reading: I. Sommerville, Chap. 20.
Reusability and Portability Chapter 8 CSCI Reusability and Portability  The length of the development process is critical.  No matter how high.
Building software from reusable components.
Software Issues Derived from Dr. Fawcett’s Slides Phil Pratt-Szeliga Fall 2009.
Course Instructor: Aisha Azeem
Software Reengineering 2003 년 12 월 2 일 최창익, 고광 원.
The Re-engineering and Reuse of Software
Software Re-engineering
COMPONENT-BASED SOFTWARE ENGINEERING
Introduction to Databases and Database Languages
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse 2.
Problems with reuse – Increased maintenance costs; lack of tool support; not-invented- here syndrome; creating, maintaining, and using a component library.
Essence and Accident in Software Engineering By: Mike Hastings.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 18 Slide 1 Software Reuse.
Software Engineering Muhammad Fahad Khan
Software Reuse Prof. Ian Sommerville
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14Slide 1 Design with Reuse l Building software from reusable components.
CSE301 Harry R. Erwin, PhD University of Sunderland
Appendix 2 Automated Tools for Systems Development © 2006 ITT Educational Services Inc. SE350 System Analysis for Software Engineers: Unit 2 Slide 1.
Software Engineering Reuse.
Software Product Families. Generative Programming Main text: Ian Sommerville, Software Engineering, 8 th edition, chapter 18 Additional readings: K. Czarnecki.
Slide 8.1 © The McGraw-Hill Companies, 2007 Object-Oriented and Classical Software Engineering Seventh Edition, WCB/McGraw-Hill, 2007 Stephen R. Schach.
1 CS 456 Software Engineering. 2 Contents 3 Chapter 1: Introduction.
An Introduction to Software Architecture
CSE 303 – Software Design and Architecture
Slide 8.1 Copyright © 2008 by The McGraw-Hill Companies, Inc. All rights reserved. Object-Oriented Software Engineering WCB/McGraw-Hill, 2008 Stephen R.
Slide 8.1 CHAPTER 8 REUSABILITY AND PORTABILITY. Slide 8.2 Overview l Reuse concepts l Impediments to reuse l Reuse case studies l Objects and reuse l.
Coupling and Cohesion Pfleeger, S., Software Engineering Theory and Practice. Prentice Hall, 2001.
CSC 395 – Software Engineering Lecture 12: Reusability –or– Programming was Bjarne Again.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
File Systems and Databases Lecture 1. Files and Databases File: A collection of records or documents dealing with one organization, person, area or subject.
Cohesion and Coupling CS 4311
CE Operating Systems Lecture 3 Overview of OS functions and structure.
Basic Concepts of Component- Based Software Development (CBSD) Model-Based Programming and Verification.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14Slide 1 Chapter 14 Design with Reuse.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 18 Slide 1 Software Reuse.
Chapter 5: Software Re-Engineering Omar Meqdadi SE 3860 Lecture 5 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
Slide 8.1 Copyright © 2011 by The McGraw-Hill Companies, Inc. All rights reserved. Object-Oriented and Classical Software Engineering Eighth Edition, WCB/McGraw-Hill,
Design Reuse Earlier we have covered the re-usable Architectural Styles as design patterns for High-Level Design. At mid-level and low-level, design patterns.
Chapter 4 Automated Tools for Systems Development Modern Systems Analysis and Design Third Edition 4.1.
CSPC 464 Fall 2014 Son Nguyen.  Attendance/Roster  Introduction ◦ Instructor ◦ Students  Syllabus  Q & A.
MVC WITH CODEIGNITER Presented By Bhanu Priya.
Lecture 21: Component-Based Software Engineering
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Design and implementation Chapter 7 – Lecture 1. Design and implementation Software design and implementation is the stage in the software engineering.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
Coupling and Cohesion Schach, S, R. Object-Oriented and Classical Software Engineering. McGraw-Hill, 2002.
Coupling and Cohesion Pfleeger, S., Software Engineering Theory and Practice. Prentice Hall, 2001.
Software Reuse. Objectives l To explain the benefits of software reuse and some reuse problems l To discuss several different ways to implement software.
Chapter 16 – Software Reuse
The Development Process of Web Applications
Coupling and Cohesion 1.
Object-Oriented and Classical Software Engineering Eighth Edition, WCB/McGraw-Hill, 2011 Stephen R. Schach 1.
Chapter 16 – Software Reuse
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Software Design Lecture : 8
An Introduction to Software Architecture
Lecture 1 File Systems and Databases.
Chapter 7 –Implementation Issues
Chapter 16 – Software Reuse
Presentation transcript:

1 Reusability and Portability Xiaojun Qi

2 Reuse Concepts Reuse is the use of components of one product to facilitate the development of a different product with different functionality Two types of reuse –Opportunistic (accidental) reuse The product is built and parts are put into the part database for reuse –Systematic (deliberate) reuse Reusable parts are constructed and products are built using these parts Why reuse? –To get products to the market faster There is no need to design, implement, test, and document a reused component

3 Impediments to Reuse 1. Not invented here (NIH) syndrome: Would rather rewrite a routine from scratch 2. Concerns about faults in potentially reusable routines 3. Storage–retrieval issues 4.Cost of reuse –The cost of making an item reusable –The cost of reusing the item –The cost of defining and implementing a reuse process 5. Legal issues (contract software only) 6. Lack of source code for COTS components The first four impediments can be overcome

4 Objects and Reuse Claim of CS/D –An ideal module has functional cohesion –Problem: The data on which the module operates  We cannot reuse a module unless the data are identical The best type of module has informational cohesion  This is an object (an instance of a class) An object comprises both data and action  This promotes reuse

5 Reuse During Design and Implementation Various types of design reuse can be achieved –Some can be carried forward into implementation Design Reuse –Opportunistic reuse of designs is common when an organization develops software in only one application domain

6 Design Reuse Library or Toolkit: A set of reusable routines Application Frameworks: A framework incorporates the control logic of the design Design Patterns: A pattern is a solution to a general design problem –In the form of a set of interacting classes Software Architecture: Encompasses a wide variety of design issues, including: –Organization in terms of components –How those components interact Component-Based Software Engineering: Construct a standard collection of reusable components.

7 Reuse and Maintenance Reuse impacts maintenance more than development –Savings during maintenance are nearly 18 percent –Savings during development are about 9.3 percent

8 Portability A product is portable if it is significantly easier to modify the product as a whole to run it on another compile-hardware- operating system configuration than recode it from scratch. Difficulties of Achieving Portability –Hardware Incompatibilities –Operating System Incompatibilities –Numerical Software Incompatibilities: Differences in word size can affect accuracy –Compiler Incompatibilities

9 Why Portability? Portability is essential –Good software lasts 15 years or more –Hardware is changed every 4 years Upwardly compatible hardware works –But it may not be cost effective Portability can lead to increased profits –Multiple copy software –Documentation (especially manuals) must also be portable

10 Techniques for Achieving Portability Obvious technique –Use standard constructs of a popular high- level language Portable System Software: –Isolate implementation-dependent pieces Example: UNIX kernel, device-drivers –Utilize levels of abstraction Example: Graphical display routines

11 Techniques for Achieving Portability (Cont.) Portable Application Software –Use a popular programming language –Use a popular operating system –Adhere strictly to language standards –Avoid numerical incompatibilities –Document meticulously

12 Techniques for Achieving Portability (Cont.) Portable Data –Porting structured data Construct a sequential (unstructured) file and port it Reconstruct the structured file on the target machine This may be nontrivial for complex database models