Reusability and Portability Chapter 8 CSCI 4320. Reusability and Portability  The length of the development process is critical.  No matter how high.

Slides:



Advertisements
Similar presentations
SOFTWARE Chapter 5.
Advertisements

COMPUTERS: TOOLS FOR AN INFORMATION AGE Chapter 3 Operating Systems.
Computer Software 3 Section A Software Basics CHAPTER PARSONS/OJA
Java.  Java is an object-oriented programming language.  Java is important to us because Android programming uses Java.  However, Java is much more.
Software: Systems and Application Software
Object-Oriented Analysis and Design Lecture 12 Reusability, Portability, and Interoperability (from Schach, “O-O and Classical Software Engineering”)
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.
Software Engineering For Beginners. General Information Lecturer, Patricia O’Byrne, office K115A. –
Soft. Eng. II, Spring 02Dr Driss Kettani, from I. Sommerville1 CSC-3325: Chapter 6 Title : The Software Reuse Reading: I. Sommerville, Chap. 20.
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition Chapter 2: Operating-System Structures Modified from the text book.
Copyright Arshi Khan1 System Programming Instructor Arshi Khan.
Operating Systems.
Operating Systems Concepts 1. A Computer Model An operating system has to deal with the fact that a computer is made up of a CPU, random access memory.
Standard 1 - Objective 2: Understand, evaluate, and use computer software.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse 2.
Microsoft Visual Basic 2012 CHAPTER ONE Introduction to Visual Basic 2012 Programming.
Microsoft Visual Basic 2005 CHAPTER 1 Introduction to Visual Basic 2005 Programming.
Computer for Health Sciences
Section 6.1 Explain the development of operating systems Differentiate between operating systems Section 6.2 Demonstrate knowledge of basic GUI components.
© Paradigm Publishing Inc Chapter 12 Programming Concepts and Languages.
Chapter Introduction to Computers and Programming 1.
Introduction to Programming Dr Masitah Ghazali Programming Techniques I SCJ1013.
Chapter 4 Computer Software.
A Free sample background from © 2001 By Default!Slide 1.NET Overview BY: Pinkesh Desai.
Section 8.2. Classification of Software
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 18 Slide 1 Software Reuse.
Software Engineering Muhammad Fahad Khan
Software Reuse Prof. Ian Sommerville
Software – Applications software and programming languages
COMPUTER SOFTWARE Section 2 “System Software: Computer System Management ” CHAPTER 4 Lecture-6/ T. Nouf Almujally 1.
Slide 8.1 © The McGraw-Hill Companies, 2007 Object-Oriented and Classical Software Engineering Seventh Edition, WCB/McGraw-Hill, 2007 Stephen R. Schach.
INTRODUCTION SOFTWARE HARDWARE DIFFERENCE BETWEEN THE S/W AND H/W.
Visual C++ Programming: Concepts and Projects
Software – Applications software and programming languages.
What is computer hardware? Computer hardware are the physical components of the computer.
Mrs. Ulshafer August, 2013 Java Programming Chapter 1.
CE Operating Systems Lecture 3 Overview of OS functions and structure.
School of Computer Science & Information Technology G6DICP Introduction to Computer Programming Milena Radenkovic.
Frameworks CompSci 230 S Software Construction.
©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.
 Programming - the process of creating computer programs.
Chapter 1 Basic Concepts of Operating Systems Introduction Software A program is a sequence of instructions that enables the computer to carry.
Text TCS INTERNAL Oracle PL/SQL – Introduction. TCS INTERNAL PL SQL Introduction PLSQL means Procedural Language extension of SQL. PLSQL is a database.
What is a Computer An electronic, digital device that stores and processes information. A machine that accepts input, processes it according to specified.
Introduction to Computing Lecture 9,10 Software
Programming 2 Intro to Java Machine code Assembly languages Fortran Basic Pascal Scheme CC++ Java LISP Smalltalk Smalltalk-80.
Introduction to computer programming
1 Chapter 2: Operating-System Structures Services Interface provided to users & programmers –System calls (programmer access) –User level access to system.
A Method for Improving Code Reuse System Prasanthi.S.
Software Reuse. Objectives l To explain the benefits of software reuse and some reuse problems l To discuss several different ways to implement software.
OPERATING SYSTEM CONCEPTS AND PRACTISE
IS301 – Software Engineering V:
Introduction to Visual Basic 2008 Programming
CS490 Windows Internals Quiz 2 09/27/2013.
Design and Implementation
Computer Technology Notes #3
Chapter 16 – Software Reuse
Computer Science I CSC 135.
Chapter 6 System and Application Software
Portability CPSC 315 – Programming Studio
Chapter 2: System Structures
National Diploma in Computer Studies
Chapter 7 –Implementation Issues
Chapter 16 – Software Reuse
Chapter 6 System and Application Software
Chapter 6 System and Application Software
Chapter-1 Computer is an advanced electronic device that takes raw data as an input from the user and processes it under the control of a set of instructions.
Chapter 6 System and Application Software
Presentation transcript:

Reusability and Portability Chapter 8 CSCI 4320

Reusability and Portability  The length of the development process is critical.  No matter how high the quality of a software product, it will not sell if it takes 2 years to get it onto the market when a competitive product can be delivered in only one year.

Reusability and Portability  Reuse Using the components of one product to develop a different product.  Portable Easily modifying a product as a whole to run it on another hardware/ system configuration rather than to recode it from scratch.

Examples of Reuse  Musicians “sampling” other well-known music  Using existing C++ or Java libraries to find square root of a number C++ Standard Template Library (STL) Java Application Programming Interface (API)

Reuse Concepts  Opportunistic Reuse (accidental reuse) Developers of new product realize that a previously developed product component can be reused in new product  Systematic Reuse (deliberate reuse) Software constructed specifically for possible future reuse More likely to be easy and safe to reuse Generally well documented and thoroughly tested Initial overhead is expensive – it takes time to thoroughly test

What can be reused?  [Jones, 1984] only 15% of any software is original.  The other 85% in theory could be standardized and reused in future products.

Why Not Reuse?  Many software professionals would rather rewrite a routine from scratch that reuse a routine written by someone else.  Believe routine may introduce faults – it may not be fully tested  A large organization may have hundreds of thousands of routines. How do you store these to be easily retrieved? How do you know which one to reuse?

Why not Reuse  Legal issues A product may be developed for a particular client. Reusing a component for a different client may constitute a copyright violation.  If commercial off-the-shelf (COTS) components are used, source code may not be known. Limited modifiability.

Testing is still needed…  Software developed in one context must be retested when used in another context.  The software module does not have to be retested by itself; it must be retested after it has been integrated into the product.  Case Study: European Space Agency launched and Ariane 5 rocket with components from Ariane 4 rocket. The rocket crashed about 37 seconds after lift off. Assumptions true for the Ariane 4 rocket were not true for the Ariane 5 rocket.

Reuse during Design and Implementation  Use a class (Customer) from an earlier design Good if organization develops software in one specific application domain, banking, air traffic control systems  Reusing graphical user interface  Application Framework – incorporates the control logic of a design Microsoft Foundation Class Library (MFC) allow you to build GUIs in Windows-based applications.  Moving/resizing windows, handling events: mouse clicks or menu selection  Domain components  Use case templates

Reuse and Postdelivery Maintenance  The major impact of reuse is on postdelivery maintenance rather than development Reused components are generally  well designed,  thoroughly tested,  comprehensively documented thereby simplifying postdelivery maintenance

Portability  Reasons to make software portable Commercial off-the shelf software  Recoup development costs with new clients that have different hardware/ system configurations Every 4 years or so, when the client organization purchases new hardware all of its software must be converted to run on the new hardware. A product is considered portable if its significantly less expensive to adapt the product to run on new computer than to develop it from scratch.

Portability –Potential Incompatibilities  Hardware Current product backs up data on a DAT tape, new computer system uses Zip drive for backup Different coding schemes ASCII, EBCDIC, UnicodeASCIIEBCDICUnicode  Operating Systems (Windows, Mac)  Data types Depending on the language, when a data type is complied the memory size allocated may differ.  Depending on the machine, a Pascal integer may be represented as 16- bits or 32 bits Java solves this problem with 8 primitive data types that are always the same memory size.  Compilers Some programming languages do not have compilers for all hardware (CLU)CLU

Techniques for Achieving Portability  Isolate implementation-dependent pieces The original UNIX operating system consisted of 10,000 lines of code  2000 lines - rewritten for each implementation Kernel: 1000 lines of code written in assembler Device Drivers: 1000 lines of code written in C  The remaining 8000 lines of code written in C remained largely unchanged  Use levels of abstraction High-level code artifacts reference abstract drawLine() Low-level code – written for the different types of hardware

Techniques for Achieving Portability  Write product in high-level language (not assembler)  Provide installation manual and lists of changes to be made  Provide routines to convert database into an unstructured sequential file (example: excel file converted into a text file)

Summary  Why Reusability? Shorter development time Lower development cost Higher quality software Shorter maintenance time Lower maintenance cost  Why Portability? The life of a software product is generally longer than the life of the hardware for which it was first written.