SOFTWARE ENGINEERING. To discuss several different ways to implement software reuse. To describe the development of software product lines.

Similar documents
Dr. Tom Hicks. Computer Science Department Trinity University

Seminar report Software reuse

Chapter 18. Software Reuse

Software Engineering

Software Reuse and Component-Based Software Engineering

Minsoo Ryu. College of Information and Communications Hanyang University.

Chapter 17 - Component-based software engineering. Chapter 17 So-ware reuse

Game Production: reuse

Part 4. Development. -Software Reuse - Component-Based Software Engineering. JUNBEOM YOO Ver. 1.

Component-based software engineering. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 19 Slide 1

Second. Incremental development model

ΗΜΥ 317 Τεχνολογία Υπολογισμού

Study of Component Based Software Engineering

An Approach to Software Component Specification

Appendix A - Glossary(of OO software term s)

Towards The Adoption of Modern Software Development Approach: Component Based Software Engineering

Chapter 6 Architectural Design. Chapter 6 Architectural design

Software Reuse Techniques

SOFTWARE ENGINEERING DECEMBER. Q2a. What are the key challenges being faced by software engineering?

09. Component-Level Design

The RASTA Framework. Joel Becker October 3, 2001

Architectural Design

Component-Based Software Engineering TIP

Best Practices for Deploying Web Services via Integration

Introduction to Software Engineering

5/9/2014. Recall the design process. Lecture 1. Establishing the overall structureof a software system. Topics covered

Idioms and Design Patterns. Martin Skogevall IDE, Mälardalen University

Lecture 1. Chapter 6 Architectural design

Software Engineering Principles

Part 5. Verification and Validation

CAS 703 Software Design

An Introduction to Software Architecture By David Garlan & Mary Shaw 94

Application Servers in E-Commerce Applications

Software Development Chapter 1

Component-Level Design. Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman. For non-profit educational use only

Solved Question Paper June 2017

Architectural Design. Architectural Design. Software Architecture. Architectural Models

SYSPRO s Fluid Interface Design

Developing Software Applications Using Middleware Infrastructure: Role Based and Coordination Component Framework Approach

Patterns. Giovanni Sakti. in Software Engineering. Starqle

Verification and Validation. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 22 Slide 1

CS SOFTWARE ENGINEERING QUESTION BANK SIXTEEN MARKS

Agent-Enabling Transformation of E-Commerce Portals with Web Services

TOPLink for WebLogic. Whitepaper. The Challenge: The Solution:

Component-Based Software Engineering TIP

Verification and Validation. Ian Sommerville 2004 Software Engineering, 7th edition. Chapter 22 Slide 1

1. Write two major differences between Object-oriented programming and procedural programming?

DESIGN PATTERN - INTERVIEW QUESTIONS

Specifying and Prototyping

Component-based Architecture Buy, don t build Fred Broks

Patterns for Business Object Model Integration in Process-Driven and Service-Oriented Architectures

AUTOMATIC GRAPHIC USER INTERFACE GENERATION FOR VTK

Presenter: Dong hyun Park

Incremental development A.Y. 2018/2019

Whole Platform Foundation. The Long Way Toward Language Oriented Programming

Chapter 6 Architectural Design. Lecture 1. Chapter 6 Architectural design

EXTRACTION OF REUSABLE COMPONENTS FROM LEGACY SYSTEMS

Software Prototyping Animating and demonstrating system requirements. Uses of System Prototypes. Prototyping Benefits

Module 16. Software Reuse. Version 2 CSE IIT, Kharagpur

Software Processes. Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 1

Object-Oriented and Classical Software Engineering REUSABILITY AND PORTABILITY 11/5/2017. CHAPTER 8 Slide 8.2. Stephen R. Schach. Overview Slide 8.

Chapter 8 Web Services Objectives

CS 307: Software Engineering. Lecture 10: Software Design and Architecture

ACRONYMS AND GLOSSARY

ANZSCO Descriptions The following list contains example descriptions of ICT units and employment duties for each nominated occupation ANZSCO code. And

OO Frameworks. Introduction. Using Frameworks

SOFTWARE ARCHITECTURE & DESIGN INTRODUCTION

Chapter 6 Architectural Design

CHAPTER 5 GENERAL OOP CONCEPTS

System types. Distributed systems

Introduction to Software Reuse

Socket attaches to a Ratchet. 2) Bridge Decouple an abstraction from its implementation so that the two can vary independently.

CMSC 435: Software Engineering Section 0201

Chapter 1: Distributed Information Systems

Lecture Chapter 2 Software Development

Software Engineering Chap.7 - Design and Implementation

Incorporating applications to a Service Oriented Architecture

CS612: IT Technology and Course Overview

Topics in Object-Oriented Design Patterns

ITM DEVELOPMENT (ITMD)

Design Process Overview. At Each Level of Abstraction. Design Phases. Design Phases James M. Bieman

An Introduction to Software Architecture. David Garlan & Mary Shaw 94

3.4 Data-Centric workflow

1 Software Architecture

Software Quality Improvement using Design Patterns

DOMAIN ENGINEERING OF COMPONENTS

Migration to Service Oriented Architecture Using Web Services Whitepaper

Work groups meeting 3

The requirements engineering process

Notes. Submit homework on Blackboard The first homework deadline is the end of Sunday, Feb 11 th. Final slides have 'Spring 2018' in chapter title

GRASP Design Patterns A.A. 2018/2019

Produced by. Design Patterns. MSc in Communications Software. Eamonn de Leastar

Software Design Fundamentals. CSCE Lecture 11-09/27/2016

Object Model. Object Orientated Analysis and Design. Benjamin Kenwright

Legacy Modernization to SOA using Compass/VB

Object-Oriented Programming Paradigm

Distributed Systems. What is a Distributed System?

Extensibility Design Patterns From The Initial Stage of Application Life-Cycle

Application Architectures, Design Patterns

HOW TO STAND OUT IN DEVOPS

Transcription:

SOFTWARE ENGINEERING DESIGN WITH COMPONENTS Design with reuse designs and develops a system from reusable software. Reusing software allows achieving better products at low cost and time. LEARNING OBJECTIVES To explain the benefits of software reuse To discuss several different ways to implement software reuse To describe the development of software product lines. REUSE Design Reuse is the building of software from reusable. In most engineering disciplines, systems are designed by composing existing that have been used in other systems. To achieve better software, more quickly and at lower cost, we need to adopt a design process that is based on systematic reuse. REUSE-BASED SOFTWARE ENGINEERING Reused based software engineering can be categorized as the following: Application system reuse Component reuse Function reuse

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. Widely practised as software systems are implemented as application families and COTS reuse is becoming increasingly common. Component Reuse Components of an application from sub-systems to single objects may be reused. Component reuse is seen as the key to effective and widespread reuse through component based software engineering. Component reuse must allow easy access and retrieval to the, the component size must be suitable and the functionalities must be easy to comprehend. Function Reuse Software that implement a single well-defined function may be reused. Function reuse is common in some application domains (e.g. engineering) where domain-specific libraries of reusable functions have been established. BENEFITS OF REUSE Increased reliability - Components exercised in working systems are tried and tested under real conditions Reduced process risk -Less uncertainty in development costs. Effective use of specialists The are reused instead of application experts develop instead of repeating the same on multiple projects. Standards compliance - Embed standards in reusable (e.g. menu format). Accelerated development - Avoid original development and hence speed-up production which may reduce testing time as well. REQUIREMENTS FOR DESIGN WITH REUSE The requirements for design with reuse comprises of the following: It must be possible to find appropriate reusable

The re-user of the component must be confident that the will be reliable and will behave as specified. The must be documented so that they can be understood and, where appropriate, modified. REUSE PROBLEMS The challenges encountered during reusing of are as follows: Increased maintenance costs - If source code of is not available, then other parts for modification must be engineered around the which are inflexible Not-invented-here syndrome - Some developers resist reuse due to matter of trust, and question of creativity Lack of tool support Maintaining a component library as an effective library for reuse can be difficult and expensive Finding and adapting reusable GENERATOR-BASED REUSE Program generators involve the reuse of standard patterns and algorithms.these are embedded in the generator and parameterised by user commands from which a program is then automatically generated. Generator-based reuse is possible when domain abstractions and their mapping to executable code can be identified. A domain specific language is used to compose and control these abstractions. Types of Program Generator Application generators for business data processing Parser and lexical analyser generators for language processing Code generators in CASE tools REUSE THROUGH PROGRAM GENERATION Reuse through program generation involves obtaining a well defined application description which contains the details of the application. The application domain knowledge is

gathered, the description and knowledge are fed into the program generator which automatically generates the program which has access to the database. Application description Program generator Generated program Application domain knowledge Database COMPONENT-BASED DEVELOPMENT Component-based software engineering (CBSE) is an approach to software development that relies on reuse. Components are more abstract than object classes and can be considered to be stand-alone service providers. Components provide a service without regard to where the component is executing or its programming language. Components can range in size from simple functions to entire application systems and are independent very loosely coupled. Components are encapsulated to wrap functionalities. The are obtained from the repositories which are composed to develop a component based system COMPONENT INTERFACES Component interface provides the interaction between of a system. A component encompasses two functionalities in terms of interface: Provides interface It defines the services that are provided by the component to other

Requires interface It defines the services that specifies what services must be made available for the component to execute as specified. Requires interface Component Provides interface Example: Printing Services Component Requires interface PrintService Provides interface GetPDfile PrinterInt Print GetQueue Remove Transfer Register Unregister Requires GetPDFile to get printer description file for a printer type, and PrinterInt to transfer commands to a specific printer Provides Print, GetOueue, Remove, Transfer, Register and Unregister. COMPONENTS DIFFERENT LEVELS OF ABSTRACTIONS Components posses different levels of abstraction as follows: Functional abstraction- The component implements a single function such as a mathematical function Casual groupings - The component is a collection of loosely related entities that might be data declarations, functions, etc. Data abstractions- The component represents a data abstraction or class in an objectoriented language

Cluster abstractions - The component is a group of related classes that work together (sometimes called a framework) System abstraction - The component is an entire self-contained system. Provides interface is the so-called API (application programming interface) CBSE PROCESSES The system requirements are modified to reflect the that are available. CBSE usually involves a prototyping or an incremental development process with being glued together using a scripting language. The process involves designing the system architecture. Based on the architecture the are specified, the suitable that can be reused are determined and are incorporated in the architecture for the development of component based software development. Design system aachitecture Specify Search for reusable Incorporate discovered DEVELOPMENT WITH REUSE The development with reuse methodology involves establishing a well defined outline of the system requirements. The requirements are analysed and the that can be reused are determined and selected. Based on the selected the requirements are modified and the architectural system is well established. The reusable are determined and the are specified based on the reusable that are suitable for development of the system. The specified are later incorporated in the development of the system. Outline system requirements Search for reusable Modify requirements accor ding to discovered Architectur al design Search for reusable Specify system based on reusable

CBSE PROBLEMS The challenges that are encountered during component based software development are as follows: Component incompatibilities may mean that cost and schedule savings are less then expected. Finding and understanding. Managing evolution as requirements change in situations where it may be impossible to change the system. APPLICATION FRAMEWORKS Frameworks are a sub-system design made up of a collection of abstract and concrete classes and the interfaces between them. The sub-system is implemented by adding to fill in parts of the design and by instantiating the abstract classes in the framework. Frameworks are moderately large entities that can be reused. The framework classes include: System infrastructure frameworks. Middleware integration frameworks. Enterprise application frameworks. System Infrastructure Frameworks System infrastructure framework supports the development of system infrastructures such as communications, user interfaces and compilers. Best developed of these three is particularly for GUI.

Middleware Integration Frameworks Standards and classes that support component communication and information exchange encompass middleware integration framework. Examples CORBA, COM, DCOM, JavaBeans. Enterprise Application Frameworks Enterprise Application Frameworks supports the development of specific types of application such as telecommunications or financial systems. Extending Frameworks Frameworks are generic and are extended to create a more specific application or sub-system. 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 (call backs). MODEL-VIEW CONTROLLER Model-View Controller provides a system infrastructure framework for GUI design. It allows multiple presentations of an object and separate interactions with these presentations. MVC framework involves the instantiation of a number of patterns.

The controller possesses the application logic which process the users request and gets appropriate response. View provides the visual design and model comprises of the database, sometimes these can be xml or even text files. COTS PRODUCT REUSE COT is the acronym for Commercial Off-The-Shelf systems. COTS systems are usually complete application systems that offer an API (Application Programming Interface). Building large systems by integrating COTS systems is now a viable development strategy for some types of system such as E-commerce systems. Component Reusability Component reusability should reflect stable domain abstractions such as fundamental concepts in the application domain that change slowly e.g. bank accounts, univ students. It should hide state representation and be as independent as possible. Component reusability should publish exceptions through the component interface; different applications will have different requirements for exception handling and the applications handle them rather than trying to handle them in the component.

Reusability Enhancement Name generalisation - Names in a component may be modified so that they are not a direct reflection of a specific application entity. Operation generalisation- Operations may be added to provide extra functionality and application specific operations may be removed Exception generalisation- Application specific exceptions are removed and exception management added to increase the robustness of the component Component certification - Component is certified as reusable Initial component Reusable component Name generalization Operation generalization Exception generalization Component certifica tion