Software Engineering Reuse.

Slides:



Advertisements
Similar presentations
Chapter 14 Design with Reuse.
Advertisements

Software Reuse and Component-Based Software Engineering
Chapter 16 – Software Reuse
The software process A software process is a set of activities and associated results which lead to the production of a software product. This may involve.
Software Processes Coherent sets of activities for specifying, designing, implementing and testing software systems.
Software Reuse SEII-Lecture 28
Unified theory of software evolution Reengineering – Business process reengineering and software reengineering BPR model – Business definition, process.
Software Engineering 6/e, Chapter 8
Software Reuse Building software from reusable components Objectives
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 1 Software Prototyping l Rapid software development.
Managing Reuse Presented by: Aisha Al-Hammadi. Outline Introduction History. The technical and managerial advantages of Reusing Solutions. The main challenges.
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.
Reuse Activities Selecting Design Patterns and Components
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 4 Slide 1 Software Processes.
Reuse Basic concepts. Rationale for reuse  Save calendar time  Save person hours  Reduce process risk  Increased quality  Standards compliance.
Chapter 3 Software Processes.
©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.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 1 Software Prototyping l Rapid software development to validate requirements l.
Chapter : Software Process
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 1 Software Prototyping l Rapid software development to validate requirements.
Chapter 16 – Software Reuse
©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.
Software Reuse Course: # The Johns-Hopkins University Montgomery County Campus Fall 2004 Session 6 Lecture # 5 – October 12, 2004.
Design Patterns.
Figures – Chapter 16. Figure 16.1 Benefits of software reuse BenefitExplanation Increased dependabilityReused software, which has been tried and tested.
Software Product Families. Generative Programming Main text: Ian Sommerville, Software Engineering, 8 th edition, chapter 18 Additional readings: K. Czarnecki.
Engr. M. Fahad Khan Lecturer Software Engineering Department University Of Engineering & Technology Taxila.
-Nikhil Bhatia 28 th October What is RUP? Central Elements of RUP Project Lifecycle Phases Six Engineering Disciplines Three Supporting Disciplines.
©Ian Sommerville 2000 Software Engineering, 6th edition. Slide 1 Component-based development l Building software from reusable components l Objectives.
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 3 Slide 1 Software Processes l Coherent sets of activities for specifying, designing,
Chapter 11: Software Prototyping Omar Meqdadi SE 273 Lecture 11 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 8 Slide 1 Software Prototyping l Rapid software development to validate requirements.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
소프트웨어공학 강좌 1 Chap 7. Software Prototyping - Rapid software development to validate requirements -
©Ian Sommerville 2000 Software Engineering. Chapter 18Slide 1 Chapters 18/19 Software Reuse / CBSE.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 14Slide 1 Chapter 14 Design with Reuse.
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 18 Slide 1 Software Reuse.
Software Reuse 1 Dr. Eman Alkhammash Taif University.
Software Prototyping Rapid software development to validate requirements.
Chapter 2 – Software Processes Lecture 1 Chapter 2 Software Processes1.
Software Reuse Course: # The Johns-Hopkins University Montgomery County Campus Fall 2004 Session 5 Lecture # 4 – October 5, 2004.
Chapter 15 – Software Reuse Chapter 15 Software reuse117/11/2014.
©Ian Sommerville 2000, Tom Dietterich 2001 Slide 1 System prototyping l Prototyping is the rapid development of a system l In the past, the developed system.
1 Here are some quotations to get an overview of the kinds of issues of interest.
IT323 - Software Engineering 2 1 Tutorial 4.  List the main benefits of software reuse 2.
Chapter 10 Software quality. This chapter discusses n Some important properties we want our system to have, specifically correctness and maintainability.
©Ian Sommerville 2007COTS-based System Engineering Slide 1 COTS-based System Engineering.
Tempus Software Maintenance and Evolution JMSE-SM&E Unit 4: Software Reuse (Building Software From Reusable Components) Prof. Mohammad A. Mikki Gaza, Palestine,
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.
Chapter 16 – Software Reuse
Prototyping in the software process
Software Prototyping.
IS301 – Software Engineering V:
Software Reuse ©Ian Sommerville 2006.
Chapter 16 – Software Reuse
Chapter 16 – Software Reuse
Software Reuse Objectives
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Chapter 7 –Implementation Issues
Chapter 16 – Software Reuse
Presentation transcript:

Software Engineering Reuse

Francis Mohamed Safi Bolis Supervised By : Mona

Objective After Finishing This Slides you should know the following : What is Reuse Type of the software reuse The benefits of software reuse and some reuse problems The reuse landscape

Definition of Reuse reusability is the use of existing assets in some form within the software product development process. More than just code, assets are products and by-products of the software development life cycle and include software components, test suites, designs and documentation.

What is Reuse In most engineering disciplines, systems are designed by composing existing components that have been used in other systems. Software engineering has been more focused on original development but it is now recognised that to achieve better software, more quickly and at lower cost, we need to adopt a design process that is based on systematic software reuse.

Type Of Software Reuse Application System Reuse Component Reuse reusing an entire application by incorporation of one application inside another (COTS reuse) development of application families (e.g. MS Office) Component Reuse components (e.g. subsystems or single objects) of one application reused in another application Function Reuse reusing software components that implement a single well-defined function

Software Reuse benefits Increased dependability The initial use of the software reveals any design and implementation faults. These are then fixed, thus reducing the number of failures when the software is reused

Software Reuse benefits (Con.) Reduced process risk - it reduces the margin of error in project cost estimation. This is particularly true when relatively large software components such as sub-systems are reused Effective use of specialists - these specialists can develop reusable software that encapsulate their knowledge.

Software Reuse benefits (Con.) Accelerated development Reusing software can speed up system production because both development and validation time should be reduced. Standards compliance -Some standards, such as user interface standards, can be implemented as a set of standard reusable components.

Reuse Problem Increased maintenance costs If the source code of a reused software system or component is not available then maintenance costs may be increased as the reused elements of the system may become increasingly incompatible with system changes

Reuse Problem(Con.) Lack of tool support CASE toolsets may not support development with reuse. It may be difficult or impossible to integrate these tools with a component library system. The software process assumed by these tools may

Reuse Problem(Con.) Not-invented-here syndrome Some software engineers sometimes prefer to re-write components as they believe that they can improve on the reusable component. This is partly to do with trust and partly to do with the fact that writing original software is seen as more challenging than reusing other people’s software

Reuse Problem(Con.) Finding, understanding and adapting reusable components - Software components have to be discovered in a library, understood and, sometimes, adapted to work in a new environment.

Reuse Problem(Con.) Creating and maintaining a component library Populating a reusable component library and ensuring the software developers can use this library can be expensive. Our current techniques for classifying, cataloguing and retrieving software components are immature.

The reuse landscape Although reuse is often simply thought of as the reuse of system components, there are many different approaches to reuse that may be used. Reuse is possible at a range of levels from simple functions to complete application systems. The reuse landscape covers the range of possible reuse techniques.

The reuse landscape

Reuse approaches Design patterns A design pattern is a way of reusing abstract knowledge about a problem and its solution. Component-based development Systems are developed by integrating components (collections of objects) that conform to component-model standard

Pattern elements Pattern elements • Name : A meaningful pattern identifier. • Problem description. • Solution description. Not a concrete design but a template for a design solution that can be instantiated in different ways. • Consequences The results and trade-offs of applying the attern.

Reuse approaches 1 Application frameworks Collections of abstract and concrete classes that can be adapted and extended to create application systems Legacy system wrapping Legacy systems (see in Last presentation 2) that can be ‘wrapped’ by defining a set of interfaces and providing access to these legacy systems through these interfaces

Reuse approaches 1 Service-oriented systems Systems are developed by linking shared services that may be externally provided.. Application product lines COTS integration Configurable vertical applications Program libraries Program generators Aspect-oriented software development