Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology.

Slides:



Advertisements
Similar presentations
Software Reuse SEII-Lecture 28
Advertisements

JDBC Session 4 Tonight: Design Patterns 1.Introduction To Design Patterns 2.The Factory Pattern 3.The Facade Pattern Thursday & Next Tuesday: Data Access.
Design Patterns Introduction What is a Design Pattern? Why were they developed? Why should we use them? How important are they?
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology.
© Lethbridge/Laganière 2001 Chapter 9: Architecting and designing software1 Layers Data from IBM-Rational and Craig Larman…
Software Reuse Building software from reusable components Objectives
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Chapter 1 Software Development. Copyright © 2005 Pearson Addison-Wesley. All rights reserved. 1-2 Chapter Objectives Discuss the goals of software development.
Notion of a Project Notes from OOSE Slides - modified.
CS350/550 Software Engineering Lecture 1. Class Work The main part of the class is a practical software engineering project, in teams of 3-5 people There.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Soft. Eng. II, Spring 02Dr Driss Kettani, from I. Sommerville1 CSC-3325: Chapter 6 Title : The Software Reuse Reading: I. Sommerville, Chap. 20.
Building software from reusable components.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse 2.
©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.
1 Software Process Lecture Outline Nature of software projects Engineering approaches Software process A process step Characteristics of a good.
Taken from Chapter 3 of Object-Oriented Software Engineering: Practical Software Development using UML and Java by T. Lethbridge and R. Laganiere Basing.
Internet Software Development Lecture 14: Basing Software Development on Reusable Technology From: Object-Oriented Software Engineering, by Lethbridge.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
INFO 637Lecture #61 Software Engineering Process II Designing with Teams INFO 637 Glenn Booker.
SWE 316: Software Design and Architecture – Dr. Khalid Aljasser Objectives Lecture 11 : Frameworks SWE 316: Software Design and Architecture  To understand.
PROJECT MILESTONES Group Presentations: ~ 5 mins presentations.
©Ian Sommerville 2000 Software Engineering, 6th edition. Slide 1 Component-based development l Building software from reusable components l Objectives.
SOFTWARE REUSE 28 March 2013 William W. McMillan.
© S. Demeyer, S. Ducasse, O. Nierstrasz Intro.1 1. Introduction Goals Why Reengineering ?  Lehman's Laws  Object-Oriented Legacy Typical Problems  common.
 CS 5380 Software Engineering Chapter 2 – Software Processes Chapter 2 Software Processes1.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
CSC 395 – Software Engineering Lecture 12: Reusability –or– Programming was Bjarne Again.
CSC 211 Introduction to Design Patterns. Intro to the course Syllabus About the textbook – Read the introduction and Chapter 1 Good attendance is the.
Design Patterns in Java Chapter 1 Introduction Summary prepared by Kirk Scott 1.
Software Engineering EKT 420 MOHAMED ELSHAIKH KKF 8A – room 4.
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
The Systems Development Life Cycle
Design Patterns Introduction What is a Design Pattern? Why were they developed? Why should we use them? How important are they?
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology 1.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology.
Software Engineering, Lecture 4 Mohamed Elshaikh.
Software Design Patterns (1) Introduction. patterns do … & do not … Patterns do... provide common vocabulary provide “shorthand” for effectively communicating.
Object-Oriented Software Engineering Practical Software Development using UML and C++ / Java Chapter 3: Basing Software Development on Reusable Technology.
Basic Concepts of Component- Based Software Development (CBSD) Model-Based Programming and Verification.
Introduction to Design Patterns Part 1. © Lethbridge/Laganière 2001 Chapter 6: Using design patterns2 Patterns - Architectural Architectural Patterns:
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
Advanced Object-Oriented Design Patterns and Architectures Part One COEN396A John Xiao
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology.
CSCE 240 – Intro to Software Engineering Lecture 2.
 Many models have been proposed to deal with the problems of defining activities and associating them with each other  The first model proposed was the.
Object-Oriented Software Engineering Chapter 1 Software and Software Engineering.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
1. USER & CUSTOMER 2.BASING DEVELOPMENT ON SOLID PRINCIPALS AND REUSABLE TECH.
Legacy Systems and Software Reuse CS 560. Economics Software is expensive.  Most software development makes extensive use of existing software.  Developers.
Subtopics: 1. Frameworks :Reusable systems 2. Design Patterns 1.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology.
A Method for Improving Code Reuse System Prasanthi.S.
CMPE 135: Object-Oriented Analysis and Design October 24 Class Meeting
CS 641 – Requirements Engineering
CS 641 – Requirements Engineering
Software Reuse Objectives
Introduction to Design Patterns Part 1
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
CMPE 135 Object-Oriented Analysis and Design March 21 Class Meeting
Chapter 1: Software and Software Engineering
Presentation transcript:

Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology

© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology Building on the Experience of Others Software engineers should avoid re-developing software already developed Desirable to make designs reusable and document these efforts so that the artifact is flexible to be used in a variety of situations. Here are some examples:

© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 3 Examples of Reuse Types of reuse: Reuse of expertise —There is never NEVER any substitute for experience. —Can’t get it from books; only from experience. —Lessons learned are invaluable and are quite reusable. Reuse of standard designs and algorithms —Numerous designs that can be reused -Architectural patterns -Design patterns -Reusable specifications even. Reuse of libraries of classes or procedures —Huge libraries of reusable subroutines, subprograms, data structures, classes, powerful commands, and much more.

© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 4 Examples of Reuse Types of reuse: Reuse of complete applications Examples: —Rseusing a Military Pay application for a similar application, Civilian Pay. —Often complete applications can be reused and enhanced in needed parts. —Done all the time! No sense in reinventing the wheel. Prime example is COTS software – Commercial off-the-shelf. But be careful here. —The additional code needed may obviate the gain from using COTS software. —Liabilities must be very carefully developed too. —Really, an entire separate subject – and deservedly so.

© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 5 Examples of Reuse Types of reuse: Reuse of frameworks – and this is what we are after here. Frameworks represent an entire structure of an application – with some facilities present for reuse and others that must be added to make the framework usable. Some are quite detailed and only a few key missing parts may need to be added. Others require wholesale importing of parts – key parts to make the framework useful. Different kinds of frameworks too.

© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology Reusability and Reuse in SE Reuse and design for reusability should be part of the culture of software development organizations But there are problems to overcome: Many organizations do not practice reuse More comfortable starting from scratch, or Non-availability of reusable components. Interestingly, many are willing to use existing reusable components! Often, deadlines do not permit the additional time needed to produce quality, reusable components!

© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 7 Reuse and design for reusability should be part of the culture of software development organizations There are serious management and technical problems to overcome: Why take the extra time needed to develop something that will benefit other projects/customers? Management may only reward the efforts of people who create the visible ‘final products’. Reusable software is often created in a hurry and without enough attention to quality. There is absolutely more care needed to create reusable components – testing and verification before being placed into a library for common use…

© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 8 A vicious cycle Developers thus tend not develop high quality reusable components, and so there is often little to reuse To solve the problem, recognize that: This vicious cycle costs money Investment in reusable code is important – but few want to do it now! Attention to quality of reusable components is essential —So that potential reusers have confidence in them —The quality of a software product is only as good as its lowest-quality reusable component Developing reusable components can often simplify design

© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology Frameworks: Reusable Subsystems A framework is reusable software that implements a generic solution to a generalized problem. It provides common facilities applicable to different application programs. Principle: Applications that do different, but related, things tend to have quite similar designs

© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 10 Frameworks to promote reuse A framework is intrinsically incomplete Certain classes or methods are used by the framework, but are missing (slots) —These MUST be completed in order to use the framework. —Missing pieces are called slots. —The more slots that need to be filled, the more complex the framework becomes -On the other hand, if a large number of slots need to be filled, then the framework tends to be more flexible to needs and hence reusable.

© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 11 Frameworks to promote reuse A framework is intrinsically incomplete Some functionality is optional — Allowance is made for developer to provide it (hooks) Developers use the services that the framework provides —Taken together the services are called the Application Program Interface (API) Users of frameworks are really reusing the design and code the original designers of the framework envisioned.

© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 12 Object-oriented frameworks In the object oriented paradigm, a framework is composed of a library of classes. We are all familiar with these… The API is defined by the set of all public methods of these classes. Some of the classes will normally be abstract

© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 13 Examples of frameworks A framework for payroll management A framework for frequent buyer clubs A framework for university registration A framework for e-commerce web sites In a given framework, there will be required an amount of work to make it usable – and this amount can vary as discussed. But the common thread is that a good deal of all frameworks, say the one for payroll management, do provide code for many common functions across the spectrum of payroll management systems. This is precisely what we are trying to exploit.

© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 14 Types of frameworks A horizontal framework provides general application facilities that a large number of applications can use Application Horizontal framework Code to be provided to adapt the framework to the needs of the application Services offered by the framework

© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 15 Types of frameworks A vertical framework (application framework) is more ‘complete’ but still needs some slots to be filled to adapt it to specific application needs Vertical frameworks are much more specific in applicability. Generally fewer slots and hooks Extreme example of a horizontal framework: an interface in Java – has no implementation and ALL slots must be filled. Most developers will only use a subset of the facilities available in the framework. Application Vertical framework Code to be provided to adapt the framework to the needs of the application Services offered by the framework

© Lethbridge/Laganière 2001 Chap. 3: Basing Development on Reusable Technology 16 All this is best shown by example.