Legacy Systems and Software Reuse CS 560. Economics Software is expensive.  Most software development makes extensive use of existing software.  Developers.

Slides:



Advertisements
Similar presentations
CIS 376 Bruce R. Maxim UM-Dearborn
Advertisements

McGraw-Hill/Irwin Copyright © 2007 by The McGraw-Hill Companies, Inc. All rights reserved. Chapter 20 Systems Operations and Support.
SOFTWARE MAINTENANCE 24 March 2013 William W. McMillan.
Unified theory of software evolution Reengineering – Business process reengineering and software reengineering BPR model – Business definition, process.
Software Reuse Building software from reusable components Objectives
1 CS 501 Spring 2007 CS 501: Software Engineering Lecture 16 Object Oriented Design 2.
CS 501: Software Engineering Fall 2000 Lecture 16 System Architecture III Distributed Objects.
March 30, Exploratory Testing Testing Approaches Analytical Information-driven Intuitive Exploratory Design the tests and test concurrently Learn.
1 CS 501 Spring 2008 CS 501: Software Engineering Lecture 16 Object Oriented Design 2.
MSIS 110: Introduction to Computers; Instructor: S. Mathiyalakan1 Systems Design, Implementation, Maintenance, and Review Chapter 13.
Introduction to Databases Transparencies
Notion of a Project Notes from OOSE Slides - modified.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 3: Basing Software Development on Reusable Technology.
Irwin/McGraw-Hill Copyright © 2004 The McGraw-Hill Companies. All Rights reserved Whitten Bentley DittmanSYSTEMS ANALYSIS AND DESIGN METHODS6th Edition.
1 CS 501 Spring 2005 CS 501: Software Engineering Lecture 16 Object Oriented Design 2.
CS CS 5150 Software Engineering Lecture 16 Object Oriented Design 2.
Course Instructor: Aisha Azeem
Introduction to Databases Transparencies 1. ©Pearson Education 2009 Objectives Common uses of database systems. Meaning of the term database. Meaning.
©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.
Software Engineering Muhammad Fahad Khan
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
CS CS 5150 Software Engineering Lecture 18 Program Design 3.
WEB ENGINEERING LECTURE 4 BY Kiramat Rahman. outline  In this Lecture you will learn about:  Term “Software” and its relationship with “Hardware” 
Quality Attributes of Web Software Applications – Jeff Offutt By Julia Erdman SE 510 October 8, 2003.
An Introduction to Software Architecture
Principles of Information Systems, Sixth Edition Systems Design, Implementation, Maintenance, and Review Chapter 13.
CS CS 5150 Software Engineering Lecture 17 Object Oriented Design 3.
 CS 5380 Software Engineering Chapter 9 Software Evolution.
SWE © Solomon Seifu ELABORATION. SWE © Solomon Seifu Lesson 10 Use Case Design.
Object-Oriented Modeling Chapter 10 CSCI CSCI 1302 – Object-Oriented Modeling2 Outline The Software Development Process Discovering Relationships.
1 CS 501 Spring 2006 CS 501: Software Engineering Lecture 17 Object Oriented Design 3.
Principles of Information Systems, Sixth Edition Systems Design, Implementation, Maintenance, and Review Chapter 13.
Architectural Design Yonsei University 2 nd Semester, 2014 Sanghyun Park.
 Repository Model  Client-Server Model  Layered Model  Modular decomposition styles  Object Models  Function Oriented Pipelining  Control Styles.
CS 360 Lecture 10.  Software is expensive.  Most software development makes extensive use of existing software.  Developers avoid building new software.
Frameworks CompSci 230 S Software Construction.
Module 4: Systems Development Chapter 14: Design And Implementation.
1 CSCD 326 Data Structures I Software Design. 2 The Software Life Cycle 1. Specification 2. Design 3. Risk Analysis 4. Verification 5. Coding 6. Testing.
Chapter 6 – Architectural Design Lecture 1 1Chapter 6 Architectural design.
Principles of Information Systems, Sixth Edition 1 Systems Design, Implementation, Maintenance, and Review Chapter 13.
HNDIT23082 Lecture 06:Software Maintenance. Reasons for changes Errors in the existing system Changes in requirements Technological advances Legislation.
Herriman High Computer Programming 1A Software Development Cycle Things to Know.
Chapter 18 Object Database Management Systems. Outline Motivation for object database management Object-oriented principles Architectures for object database.
Silberschatz, Galvin and Gagne ©2011 Operating System Concepts Essentials – 8 th Edition Chapter 2: The Linux System Part 1.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
CS 5150 Software Engineering Lecture 17 Program Design 4/ Security & Privacy.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
©Ian Sommerville 2007COTS-based System Engineering Slide 1 COTS-based System Engineering.
CS 501: Software Engineering Fall 1999 Lecture 22 (a) Managing the Software Process (b) Software Reuse.
1 CS 501 Spring 2002 CS 501: Software Engineering Lecture 15 System Architecture III.
System Architecture CS 560. Project Design The requirements describe the function of a system as seen by the client. The software team must design a system.
Software Development Module Code: CST 240 Chapter 6: Software Maintenance Al Khawarizmi International College, AL AIN, U.A.E Lecturer: Karamath Ateeq.
CS 501: Software Engineering Fall 1999 Lecture 23 Design for Usability I.
Software Hardware refers to the physical devices of a computer system.
Chapter 16 – Software Reuse
The Development Process of Web Applications
Chapter 18 Maintaining Information Systems
Chapter 11 Object-Oriented Design
Popular Operating Systems
CS 501: Software Engineering
Legacy Systems and Software Reuse
Software Reuse Objectives
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Chapter 2: The Linux System Part 1
An Introduction to Software Architecture
MORE ON ARCHITECTURES The main reasons for using an architecture are maintainability and performance. We want to structure the software into reasonably.
Lecture 06:Software Maintenance
System Reengineering Restructuring or rewriting part or all of a system without changing its functionality Applicable when some (but not all) subsystems.
Introduction Software maintenance:
Presentation transcript:

Legacy Systems and Software Reuse CS 560

Economics Software is expensive.  Most software development makes extensive use of existing software.  Developers avoid building new software if it duplicates what already exists. This approach has several aspects:  Program and system design makes use of existing components.  Working with legacy code.  Design patterns that facilitate replacing or updating components in the future. 2

Software Reuse It is often good to design components that reuse existing components.  Can lead to better software at lower cost. Potential benefits of reuse:  Reduced development time and cost  Mature components provide improved reliability  Shared maintenance cost Potential disadvantages of reuse:  Difficulty in finding appropriate components  Components may be a poor fit for the application  Quality control and security may be unknown 3

Software Reuse Examples Substantial parts of systems use software supplied with  The operating system (Microsoft/Linux)  From an established software vendor (Oracle)  Or from a mature open source (Apache) System software:  Device drivers  File systems  Exception handling  Network protocols Subsystems:  Database management systems  Firewalls  Web servers 4

Software Reuse Examples Standard functions:  Mathematical methods  Format conversion  Type conversion User interface and application development:  Toolkits ( SDKs)  Class libraries (Java Swing)  Web frameworks (Ruby on Rails) 5

Evaluating software Software from well established developers is likely to be well written and tested.  Still has bugs and security issues  Likely to be much better than a new development team would write  Although, sometimes it is sensible to write code for a specific purpose rather than using general purpose software. Maintenance  When evaluating software, both commercial and open source, pay attention to maintenance.  Is the software supported by an organization that will continue maintenance over time? 6

Reuse: open source software Open source software varies enormously in quality.  Because of the processes for reporting and fixing problems, major systems such as Linux, Apache, Python, etc. tend to be very robust and free from problems.  They are often better than the commercial equivalents.  More experimental systems, such as Hadoop, have solid cores, but their lesser used features have not been subject to the rigorous quality control of the best software products.  Other open source software can be of poor quality and should not be incorporated in production systems. 7

Reuse: application packages Application package:  Supports a standard application (ex. Payroll)  Supports communication and distribution of workload (ex. Cloud architectures) Functionality can be enhanced by:  Configuration parameters (config files)  Extensibility at defined interfaces  Custom written source code 8

Design for change: Replacement of Components The software design should anticipate possible changes in the system over its life cycle. New vendor or new technology  Components are replaced because  Its supplier goes out of business,  Ceases to provide adequate support,  Increases its price, etc.  Or better software from another sources provides better functionality, support, pricing, etc. This can apply to either open source or vendor-supplied components. 9

Design for change: Replacement of Components New implementation The original implementation may be problematic  Poor performance,  Inadequate back-up and recovery,  Difficult to troubleshoot,  Unable to support growth and new features added to the system. Example:  The portal nsdl.org was originally implemented using uPortal. This did not support important extensions that were requested and proved awkward to maintain. It was reimplemented using PHP/MySQL. 10

Design for change: Replacement of Components Additions to the requirements:  When a system goes into production, it is usual to reveal both weaknesses and opportunities for extra functionality.  For example:  In a data-intensive system it is almost certain that there will be requests for extra reports and ways of analyzing the data. Requests for enhancements are often the sign of a successful system.  Clients recognize potential update possibilities. 11

Design for change: Replacement of Components Changes in the application domain  Most application domains change continually because of  Business opportunities/growth  External changes (such as new laws)  Mergers and take-overs  New groups of users  New technology  Etc. 12

Design for reuse: Class Hierarchies Example: Java  Java is a relatively straightforward language with a very rich set of class hierarchies.  Java programs derive much of their functionality from standard classes.  Learning and understanding the classes is difficult.  Experienced Java programmers can write complex systems quickly.  Inexperienced Java programmers write inelegant and buggy programs. Languages such as Java and Python steadily change their class hierarchies over time.  Commonly the changes replace special purpose functionality with more general frameworks. If you design your programs to use the class hierarchies in the style intended by the language developers, it is likely to help with long term maintenance. 13

Design for reuse: Inheritance and Abstract classes Inheritance and abstract classes  Classes can be defined in terms of other classes using inheritance.  The generalization class is called the superclass and the specialization is called the subclass. If the inheritance relationship serves only to model shared attributes and operations  And the generalized class is not intended to be implemented,  That class is called an abstract class. 14

Design for reuse: specification inheritance Liskov Substitution Principle (strict inheritance)  If an object of type S can be substituted in all the places where an object of type T is expected, then S is a subtype of T. Interpretation  The Liskov Substitution Principle means that if all classes are subtypes of their superclasses, all inheritance relationships are specification inheritance relationships.  New subclasses of T can be added without modifying the methods of T.  This leads to an extensible system. 15

Legacy Systems The Worst Case A large, complex system that was developed several decades ago:  Used either within a big company or by an unknown number of customers.  All the developers have retired or left.  No list of requirements. It is uncertain what functionality the system provides and who uses which functions.  System and program documentation incomplete and not kept up to date.  Written in out-of-date versions of programming languages using system software that is also out of date.  Numerous patches over the years that have ignored the original system architecture and program design.  Extensive code duplication and redundancy.  The source code libraries and production binaries may be incompatible. 16

Legacy requirements Plans involving the client for rebuilding the system when needed. Requirements as seen by the customers and users  Who are the users?  How do they actually use the system?  Does the system have undocumented features that are important or bugs that users rely on?  How many people use the unconventional parts of the system? Where are they flexible? Requirements as implied by the system design  If there is any system documentation, what does it say about the requirements?  Does the source code include any hints about the requirements?  Is the source code commented?  Is there code to support obsolete hardware or services? If so, does anybody still use them? 17

Legacy code Rebuilding the software An incremental software development process is often appropriate, with each increment released when completed.  Understand the original systems architecture and program design.  Establish a component architecture, with defined interfaces, even if some of the code violates the architecture and needs adapters.  Move to current versions of programming languages and systems software.  If there are any subsystems that do not have source code, carry out a development cycle to create new code that implements the requirements.  If there is duplicate code, replace with a single version.  Remove redundant code and obsolete requirements.  Clean up as you go along. 18