Informatics 122 Software Design II Lecture 9 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.

Slides:



Advertisements
Similar presentations
UNESCO ICTLIP Module 2. Lesson 31 Introduction to Integrated Library Systems Lesson 3. How Do You Evaluate Integrated Library Systems?
Advertisements

Object-Oriented Software Development CS 3331 Fall 2009.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 121 Software Design I Lecture 11.
Architectural Mismatch: Why Reuse Is So Hard David Garlan, Robert Allen, and John Ockerbloom Presented by Hoang Bao CSC 509 – Winter 2005.
Software Engineering Institute Carnegie Mellon University Pittsburgh, PA Sponsored by the U.S. Department of Defense © 1998 by Carnegie Mellon.
Unified theory of software evolution Reengineering – Business process reengineering and software reengineering BPR model – Business definition, process.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 43 Introduction to Software Engineering.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 121 Software Design I Lecture 7 Duplication.
(c) 2010 University of California, Irvine – André van der Hoek1February 21, 2010 – 18:05:18 Informatics 122 Software Design II Lecture 9 Nick Lopez Duplication.
July 11 th, 2005 Software Engineering with Reusable Components RiSE’s Seminars Sametinger’s book :: Chapters 16, 17 and 18 Fred Durão.
1 IBM SanFrancisco Product Evaluation Negotiated Option Presentation By Les Beckford May 2001.
(c) 2010 University of California, Irvine – André van der Hoek1February 21, 2010 – 18:05:18 Informatics 122 Software Design II Lecture 10 Nick Lopez Duplication.
© 2010 University of California, Irvine – André van der Hoek1June 22, 2015 – 23:08:13 Informatics 122 Software Design II Lecture 4 Nick Lopez Duplication.
(c) 2009 University of California, Irvine – André van der Hoek1February 21, 2009 – 18:05:18 Informatics 122 Software Design II Lecture 10 André van der.
(c) 2010 University of California, Irvine – André van der Hoek1February 21, 2010 – 18:05:18 Informatics 122 Software Design II Lecture 9 André van der.
Reusability and Portability Chapter 8 CSCI Reusability and Portability  The length of the development process is critical.  No matter how high.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Acquiring Information Systems and Applications
 1. Introduction  2. Development Life-Cycle  3. Current Component Technologies  4. Component Quality Assurance  5. Advantages and Disadvantages.
©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 2006Software Engineering, 8th edition. Chapter 18 Slide 1 Software Reuse.
Software Engineering Muhammad Fahad Khan
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Software Reuse Course: # The Johns-Hopkins University Montgomery County Campus Fall 2004 Session 6 Lecture # 5 – October 12, 2004.
Joel Bapaga on Web Design Strategies Technologies Commercial Value.
Introduction to RUP Spring Sharif Univ. of Tech.2 Outlines What is RUP? RUP Phases –Inception –Elaboration –Construction –Transition.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 121 Software Design I Lecture 12.
CS 360 Lecture 3.  The software process is a structured set of activities required to develop a software system.  Fundamental Assumption:  Good software.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
SAMANVITHA RAMAYANAM 18 TH FEBRUARY 2010 CPE 691 LAYERED APPLICATION.
+ Informatics 122 Software Design II Lecture 12 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
+ Informatics 122 Software Design II Lecture 14 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 05. Review Software design methods Design Paradigms Typical Design Trade-offs.
Frameworks CompSci 230 S Software Construction.
ECE450 - Software Engineering II1 ECE450 – Software Engineering II Today: Introduction to Software Architecture.
Design and Implementation of a Rationale-Based Analysis Tool (RAT) Diploma thesis from Timo Wolf Design and Realization of a Tool for Linking Source Code.
CASE (Computer-Aided Software Engineering) Tools Software that is used to support software process activities. Provides software process support by:- –
CS 1120: Computer Science II Software Life Cycle Slides courtesy of: Prof. Ajay Gupta and Prof. James Yang (format and other minor modifications by by.
Informatics 122 Software Design II Lecture 12 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
Software Reuse Course: # The Johns-Hopkins University Montgomery County Campus Fall 2004 Session 5 Lecture # 4 – October 5, 2004.
Software Reuse Course: # The Johns-Hopkins University Montgomery County Campus Fall 2000 Session 4 Lecture # 3 - September 28, 2004.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 15. Review Interaction-Oriented Software Architectures – MVC.
Software Development Process CS 360 Lecture 3. Software Process The software process is a structured set of activities required to develop a software.
IT323 - Software Engineering 2 1 Tutorial 4.  List the main benefits of software reuse 2.
Department of Informatics, UC Irvine SDCL Collaboration Laboratory Software Design and sdcl.ics.uci.edu 1 Informatics 121 Software Design I Lecture 6 Duplication.
+ Informatics 122 Software Design II Lecture 13 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission.
Legacy Systems and Software Reuse CS 560. Economics Software is expensive.  Most software development makes extensive use of existing software.  Developers.
©Ian Sommerville 2007COTS-based System Engineering Slide 1 COTS-based System Engineering.
Software Reuse. Objectives l To explain the benefits of software reuse and some reuse problems l To discuss several different ways to implement software.
IS301 – Software Engineering V:
Informatics 121 Software Design I
Chapter 17 - Component-based software engineering
Complexity Time: 2 Hours.
Physical Architecture Layer Design
Informatics 122 Software Design II
Informatics 122 Software Design II
CS 1120: Computer Science II Software Life Cycle
Informatics 121 Software Design I
Chapter 7 –Implementation Issues
Chapter 17 - Component-based software engineering
CS 1120: Computer Science II Software Life Cycle
Informatics 121 Software Design I
Informatics 121 Software Design I
Informatics 122 Software Design II
Informatics 121 Software Design I
Presentation transcript:

Informatics 122 Software Design II Lecture 9 Emily Navarro Duplication of course material for any commercial purpose without the explicit written permission of the professor is prohibited. 1

Today’s Lecture Component reuse Assignment 5

Component Reuse – Avoiding “Reinventing the Wheel” Component reuse is using an already-developed piece of software (usually from a third-party) to provide some type of functionality to your system rather than developing the functionality yourself from scratch A true software component is one that has been specifically designed to be reusable e.g., library, API

A Critical Design Tradeoff build (and thus design) buy or get for free (and thus fit into a design)

A Critical Design Tradeoff: Benefits build (and thus design) buy or get for free (and thus fit into a design) full control full understanding flexibility competitive advantage can be instantaneous external support quality standardization

A Critical Design Tradeoff: Drawbacks build (and thus design) buy or get for free (and thus fit into a design) time cost maintenance licensing lack of customizability obsolescence urgent bugs evaluation cost

A Critical Design Tradeoff build (and thus design) buy or get for free (and thus fit into a design) time cost maintenance licensing lack of customizability obsolescence urgent bugs evaluation cost full control full understanding flexibility competitive advantage can be instantaneous external support quality standardization

Our Focus Today 8 build (and thus design) buy or get for free (and thus fit into a design) time cost maintenance licensing lack of customizability obsolescence urgent bugs evaluation cost full control full understanding flexibility competitive advantage can be instantaneous external support quality

You Practice Software Reuse All The Time! 9

Different Levels of Reuse Granularity Lines of code Functions/methods/procedures Classes (inheritance), interfaces/templates Modules/Components Packages Frameworks Subsystems Entire programs

A New Kind of Design Decision Less fine control More learning and using and applying Similar to recovery

Architectural Mismatch Architectural mismatch stems from mismatched assumptions a reusable component makes about the system structure of which it is to be part System topology Construction dependencies initialization Non-functional qualities e.g., scalability Components functionality interfaces behavior control model Connectors protocols data model Difficult to predict a-priori

Architectural Mismatch Architectural mismatch stems from mismatched assumptions a reusable component makes about the system structure of which it is to be part System topology Construction dependencies initialization Non-functional qualities e.g., scalability Components functionality interfaces behavior control model Connectors protocols data model How much adaptation is too much adaptation?

Architectural Mismatch can Break your System! In 1996, the first test flight of the Ariane 5 rocket ended in disaster when the launcher went out of control 37 seconds after take off. The problem was due to a reused component from a previous version of the launcher (the Inertial Navigation System) that failed because assumptions made when that component was developed did not hold for Ariane 5. The functionality that failed in this component was not required in Ariane 5.

Component Reuse Process identify preliminary architecture identify potential places for reuse establish selection criteria (per place) search for applicable components evaluate components select component update architecture

Identify Preliminary Architecture Largely as usual Familiarity with certain reusable components may influence the architectural choices being made

Identify Potential Places for Reuse There are components for just about anything graph layout database access regular expression handling numerical computing protein visualization speech recognition handling index and search maps geocoding … Judiciously mark the architecture in terms of where reusable components may fit in

Establish Selection Criteria (Per Place) What kind of component does the architecture really need? functionality absolutely necessary versus desired functionality software qualities How is the component to fit with the rest of the architecture? some adaptation can be accommodated Investment cost future cost Reputation component provider component itself Platform, deployment needs, licensing terms, documentation, help available, user base, usability, security, speed, space, stability, portability, scalability…

Search for Applicable Component Google is a wonderful thing code.google.com Component repositories rich in available components many junk some decent occasional gems Research and professional development literature Too many is no good Too few is no good either although one perfect component would solve the problem

sourceforge.net 20

apache.org 21

stackoverflow.com 22

Evaluate Components Apply selection criteria to each of the components found matrix of criteria versus component Criteria 1Criteria 2Criteria 3Criteria 4Criteria 5 Component A Component B Component C Component D Component E

Evaluate Components Additional approaches trial/evaluation licenses reading component code examine sample programs using the component writing code using the component Examine the component’s documentation Analyze architectural impact of the component Perhaps even “mini integrate” the component

Select Component Choose the optimum component understand tradeoffs be prepared to not choose a component

Update Architecture Design any adapters necessary to fit the component Redesign other components as needed Restructure architecture as needed Consider implementers special role for documentation

A Quick Sample Among the Graduate Students Xalan Xerces Lucene Jung Kaffe Bcel Equip Jloox Schematron GraphViz Jython Jgraph Scriptalicious Xacml SWT JOAL Jetty Batik JmDNS Darwin Streaming Server Spook Mplayer MySQL live.com RTP/RTSP gaim im client …

Assignment 5