Software Reuse SEII-Lecture 28

Slides:



Advertisements
Similar presentations
Chapter 14 Design with Reuse.
Advertisements

IS301 – Software Engineering V:
Software Reuse and Component-Based Software Engineering
Chapter 16 – Software Reuse
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 12 Slide 1 Distributed Systems Design 2.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 8 Slide 1 System modeling 2.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 8 Slide 1 System models.
Software Reuse Building software from reusable components Objectives
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 5 Slide 1 Review 2.
- 1 - Component Based Development R&D SDM Theo Schouten.
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 8 Slide 1 System models.
Software evolution.
Building software from reusable components.
Reuse Activities Selecting Design Patterns and Components
Reuse Basic concepts. Rationale for reuse  Save calendar time  Save person hours  Reduce process risk  Increased quality  Standards compliance.
Course Instructor: Aisha Azeem
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 17 Slide 1 Rapid software development.
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
Chapter 9 – Software Evolution and Maintenance
©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 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
Software Reuse Main text:
©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 Engineering Reuse.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 12 Slide 1 Distributed Systems Architectures.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 19 Slide 1 Component-based software engineering 1.
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.
Software evolution. Objectives l To explain why change is inevitable if software systems are to remain useful l To discuss software maintenance and maintenance.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 7 Slide 1 System models l Abstract descriptions of systems whose requirements are being.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Chapter 10 Architectural Design.
©Ian Sommerville 2000 Software Engineering, 6th edition. Slide 1 Component-based development l Building software from reusable components l Objectives.
CS 240, Prof. Sarwar Slide 1 CS 240: Software Project Fall 2003 Sections 1 & 2 Dr. Badrul M. Sarwar San Jose State University Lecture #13.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Model-Driven Analysis Frameworks for Embedded Systems George Edwards USC Center for Systems and Software Engineering
R R R 1 Frameworks III Practical Issues. R R R 2 How to use Application Frameworks Application developed with Framework has 3 parts: –framework –concrete.
Object-Oriented Software Engineering Practical Software Development using UML and Java Chapter 1: Software and Software Engineering.
Middleware for FIs Apeego House 4B, Tardeo Rd. Mumbai Tel: Fax:
©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.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 18 Slide 1 Software Reuse.
Software Reuse 1 Dr. Eman Alkhammash Taif University.
© FPT SOFTWARE – TRAINING MATERIAL – Internal use 04e-BM/NS/HDCV/FSOFT v2/3 JSP Application Models.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
Chapter 15 – Software Reuse Chapter 15 Software reuse117/11/2014.
Lecture 21: Component-Based Software Engineering
IT323 - Software Engineering 2 1 Tutorial 4.  List the main benefits of software reuse 2.
Chapter 7 Lecture 1 Design and Implementation. Design and implementation Software design and implementation is the stage in the software engineering process.
©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,
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
IS301 – Software Engineering V:
Chapter 18 Maintaining Information Systems
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
System Reengineering Restructuring or rewriting part or all of a system without changing its functionality Applicable when some (but not all) subsystems.
Presentation transcript:

Software Reuse SEII-Lecture 28 Dr. Muzafar Khan Assistant Professor Department of Computer Science CIIT, Islamabad.

Recap Restructuring Forward engineering Economics of reengineering Code restructuring, data restructuring Forward engineering Client-server architectures, object-oriented architectures Economics of reengineering Cost benefit analysis Software reuse Benefits of reuse

Problems with Reuse Increased maintenance costs Lack of tool support If source code is not available of reused component Incapability with system changes Lack of tool support No support for development with reuse component Difficult/impossible to integrate such tools Particularly true for embedded system engineering Not-invented-here syndrome Some rewrites component to improve it Trust in themselves

Problems with Reuse Creating, maintaining, and using a component library Populating a reusable component library can be expensive Use of the library can be expensive Finding, understanding, and adapting reusable components Some components need to be discovered Understanding and adaption Developers must be confident

The Reuse Landscape Many techniques for software reuse in last 20 years Systems in same domain may be reused Different levels of reuse Architectural patterns Standard software architectures Design patterns Generic abstractions Component-based development Integration of components Component-model standards

The Reuse Landscape Application frameworks Legacy system wrapping Collection of abstract and concrete classes Legacy system wrapping Wrapped by new user interfaces Service-oriented systems Linking by shared services Software product lines Generalized architecture to be customized for different customers COTS product reuse Configuring and integrating existing application systems

The Reuse Landscape ERP systems Configurable vertical applications Large scale systems with generic business functionality and rules Configurable vertical applications Generic systems are designed Configured for specific needs Program libraries Class and function libraries Model-driven engineering Software as domain models Program generators Domain specific systems Aspect-oriented software development Shared components are woven at different places

Key Factors for Reuse Development schedule Expected software lifetime Off-the-shelf systems rather than components Expected software lifetime Long-lifetime systems, maintenance effort Background, skills, and experience of development team Reuse technologies are fairly complex Criticality of software and its non-functional requirements Dependability case for the system Application domain System platform

Application Frameworks Object-oriented paradigm for reuse Objects are too small Reimplementation is preferred A generic structure Classes, objects, and components Collaboration to provide a reuse Support for generic features Example: user interface framework Interface event handling Set of widgets to construct display Specific functionality may be added

Application Frameworks Programming language-specific Framework can incorporate other frameworks Three classes of frameworks System infrastructure frameworks User interfaces, communications, and compilers Middleware integration frameworks Set of standards and associated objects classes Support for communication and information exchange Examples: Microsoft .NET and enterprise Java Beans (EJB)

Application Frameworks Enterprise application frameworks Specific application domains Examples: telecommunication and financial systems Support development of end user applications Web application frameworks Recent type, very important Support for construction of dynamic websites Model-View-Controller pattern Security, dynamic web pages, database support, session management, user interaction

Software Product Lines One of the most effective approaches SPL is a set of applications with a common architecture and shared components Each application specialized to reflect different requirements The core system is designed to be configured Application experience is often transferable from one system to other system Reduced development time

Software Product Lines SPLs emerge from existing applications Change tends to corrupt application structure Consequently, design of a generic product line Identification of common functionalities A base application is structured to simplify reuse and reconfiguration Application frameworks and SPL have commonalities

Software Product Lines Key differences Application frameworks rely on object-oriented approach Application frameworks are focused on providing technical details rather than domain-specific support SPL are often control applications for equipment SPL are made up of a family of related applications, owned by the same organization

Software Product Lines Various types of specialization Platform specialization Environment specialization Functional specialization Process specialization Architecture of SPL reflects general, application-specific architectural style or pattern

Example: Architecture of Resource Allocation System Figure source: Software Engineering, I. Sommerville, 9th ed., p. 437

Example: Product Line Architecture of Vehicle Dispatcher System Figure source: Software Engineering, I. Sommerville, 9th ed., p. 437

Steps to extend SPL to Create a New Application Elicit stakeholders requirements Select the existing system that is closest fit to the requirements Renegotiate requirements Adapt existing system Deliver new family member Reconfiguration Design-time reconfiguration Deployment-time reconfiguration

Steps to extend SPL to Create a New Application Deployment-time reconfiguration Component selection Workflow and rule definition Parameter definition

Summary Problems with reuse The reuse landscape Key factors for reuse Increased maintenance costs; lack of tool support; not-invented-here syndrome; creating, maintaining, and using a component library The reuse landscape Application frameworks, legacy system wrapping, service-oriented systems, software product lines, COTS product reuse Key factors for reuse Development schedule, expected software lifetime, background, skills, and experience of development team, criticality of software and its non-functional requirements, application domain, system platform Application frameworks Software Product lines