Minsoo Ryu. College of Information and Communications Hanyang University.

Similar documents
Software Reuse and Component-Based Software Engineering

Component-Based Software Engineering TIP

Component-Based Software Engineering TIP

Study of Component Based Software Engineering

Software Engineering

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

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

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

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

Dr. Tom Hicks. Computer Science Department Trinity University

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

Chapter 18. Software Reuse

Component-based Architecture Buy, don t build Fred Broks

Game Production: reuse

Seminar report Software reuse

09. Component-Level Design

The Open Group SOA Ontology Technical Standard. Clive Hatton

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

Ch 1: The Architecture Business Cycle

OBJECT ORIENTED SYSTEM DEVELOPMENT Software Development Dynamic System Development Information system solution Steps in System Development Analysis

Proposed Revisions to ebxml Technical Architecture Specification v ebxml Business Process Project Team

Proposed Revisions to ebxml Technical. Architecture Specification v1.04

Software Architectures. Lecture 6 (part 1)

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

Architectural Design

Architectural Design

Architectural Design

Review Sources of Architecture. Why Domain-Specific?

Chapter 6 Architectural Design

2. The Proposed Process Model of CBD Main phases of CBD process model are shown, in figure Introduction

Presenter: Dong hyun Park

WHAT IS SOFTWARE ARCHITECTURE?

Component-Level Design. Slides copyright 1996, 2001, 2005, 2009 by Roger S. Pressman (revised by Seung- Hoon Na) For non-profit educational use only

Configuration Management for Component-based Systems

CS SOFTWARE ENGINEERING QUESTION BANK SIXTEEN MARKS

Software Architectures

3.4 Data-Centric workflow

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

AADL Graphical Editor Design

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

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

Sommerville Chapter 6 The High-Level Structure of a Software Intensive System. Architectural Design. Slides courtesy Prof.

Software Engineering Chap.7 - Design and Implementation

Topic : Object Oriented Design Principles

Software Architecture

SOFTWARE ENGINEERING SOFTWARE EVOLUTION. Saulius Ragaišis.

Project Name. The Eclipse Integrated Computational Environment. Jay Jay Billings, ORNL Parent Project. None selected yet.

Ch 1: The Architecture Business Cycle

Chapter 1: Principles of Programming and Software Engineering

Content Sharing and Reuse in PTC Integrity Lifecycle Manager

Hierarchical vs. Flat Component Models

Component-based Development Process and Component Lifecycle

Lecture 15 Software Testing

National Data Sharing and Accessibility Policy-2012 (NDSAP-2012)

An Approach to Software Component Specification

Using JBI for Service-Oriented Integration (SOI)

Content Management for the Defense Intelligence Enterprise

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

Chapter 6 Architectural Design. Chapter 6 Architectural design

What is CBSE and Why? Component-Based Software Engineering. But why not in Software engineering? Component Everywhere

Component-Based Software Engineering

Function Modules Objective The following section is intended to explain: What function modules are Components of function modules

The CoExSel Tool. Stine Lill Notto Olsen Kjersti Loe. December 19, 2005 Study in System Development

Software Architecture. Lecture 5

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

SE 2730 Final Review

Chapter 8. Achmad Benny Mutiara

AOSA - Betriebssystemkomponenten und der Aspektmoderatoransatz

Enterprise Geographic Information Servers. Dr David Maguire Director of Products Kevin Daugherty ESRI

Part 5. Verification and Validation

Lecture 1. Chapter 6 Architectural design

MATLAB-Based Policy Simulator

C-QM: A PRACTICAL QUALITY MODEL FOR EVALUATING COTS COMPONENTS

Introduction to Software Engineering

Model Driven Development with xtuml and BridgePoint

Applying User Centered Design in the Development of Systems without User Interfaces

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

Architecture of Distributed Systems Component-based Systems

SOFTWARE ARCHITECTURE & DESIGN INTRODUCTION

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

Chapter 4 Objectives

Requirements Validation and Negotiation

CHAPTER 9 DESIGN ENGINEERING. Overview

Requirements Validation and Negotiation

Module 7 TOGAF Content Metamodel

APM. Object Monitor. Object Lab. Richard Hayton & Scarlet Schwiderski

Coding and Unit Testing! The Coding Phase! Coding vs. Code! Coding! Overall Coding Language Trends!

Engr. M. Fahad Khan Lecturer Software Engineering Department University Of Engineering & Technology Taxila

DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING CS SOFTWARE ENGINEERING

Component Design. Systems Engineering BSc Course. Budapest University of Technology and Economics Department of Measurement and Information Systems

Practical Database Design Methodology and Use of UML Diagrams Design & Analysis of Database Systems

Architectures of Distributed Systems 2011/2012

Part III: Evaluating the Business Value of the Hybrid Cloud

Chapter 8 Software Testing. Chapter 8 Software testing

challenges in domain-specific modeling raphaël mannadiar august 27, 2009

Objectives. Architectural Design. Software architecture. Topics covered. Architectural design. Advantages of explicit architecture

VETRI VINAYAHA COLLEGE OF ENGINEERING AND TECHNOLOGY DEPARTMENT OF COMPUTER SCIENCE AND ENGINEERING

06. Analysis Modeling

UML 2.0 UML 2.0. Scott Uk-Jin Lee. Division of Computer Science, College of Computing Hanyang University ERICA Campus

Establishing the overall structure of a software system

Transcription:

Software Reuse and Component-Based Software Engineering Minsoo Ryu College of Information and Communications Hanyang University msryu@hanyang.ac.kr

Software Reuse Contents Components CBSE (Component-Based Software Engineering) Domain Engineering CBD (Component-Based Development) 2 2

Software Reuse In most engineering disciplines, systems are designed by composing existing components that have been used in other systems Software engineering has been more focused on original i development but it is now recognised that t to achieve better software, more quickly and at lower cost, we need to adopt a design process that is based on systematic reuse 3 3

Software 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 Component reuse Components of an application from sub-systems to single objects may be reused Function reuse Software components that implement a single well-defined function may be reused 4 4

Increased reliability Benefits of Reuse Components exercised in working systems Reduced process risk Less uncertainty in development costs Effective use of specialists Reuse components instead of people Standards compliance Embed standards in reusable components Accelerated development Avoid original development and hence speed-up production 5 5

Reuse Problems Increased maintenance costs Source code is not available Lack of tool support CASE tools do not support development with reuse Not-invented-here syndrome Some engineers prefer to rewrite Maintaining a component library Finding and adapting reusable components Software components have to be discovered in a library, understood and, adapted to work in a new environment 6 6

Software Reuse Contents Components CBSE (Component-Based Software Engineering) Domain Engineering CBD (Component-Based Development) 7 7

Definitions of Components Councill and Heinmann: A software component is a software element that conforms to a component model and can be independently deployed and composed without modification according to a composition standard. Szyperski: A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to composition by third-parties. 8 8

Component as a Service Provider The component is an independent, executable entity It does not have to be compiled before it is used with other components The services offered by a component are made available through an interface and all component interactions take place through that interface 9 9

Component Characteristics 1 Standardised Independen t Composable Component standardisation means that a component that is used in a CBSE process has to conform to some standardised component model. This model may define component interfaces, component meta-data, documentation, composition and deployment. A component should be independen t Š it should be possible to compose and deploy it without having to use other specific components. In situations where the component needs externally provided services, these should be explicitly set out in a ŌrequiresÕ interface specification. For a component to be composable, all external interactions must take place through publicly defined interfaces. In addition, it must provideexternal access to information about itself such as its methods and attributes. 10 10

Component Characteristics 2 Deployable Documented To be deployable, a component has to be se lf-contained and must be able to operate as a stand-alone entity on some component platform that implements the component model. This usually means that the component is a binary component that does not have to be compiled before it is deployed. Components have to be fully documented so that potential users of the component can decide whether or not they meet their needs. The syntax and, ideally, the semantics of all component interfaces have to be specified. 11 11

Provides interface Component Interfaces Defines the services that are provided by the component to other components. Requires interface Defines the services that specifies what services must be made available for the component to execute as specified. 12 12

Component Interfaces 13 13

A Data Collector Component 14 14

Components vs. Objects Objects are not primarily concerned about reuse Components aim at reuse Components are deployable entities Components do not define types Component implementations i are opaque Components are language-independent Components are standardized 15 15

Software Reuse Contents Components CBSE (Component-Based Software Engineering) Domain Engineering CBD (Component-Based Development) 16 16

Component-Based Software Engineering g Reuse is an idea both old and new Programmers have reused ideas, abstractions, and processes since the earliest days of computing, but the early approach to reuse was ad hoc CBSE is a process that emphasizes the design and construction of computer-based systems using reusable software components 17 17

Component-Based Software Engineering g Clements describes CBSE in the following way CBSE is changing the way large software systems are developed. CBSE embodies the buy, don t build philosophy espoused by Fred Brooks and others. In the same way that early subroutines liberated the programmer from thinking about details, CBSE shifts the emphasis from programming software to composing software systems. Implementation has given way to integration as the focus. As its foundation is the assumption that there is sufficient commonality in many large software systems to justify developing reusable components to exploit and satisfy that commonality 18 18

Component-Based Software Engineering g A number of questions arise about CBSE Is it possible to construct complex systems by assembling them from a catalog of reusable software components? Can this be accomplished in a cost- and time-effective effective manner? Can appropriate incentives be established to encourage software engineers to reuse rather than reinvent? Is management willing to incur the added expense associated with creating reusable software components? Can the library of components necessary to accomplish reuse be created in a way that makes it accessible to those who need it? Can components that do exist be found by those who need them? 19 19

Engineering of Component-Based Systems On the surface, CBSE seems quite similar to conventional or object-oriented software engineering But, once an architecture design is established, the team examines requirements to determine what subset is directly amenable to composition, rather than moving into more detailed design tasks At this stage, the following questions must be considered Are commercial off-the-shelf h (COTS) components available to implement the requirement? Are internally developed reusable components available to implement the requirement? Are the interfaces for available components within the architecture of the system to be built? 20 20

Software Reuse Contents Components CBSE (Component-Based Software Engineering) Domain Engineering CBD (Component-Based Development) 21 21

The CBSE Process The process of CBSE emphasizes two parallel tracks Domain engineering and component-based development Domain engineering i Identify, construct, catalog, and disseminate a set of software components that have applicability to existing and future software in a particular application domain CBD (component-based development) Develops a system using reusable components 22 22

The CBSE Process Domain Engineering Domain Analysis Domain Design Domain Implementation Domain model Generic Architecture Repository Reusable Artifacts/ Components Application Engineering User Requirements System Analysis Specification & Design Construction System Spec Analysis & Design Models Application Software 23 23

Domain Engineering g The activities of domain engineering include identifying a domain, capturing the commonalities and differences within a domain (domain analysis), constructing an adaptable design (domain design), and defining the mechanisms for translating ti requirements into systems created from reusable components (domain implementation) 24 24

Domain Analysis Domain analysis is "the process of identifying, collecting, organizing, and representing the relevant information in a domain, based upon the study of existing systems and their development histories, knowledge captured from domain experts, underlying theory, and emerging technology within a domain" 25 25

Domain Design Domain design is the process of developing a design model from the products of domain analysis and the knowledge gained from the study of software requirement/design reuse and generic architectures Nilson et al. states that "The key to design reuse is to develop and document an architecture that is generic enough for most systems in the domain and that supports the reuse of code components in the domain 26 26

Structural Modeling and Structure Points Structural modeling is a pattern-based domain engineering approach that works under the assumption that every application domain has repeating patterns The structural t model is an architectural t style that t can and should be reused across applications within the domain (e.g.) Aircraft avionics systems differ greatly in specifics, but all modern software in this domain has the same structural model 27 27

Structural Modeling and Structure Points A structure point is a construct within a structural model A structure point is an abstraction that should have a limited number of instances. Restating this in object-oriented oriented jargon, the size of the class hierarchy should be small The rules that govern the use of the structure point should be easily understood. In addition, the interface to the structure point should be relatively simple The structure point should implement information hiding by hiding all complexity contained within the structure point itself. This reduces the perceived complexity of the overall system 28 28

Examples of Structure Points (Alarm Systems) An interface that enables the user to interact with the system A bounds-setting mechanism that allows the user to establish bounds on the parameters to be measured A sensor management mechanism that communicates with all monitoring i sensors A response mechanism that reacts to the input provided by the sensor management system A control mechanism that enables the user to control the manner in which monitoring is carried out 29 29

Generic Structure Points Application front- end The GUI including all menus, panels, and input and command editing facilities Database The repository for all objects relevant to the application domain Computational ti engine The numerical and nonnumerical models that manipulate data Reporting facility The function that produces output of all kinds Application editor The mechanism for customizing the application to the needs of specific users 30 30

Domain Implementation Domain implementation is the process of identifying and creating reusable components based on the domain model and generic architecture Create reusable assets which h are catalogued into a component library for use by application engineers These reusable components are the principal p outputs of this phase of domain engineering Creation, management, and maintenance of a repository of reusable assets is also an important part of domain implementation 31 31

Identifying Reusable Components Is component functionality required on future implementations? How common is the component's function within the domain? Is there duplication of the component's function within the domain? Is the component hardware-dependent? dependent? Does the hardware remain unchanged between implementations? Can the hardware specifics be removed to another component? Is the design optimized i enough for the next implementation? ti Can we parameterize a non-reusable component so that it becomes reusable? Is the component reusable in many implementations ti with only minor changes? Is reuse through modification feasible? Can a non-reusable component be decomposed d to yield reusable components? How valid is component decomposition for reuse? 32 32

Software Reuse Contents Components CBSE (Component-Based Software Engineering) Domain Engineering CBD (Component-Based Development) 33 33

Component-Based Development Once an architecture has been established, it must be populated by components The task flow of CBD has two parallel paths When reusable components are available, they must be qualified and adapted When new components are required, they must be engineered User Requirements System Analysis Architectural Design Component Qualification Component Adaptation ti Component Engineering Component Composition Testing 34 34

Component Qualification Sources of reusable components In-house, existing applications, and third parties Component qualification This ensures that a candidate component will perform the function required, will properly fit into the architectural style specified for the system, and will exhibit the quality characteristics (e.g., performance, reliability, usability) that are required for the application i 35 35

Component Qualification Factors to be considered during qualification application programming interface (API) development and integration tools required by the component run-time requirements including resource usage (e.g., memory or storage), timing or speed, and network protocol service requirements including operating system interfaces and support from other components security features including access controls and authentication protocol embedded design assumptions including the use of specific numerical or non-numerical algorithms exception handling 36 36

Component Adaptation Even after a component has been qualified, conflicts may occur in one or more areas of concern To avoid these conflicts, an adaptation technique called component wrapping is often used White-box wrapping When a software team has full access to the internal design and code for a component Code-level modifications to remove any conflicts Gray-box wrapping When the component library provides a component extension language or API Black-box wrapping Requires the introduction of pre- and post-processing at the component interface 37 37

Component Incompatibility Parameter incompatibility Operations have the same name but are of different types Operation incompatibility The names of operations in the composed interfaces are different Operation incompleteness The provides interface of one component is a subset of the requires interface of another 38 38

Adaptor for Data Collector 39 39

Component Composition An infrastructure must be established to bind components together The infrastructure (usually a library of specialized components) provides a model for the coordination of components and specific services that t enable components to coordinate with one another and perform common tasks 40 40

Component Composition Architectural ingredients for composition include: Data exchange model Mechanisms that enable users and components to interact and transfer data should be defined for all reusable components Automation A variety of tools, macros, and scripts should be implemented to facilitate interaction between reusable components Structured storage It should be possible to freely navigate to locate, create, or edit data contents Underlying object model Components written in different languages that reside on different platforms can be interoperable 41 41

Types of Composition Sequential composition (a) The composed components are executed in sequence This involves composing the provides interfaces of each component Hierarchical composition (b) One component calls on the services of another The provides interface of one component is composed with the requires interface of another Additive composition (c) The interfaces of two components are put together to create a new component 42 42

Types of Composition 43 43

Component Engineering g Even though the CBSE encourages the use of existing components, there are times when new software components must be developed and integrated with existing COTS and in-house components Because these new components become members of the in-house library of reusable components, they should be engineered for reuse 44 44

Analysis and Design for Reuse Nothing is magical about creating software components that can be reused Design concepts such as abstraction, hiding, functional independence, and refinement all contribute tib t to the creation of software components that are reusable 45 45

Analysis and Design for Reuse Binder suggests a number of key issues that form a basis for design for reuse (DFR) Standard data The application domain should be investigated t and standard d global data structures should be identified Standard interface protocols Three levels of interface protocol should be established Intramodular interfaces, external technical interfaces, and the human/machine hi interfaces Program templates The structure model can serve as a template for the architectural design of a new program 46 46

Economics of CBSE Quality In a study conducted at Hewlett Packard The defect rate for reused code is 0.9 defects per KLOC The defect rate for newly developed software is 4.1 defects per KLOC Productivity It appears that 30 to 50 percent reuse can result in productivity improvements in the 25 40 percent range Cost The cost to develop a reusable component is often greater than the cost to develop a component that is specific to one application Be sure that there will be a need for the reusable component in the future 47 47