Managing Reuse Presented by: Aisha Al-Hammadi. Outline Introduction History. The technical and managerial advantages of Reusing Solutions. The main challenges.

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

Lecture # 2 : Process Models
Object-Oriented Software Development CS 3331 Fall 2009.
Software Process Models
Software Process Models
Chapter 2 The Software Process
PERTEMUAN - 2 SOFTWARE QUALITY. OBJECTIVES After completing this chapter, you will be able to: ■ Define software, software quality and software quality.
CSCU 411 Software Engineering Chapter 2 Introduction to Software Engineering Management.
CS540 Software Design Lecture 1 1 Lecture 1: Introduction to Software Design Anita S. Malik Adapted from Budgen (2003) Chapters 1.
Software Reuse Building software from reusable components Objectives
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Feb. 23, 2004CS WPI1 CS 509 Design of Software Systems Lecture #5 Monday, Feb. 23, 2004.
Software Process CS 414 – Software Engineering I Donald J. Bagert Rose-Hulman Institute of Technology December 17, 2002.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse 2.
Chapter : Software Process
CS 4310: Software Engineering
©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.
CPTE 209 Software Engineering Summary and Review.
S/W Project Management Software Process Models. Objectives To understand  Software process and process models, including the main characteristics of.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
Software Engineering Reuse.
Chapter 2 The process Process, Methods, and Tools
System Analysis and Design
Copyright © 2002 by The McGraw-Hill Companies, Inc. Information Technology & Management 2 nd Edition, Thompson Cats-Baril Chapter 8 I/S and Organizational.
1 Chapter 2 The Process. 2 Process  What is it?  Who does it?  Why is it important?  What are the steps?  What is the work product?  How to ensure.
1 Process Engineering A Systems Approach to Process Improvement Jeffrey L. Dutton Jacobs Sverdrup Advanced Systems Group Engineering Performance Improvement.
Chapter 2 소프트웨어공학 Software Engineering 임현승 강원대학교
©Ian Sommerville 2000, Mejia-Alvarez 2009 Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing and testing.
02/10/2015 Page 1 R. Theeuws Siemens Atea Filename: CBD_ervaring Werkgroep Component Based Developments Ervaring CBD.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 1 Slide 1 Software Processes (Chapter 3)
Topic (1)Software Engineering (601321)1 Introduction Complex and large SW. SW crises Expensive HW. Custom SW. Batch execution.
16 1 Installation  After development and testing, system must be put into operation  Important planning considerations Costs of operating both systems.
Software Engineering Principles Principles form the basis of methods, techniques, methodologies and tools Principles form the basis of methods, techniques,
© 2006 ITT Educational Services Inc. System Analysis for Software Engineers: Unit 3 Slide 1 Chapter 16 Maintaining Information Systems.
Software Engineering Spring (C) Vasudeva VarmaClass of 32 CS3600: Software Engineering: Process and Product* *Most of the Content drawn.
Methodologies. Contents Waterfall Model Evolutionary Models Incremental Development.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
1 Software Engineering Ian Sommerville th edition Instructor: Mrs. Eman ElAjrami University Of Palestine.
DESIGN PATTERNS CSC532 Adv. Topics in Software Engineering Shirin A. Lakhani.
SOFTWARE ENGINEERING MCS-2 LECTURE # 4. PROTOTYPING PROCESS MODEL  A prototype is an early sample, model or release of a product built to test a concept.
Introduction to Design Patterns Part 1. © Lethbridge/Laganière 2001 Chapter 6: Using design patterns2 Patterns - Architectural Architectural Patterns:
1 EE29B Feisal Mohammed EE29B: Introduction to Software Engineering Feisal Mohammed Ph: x3156.
Cmpe 589 Spring 2006 Lecture 2. Software Engineering Definition –A strategy for producing high quality software.
Design Patterns By Mareck Kortylevitch and Piotreck Ratchinsky.
Topic 4 - Database Design Unit 1 – Database Analysis and Design Advanced Higher Information Systems St Kentigern’s Academy.
Informatics 122 Software Design II Lecture 12 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
Introduction to Software Engineering 1. Software Engineering Failures – Complexity – Change 2. What is Software Engineering? – Using engineering approaches.
1 Chapter 2 SW Process Models. 2 Objectives  Understand various process models  Understand the pros and cons of each model  Evaluate the applicability.
LECTURE 5 Nangwonvuma M/ Byansi D. Components, interfaces and integration Infrastructure, Middleware and Platforms Techniques – Data warehouses, extending.
This has been created by QA InfoTech. Choose QA InfoTech as your Automated testing partner. Visit for more information.
A Method for Improving Code Reuse System Prasanthi.S.
Chapter 2: The Process. What is Process? Software Engineering Process is the glue that holds the technology layers together and enables rational and timely.
Advanced Software Engineering Dr. Cheng
Lecture 3 Prescriptive Process Models
Chapter 18 Maintaining Information Systems
Chapter 2 SW Process Models
Software Engineering (CSE 314)
Chapter 16 – Software Reuse
Software Project Management
Introduction to Design Patterns Part 1
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
CS310 Software Engineering Lecturer Dr.Doaa Sami
Chapter 16 – Software Reuse
Chapter 8, Design Patterns Introduction
Software Maintenance Part1 Introduction. Outlines What Is Software Maintenance Purposes of Maintenance Why We Need It Maintenance Difficilties Some Tips.
What is Software Engineering?
Information system analysis and design
Presentation transcript:

Managing Reuse Presented by: Aisha Al-Hammadi

Outline Introduction History. The technical and managerial advantages of Reusing Solutions. The main challenges that encounter Reuse. Documenting Reuse The documentation of a reusable solutions. The documentation of the system that is reusing the solution. Assigning Responsibilities The main roles involved in reuse.

Introduction History. SW development started as a craft (job) Represented only a fraction of the hardware With the price of hardware dropping & computing power increasing # of customers & the range of applications has broadened dramatically SW costs increase as applications became more complex Putting a huge economic pressure at the project manager to reduce the cost Systematic reuse of code, designs & processes became an attractive solution This reaches the point of the problem that and

The technical and managerial advantages of Reusing Solutions. Lower development effort. Lower risk. When reusing a solution or a component, many standard errors are avoided. In the case of design patterns, the resulting system is more easily extended and more resilient to typical changes. This results in less development effort & reduce the need for human resources, which can be redirected to testing the software to ensure better quality. When reusing repetitively the same design pattern or component, the typical problems that will be encountered are known & can be anticipated. The time needed to adapt the design pattern or to glue the component is also known, resulting in a more predictable development process & fewer risks. Widespread use of standard terms. The reuse of standard set of design patterns and components fosters the use of a standard vocabulary. as an example, terms such as Adapter, Bridge, Command, or Façade denote precise concepts that all developers became familiar with. This reduce the number of different terms and solutions to common problems & reduce misunderstandings among developers. Increased reliability. Reuse by itself does not increase reliability or reduce the need for testing. Components & patterns solutions that worked in one context can exhibit unexpected failures in other contexts. Culture of reuse in a SW organization can increase reliability for all of the above reasons. Reduced development time can lead to an increased testing effort. Repetitive use of component can lead to a knowledge base of typical problems to be anticipated. Use of standard terms reduces communication failures. Back

The main challenges that encounter Reuse within a development organization. NIH (Not Invented Here) syndrome Process support Training Since SW engineering education emphasizes mostly the design of new solutions, developers often distrust the reuse of existing solutions, especially when the customization of the solution under consideration is limited. Developers believe that they can develop a completely new solution that is better adapted to their specific problem in less time than what they need to understand the reused solution. The processes associated with identifying, reusing, and customizing an existing solution are different than those involved in creating a brand new solution. The 1 st set of activities requires painstakingly sifting through a large and evolving corps of knowledge and carefully evaluating the findings. The 2 nd set of activities requires creativity and a good understanding of the problem. Most SW engineering tools and methods are better adapted to creative activities than to reuse. Given the lack of knowledge support tools for reuse, training is the single most effective method in establishing a reuse culture. The burden of education developers to specific reusable solutions and components falls on the development organization.

Documenting Reuse The documentation of a reusable solutions. It includes not only a description of the solution, but also a description of: (the class of problems it addresses, the traded-offs faced by the developer, alternative implementations, and examples of use). This documentation is typically difficult to produce, as the author of the reusable solution may not be able to anticipate all the problems it can be used for. It is usually generic and abstract and must be illustrated by concrete examples for novice developers to fully understand the parameters of the solution. Documentation each time they reuse a solution is usually not ideal. How can we solve this problem?

Developers can incrementally improve this documentation by adding the following: Reference to a system using the solution. Example of use. Alternative solutions considered. Encountered trade-offs. Minimally, the documentation of the reusable solution should include references to each use. If defects are discovered in the reused solution, these defects can be systematically corrected in all occurrences of reuse. Examples are essential for developers to understand the strengths and limitation of the reused solution. Developers should include a brief summary explaining the problems being solved and the adapted solution. Selecting the wrong pattern can lead to more problems than developing a custom solution. In the documentation of the example, developers should indicate which other candidate solutions they discarded and why. Especially in the case of frameworks and components, often entails making A compromise and selecting a less than optimal solution for some criteria. example, one component may offer an interface that is extensible, and another may deliver better response time.

The documentation of the system that is reusing the solution. The documentation of the system under construction should minimally include references to all the reused solutions. For more explanations, explicitly documenting which classes use which components makes it easier to adapt the client classes to newer versions of the reused components. As an example: A contributing factor for the high cost of change late in the process is the loss of design context so we can find that developers forget quickly the reasons behind designing complicated workarounds or complex data structures during early phases of the process.

Assigning Responsibilities The main roles involved in reuse: Component expert : Pattern expert: Technical writer: Configuration manager: In addition to tracking configurations and versions of individual subsystems, the configuration manager must also be aware of the versions of the components that are used. While newer versions of the components may be used, their introduction requires tests to be repeated and changes related to the upgrade documented. The component expert is familiar with using a specific component. The component export is a developer and usually has received third-party training in the use of the component. The pattern expert is the analog of the component export for a family of design patterns. Pattern experts are usually self-made and acquire their knowledge from experience. The technical writer must be aware of reuse and document dependencies between components, design patterns, and the system. This may require the technical writer to become familiar with the solutions typically reused by the organization and with their associated terms. Individual developers assigned to subsystems will not spontaneously turn to design patterns and components unless they have experience with these topics. The success factors associated with reuse are actually not technical, but managerial. Back

Questions: What is (are) the factor(s) that increase reliability or reduce the need for testing the reusing solutions: a. Lower development effort.b. Lower risk. c. Widespread use of standard terms.d. All of the above. “…………………………….. must be aware of reuse and document dependencies between components, design patterns, and the system. a. Component expert.b. Pattern expert. c. Technical writer.d. Configuration manager. The success factors associated with reuse are: a. Technical & managerial.b. not technical neither managerial. c. Not technical, but managerial.d. none of these. Refer. Slide

Thanks for your attention