©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.

Slides:



Advertisements
Similar presentations
Chapter 14 Design with Reuse.
Advertisements

IS301 – Software Engineering V:
Software Reuse and Component-Based Software Engineering
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Chapter 16 – Software Reuse
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 12Slide 1 Software Design l Objectives To explain how a software design may be represented.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 12 Slide 1 Distributed Systems Design 2.
Software Processes Coherent sets of activities for specifying, designing, implementing and testing software systems.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 32 Slide 1 Aspect-oriented Software Development.
Software Reuse SEII-Lecture 28
Chapter 7 – Object-Oriented Design
7M701 1 Software Engineering Object-oriented Design Sommerville, Ian (2001) Software Engineering, 6 th edition: Chapter 12 )
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 8 Slide 1 System models.
Software Reuse Building software from reusable components Objectives
Software Evolution Managing the processes of software system change
©Ian Sommerville 2000Software Engineering, 6/e, Chapter 71 System models l Abstract descriptions of systems whose requirements are being analysed.
©Ian Sommerville 2000 Software Engineering, 6th edition Slide 1 Software Processes l Coherent sets of activities for specifying, designing, implementing.
Modified from Sommerville’s originalsSoftware Engineering, 7th edition. Chapter 8 Slide 1 System models.
Building software from reusable components.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 27 Slide 1 Quality Management 1.
Course Instructor: Aisha Azeem
Architectural Design Establishing the overall structure of a software system Objectives To introduce architectural design and to discuss its importance.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 11 Slide 1 Architectural Design.
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.
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 2000 Software Engineering, 6th edition. Chapter 14Slide 1 Design with Reuse l Building software from reusable components.
1 Configuration Management and Designing for Reuse Chapters 29 and 14.
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.
©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. Chapter 2Slide 1 Chapter 2 Computer-Based System Engineering As modified by Randy Smith.
©Ian Sommerville 2000 Software Engineering, 6th edition. Slide 1 Component-based development l Building software from reusable components l Objectives.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 3 Slide 1 Software Processes l Coherent sets of activities for specifying, designing,
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 10Slide 1 Architectural Design l Establishing the overall structure of a software system.
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 1995/2000 (Modified by Spiros Mancoridis 1999) Software Engineering, 6th edition. Chapter 7 Slide 1 System models l Abstract descriptions.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 32 Slide 1 Aspect-oriented Software Development 1.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 26 Slide 1 Software cost estimation 2.
©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.
Chapter 6 – Architectural Design Lecture 1 1Chapter 6 Architectural design.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
©Ian Sommerville 2006Software Engineering, 8th edition. Chapter 4 Slide 1 Software Processes.
Chapter 15 – Software Reuse Chapter 15 Software reuse117/11/2014.
IT323 - Software Engineering 2 1 Tutorial 4.  List the main benefits of software reuse 2.
©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:
Software Reuse ©Ian Sommerville 2006.
Chapter 16 – Software Reuse
Chapter 16 – Software Reuse
CSSSPEC6 SOFTWARE DEVELOPMENT WITH QUALITY ASSURANCE
Chapter 16 – Software Reuse
Presentation transcript:

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 2 Objectives l To explain the benefits of software reuse and some reuse problems l To discuss several different ways to implement software reuse l To explain how reusable concepts can be represented as patterns or embedded in program generators l To discuss COTS reuse l To describe the development of software product lines

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 3 Topics covered l The reuse landscape l Design patterns l Generator based reuse l Application frameworks l Application system reuse

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 4 Software reuse l In most engineering disciplines, systems are designed by composing existing components that have been used in other systems. l 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.

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 5 Reuse-based software engineering l Application system reuse The whole of an application system may be reused either by incorporating it without change into other systems (COTS reuse) or by developing application families. l Component reuse Components of an application from sub-systems to single objects may be reused. Covered in Chapter 19. l Object and function reuse Software components that implement a single well- defined object or function may be reused.

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 6 Reuse benefits 1

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 7 Reuse benefits 2

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 8 Reuse problems 1

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 9 Reuse problems 2

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 10 The reuse landscape l Although reuse is often simply thought of as the reuse of system components, there are many different approaches to reuse that may be used. l Reuse is possible at a range of levels from simple functions to complete application systems. l The reuse landscape covers the range of possible reuse techniques.

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 11 The reuse landscape

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 12 Reuse approaches 1

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 13 Reuse approaches 2

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 14 Reuse planning factors l The development schedule for the software. l The expected software lifetime. l The background, skills and experience of the development team. l The criticality of the software and its non- functional requirements. l The application domain. l The execution platform for the software.

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 15 Concept reuse l When you reuse program or design components, you have to follow the design decisions made by the original developer of the component. l This may limit the opportunities for reuse. l However, a more abstract form of reuse is concept reuse when a particular approach is described in an implementation independent way and an implementation is then developed. l The two main approaches to concept reuse are: Design patterns; Generative programming.

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 16 Design patterns l A design pattern is a way of reusing abstract knowledge about a problem and its solution. l A pattern is a description of the problem and the essence of its solution. l It should be sufficiently abstract to be reused in different settings. l Patterns often rely on object characteristics such as inheritance and polymorphism.

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 17 Pattern elements l Name A meaningful pattern identifier. l Problem description. l Solution description. Not a concrete design but a template for a design solution that can be instantiated in different ways. l Consequences The results and trade-offs of applying the pattern.

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 18 Generator-based reuse l Program generators involve the reuse of standard patterns and algorithms. l These are embedded in the generator and parameterised by user commands. A program is then automatically generated. l Generator-based reuse is possible when domain abstractions and their mapping to executable code can be identified. l A domain specific language is used to compose and control these abstractions.

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 19 Types of program generator l Types of program generator Application generators for business data processing; Parser and lexical analyser generators for language processing; Code generators in CASE tools. l Generator-based reuse is very cost-effective but its applicability is limited to a relatively small number of application domains. l It is easier for end-users to develop programs using generators compared to other component-based approaches to reuse.

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 20 Reuse through program generation

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 21 Aspect-oriented development l Aspect-oriented development addresses a major software engineering problem - the separation of concerns. l Concerns are often not simply associated with application functionality but are cross-cutting - e.g. all components may monitor their own operation, all components may have to maintain security, etc. l Cross-cutting concerns are implemented as aspects and are dynamically woven into a program. The concern code is reuse and the new system is generated by the aspect weaver.

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 22 Application frameworks l Frameworks are a sub-system design made up of a collection of abstract and concrete classes and the interfaces between them. l The sub-system is implemented by adding components to fill in parts of the design and by instantiating the abstract classes in the framework. l Frameworks are moderately large entities that can be reused.

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 23 Framework classes l System infrastructure frameworks Support the development of system infrastructures such as communications, user interfaces and compilers. l Middleware integration frameworks Standards and classes that support component communication and information exchange. l Enterprise application frameworks Support the development of specific types of application such as telecommunications or financial systems.

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 24 Extending frameworks l Frameworks are generic and are extended to create a more specific application or sub-system. l Extending the framework involves Adding concrete classes that inherit operations from abstract classes in the framework; Adding methods that are called in response to events that are recognised by the framework. l Problem with frameworks is their complexity which means that it takes a long time to use them effectively.

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 25 Application system reuse l Involves the reuse of entire application systems either by configuring a system for an environment or by integrating two or more systems to create a new application. l Two approaches covered here: COTS product integration; Product line development.

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 26 COTS product reuse l COTS - Commercial Off-The-Shelf systems. l COTS systems are usually complete application systems that offer an API (Application Programming Interface). l Building large systems by integrating COTS systems is now a viable development strategy for some types of system such as E- commerce systems. l The key benefit is faster application development and, usually, lower development costs.

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 27 COTS design choices l Which COTS products offer the most appropriate functionality? There may be several similar products that may be used. l How will data be exchanged? Individual products use their own data structures and formats. l What features of the product will actually be used? Most products have more functionality than is needed. You should try to deny access to unused functionality.

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 28 E-procurement system

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 29 COTS products reused l On the client, standard and web browsing programs are used. l On the server, an e-commerce platform has to be integrated with an existing ordering system. This involves writing an adaptor so that they can exchange data. An system is also integrated to generate e- mail for clients. This also requires an adaptor to receive data from the ordering and invoicing system.

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 30 COTS system integration problems l Lack of control over functionality and performance COTS systems may be less effective than they appear l Problems with COTS system inter-operability Different COTS systems may make different assumptions that means integration is difficult l No control over system evolution COTS vendors not system users control evolution l Support from COTS vendors COTS vendors may not offer support over the lifetime of the product

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 31 COTS product specialisation l Platform specialisation Different versions of the application are developed for different platforms. l Environment specialisation Different versions of the application are created to handle different operating environments e.g. different types of communication equipment. l Functional specialisation Different versions of the application are created for customers with different requirements. l Process specialisation Different versions of the application are created to support different business processes.

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 32 COTS configuration l Deployment time configuration A generic system is configured by embedding knowledge of the customer’s requirements and business processes. The software itself is not changed. l Design time configuration A common generic code is adapted and changed according to the requirements of particular customers.

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 33 ERP system organisation

©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 34 ERP systems l An Enterprise Resource Planning (ERP) system is a generic system that supports common business processes such as ordering and invoicing, manufacturing, etc. l These are very widely used in large companies - they represent probably the most common form of software reuse. l The generic core is adapted by including modules and by incorporating knowledge of business processes and rules.