Basic Concepts in Component-Based Software Engineering

Slides:



Advertisements
Similar presentations
Ch:8 Design Concepts S.W Design should have following quality attribute: Functionality Usability Reliability Performance Supportability (extensibility,
Advertisements

Component Oriented Programming 1 Chapter 2 Theory of Components.
Lecture # 2 : Process Models
OASIS Reference Model for Service Oriented Architecture 1.0
Page 1 Building Reliable Component-based Systems Chapter 7 - Role-Based Component Engineering Chapter 7 Role-Based Component Engineering.
Page 1 Building Reliable Component-based Systems Chapter 16 - Component based embedded systems Chapter 16 Component based embedded systems.
1 © Wolfgang Pelz UML3 UML 3 Notations describe how to use reusable software. Package Component Deployment Node.
CBSD – Component Based Software Development - Introduction -
The Architecture Design Process
Page 1 Building Reliable Component-based Systems Chapter 2 -Specification of Software Components Chapter 2 Specification of Software Components.
Page 1 Building Reliable Component-based Systems Chapter 11 - Components in Product Line Architectures Chapter 11 Components in Product Line Architectures.
Feb. 23, 2004CS WPI1 CS 509 Design of Software Systems Lecture #5 Monday, Feb. 23, 2004.
Software Engineering Module 1 -Components Teaching unit 3 – Advanced development Ernesto Damiani Free University of Bozen - Bolzano Lesson 2 – Components.
Page 1 Building Reliable Component-based Systems Chapter 4 - Component Models and Technology Chapter 4 Component Models and Technology.
Introduction to Software Design Chapter 1. Chapter 1: Introduction to Software Design2 Chapter Objectives To become familiar with the software challenge.
QoS-enabled middleware by Saltanat Mashirova. Distributed applications Distributed applications have distinctly different characteristics than conventional.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 18 Slide 1 Software Reuse.
Design Patterns.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 19 Slide 1 Component-based software engineering 1.
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 A Discipline of Software Design.
An Introduction to Software Architecture
Software Models (Cont.) 9/22/2015ICS 413 – Software Engineering1 -Component-based software engineering -Formal Development Model.
An Introduction to Design Patterns. Introduction Promote reuse. Use the experiences of software developers. A shared library/lingo used by developers.
By Xiangzhe Li Thanh Nguyen.  Introduction  Terminology  Architecture  Component  Connector  Configuration  Architectural Style  Architectural.
Design engineering Vilnius The goal of design engineering is to produce a model that exhibits: firmness – a program should not have bugs that inhibit.
95-843: Service Oriented Architecture 1 Master of Information System Management Service Oriented Architecture Lecture 3: SOA Reference Model OASIS 2006.
Introduction CS 3358 Data Structures. What is Computer Science? Computer Science is the study of algorithms, including their  Formal and mathematical.
Requirements as Usecases Capturing the REQUIREMENT ANALYSIS DESIGN IMPLEMENTATION TEST.
Chapter 10 Analysis and Design Discipline. 2 Purpose The purpose is to translate the requirements into a specification that describes how to implement.
GRASP: Designing Objects with Responsibilities
Software Engineering Prof. Ing. Ivo Vondrak, CSc. Dept. of Computer Science Technical University of Ostrava
Modeling Component-based Software Systems with UML 2.0 George T. Edwards Jaiganesh Balasubramanian Arvind S. Krishna Vanderbilt University Nashville, TN.
Component-Based Software Engineering(CBSE) Xingui Tang CS532, Fall /6/2015.
Design Principle & Patterns by A.Surasit Samaisut Copyrights : All Rights Reserved.
Component Oriented Programming 1 Introduction to COP.
Distribution and components. 2 What is the problem? Enterprise computing is Large scale & complex: It supports large scale and complex organisations Spanning.
Logical view –show classes and objects Process view –models the executables Implementation view –Files, configuration and versions Deployment view –Physical.
Basic Concepts of Component- Based Software Development (CBSD) Model-Based Programming and Verification.
Software Design Process
CSC480 Software Engineering Lecture 8-9 September 20, 2002.
MODEL-BASED SOFTWARE ARCHITECTURES.  Models of software are used in an increasing number of projects to handle the complexity of application domains.
1 OO Analysis & Design - Introduction to main ideas in OO Analysis & design - Practical experience in applying ideas.
Csci 490 / Engr 596 Special Topics / Special Projects Software Design and Scala Programming Spring Semester 2010 Lecture Notes.
Introduction to Software Design by A.Surasit Samaisut Copyrights : All Rights Reserved.
Testing OO software. State Based Testing State machine: implementation-independent specification (model) of the dynamic behaviour of the system State:
CBSE Component Based Software Engineering cs. upt
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 32. Review Behavioral Patterns – Observer Pattern – Chain of command.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 15. Review Interaction-Oriented Software Architectures – MVC.
Introduction to business component technologies. Component definitions Szyperski: A software component is a unit of composition with contractually specified.
1 Here are some quotations to get an overview of the kinds of issues of interest.
Enterprise Computing Distribution and components.
Banaras Hindu University. A Course on Software Reuse by Design Patterns and Frameworks.
Basic Concepts and Definitions
Engr 691 Special Topics in Engineering Science Software Architecture Spring Semester 2004 Lecture Notes.
Object Design More Design Patterns Object Constraint Language Object Design Specifying Interfaces Review Exam 2 CEN 4010 Class 18 – 11/03.
1 SOA Seminar Seminar on Service Oriented Architecture SOA Reference Model OASIS 2006.
Basic Characteristics of Object-Oriented Systems
Basic Concepts of Software Architecture. What is Software Architecture? Definition: – A software system’s architecture is the set of principal design.
Design Engineering 1. Analysis  Design 2 Characteristics of good design 3 The design must implement all of the explicit requirements contained in the.
Design Patterns: MORE Examples
Design by Contract Jim Fawcett CSE784 – Software Studio
Design by Contract Jim Fawcett CSE784 – Software Studio
Systems Analysis and Design With UML 2
Distribution and components
Software Quality Engineering
Chapter 5 Designing the Architecture Shari L. Pfleeger Joanne M. Atlee
An Introduction to Software Architecture
The Current State of CBSE
Chapter 22 Object-Oriented Systems Analysis and Design and UML
Software Development Process Using UML Recap
Presentation transcript:

Basic Concepts in Component-Based Software Engineering Chapter 1 Basic Concepts in Component-Based Software Engineering Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 1

Overview The Component Interfaces Contracts Patterns Frameworks Relationships between concepts Conclusion Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 2

What is a Component? We can find several definitions of a component in literature, however everyone agrees that a component is a piece of software. These definitions begin from the consideration of CBSE from different viewpoints and focus on different aspects of software engineering such as: Different phases (design, implementation and run-time phases), Business aspects, Architectural issues. Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 3

The Component: Szyperski Szyperski defines a component precisely by enumerating its characteristic properties as follows: 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 party. Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 4

Implications of Szyperski’s Definition The following implications arise as a result of Szyperski’s definition: For a component to be deployed independently, a clear distinction from its environment and other components is required. A component must have clearly specified interfaces. The implementation must be encapsulated in the component and is not directly reachable from the environment . Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 5

The Component: D'Souza and Wills D'Souza and Wills define a component as A reusable part of software, which is independently developed, and can be brought together with other components to build larger units. It may be adapted but may not be modified. A component can be, for example, a compiled code without a program source, or a part of a model and/or design. Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 6

Describing a Component To be able to describe a component completely the component should consist of the following elements: A set of interfaces provided to, or required from the environment. An executable code, which can be coupled to the code of other components via interfaces. Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 7

Improving a Component To improve the component quality, the following elements can be included in the specification of a component: The specification of non-functional characteristics, The validation code, Additional information. Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 8

Objects and Components Pfister and Szyperski View a component as a collection of objects, in which the objects co-operate with each other, and are intertwined tightly. D'Souza and Wills Assert that if a class were packaged together with the explicitly defined interfaces which it requires and implements, then this class would be a component. Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 9

Objects and Components Continued The following are other important distinctions between objects and components: Components often use persistent storage whereas objects have local state. Components have a more extensive set of intercommunication mechanisms than objects which usually use the messaging mechanism. Components are often larger units of granularity than objects, and have complex actions at their interfaces. Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 10

Interfaces An interface of a component can be defined as a specification of its access point, offering no implementation for any of its operations. This seperation makes it possible to: Replace the implementation part without changing the interface; Add new interfaces (and implementations) without changing the existing implementation, Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 11

Describing an Interface Interfaces defined in standard component technologies using techniques such as Interface Definition Language (IDL) are: Sufficient in describing functional properties. Insuffiecient in describing extra-functional properties such as quality attributes like accuracy, availability, latency, security, etc. Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 12

Export and Import Interfaces We can distinguish two kinds of interfaces. Components can export/import interfaces to/from environments which may include other components. An exported interface describes the services provided by a component to the environment. An imported interface specifies the services required by a component from the environment. Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 13

Contracts A more accurate specification of a component's behavior can be achieved through contracts. A contract is comprised of: The Invariant, the global constraints which the component will maintain; The Pre-condition, the constraints which need to be met by the client; The Post-condition, the constraints which the component promises to establish in return. Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 14

How Contracts specify Component Interaction A contract specifies the interactions among components, in terms of: The set of participating components; The role of each component through its contractual obligations, such as type and casual obligations; The invariant to be maintained by the components; The specification of the methods which instantiate the contract. Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 15

Patterns Patterns define recurring solutions to recurring problems capturing non-obvious solutions, not just abstract principles or strategies. The solutions should be proven to solve the problem rather than being theories or speculations. Patterns describe relationships between deeper system structures and mechanism. A component, as a reusable entity, can be seen as a realization of some design pattern. Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 16

Three Categories of Patterns Patterns can be classified into three major categories: Architectural Patterns, capture the overall structure and organization of a software system. Design Patterns, refine the structure and the behavior of the subsystems as well as the components of a software system, and the relationships which exist between them. Idioms, are low-level patterns which are dependent on the chosen paradigm and the programming language used. Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 17

Design Patterns Design patterns are widely used in the process of designing component-based systems in which the reusable units must be identified. By using design patterns, it is easier to recognize those reusable parts and either find them in the form of pre-existing components, or develop them as reusable units. Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 18

Software Frameworks CBSE means that we build software by "putting pieces together". Frameworks provide the context in which the pieces can be used. A framework may be seen as: A reusable design of a system, A skeleton of an application which can be customized by an application developer. Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 19

Coordination Services (transactions, persistence..) Component Frameworks While frameworks in general describe a typical and reusable situation at a model level, a component framework describes a “circuit-board” with empty slots into which components can be inserted to create a working instance. Component Framework Coordination Services (transactions, persistence..) Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 20

Component Models The two concepts Component Models and Component Frameworks are sometimes intermixed. A component model defines a set of standards and conventions used by the component developer whereas a component framework is a support infrastructure for the component model. Component model Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 21

Relationships Between Concepts Interface that satisfies contracts Component-type Specific interface Component implementation Independent deployment Component model Component Framework Coordination Services (transactions, persistence..) Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 22

Frameworks and Contracts Frameworks amd Components By the definition of frameworks as described earlier, a framework can be seen as a circuit-board (component framework) that is instantiated by filling in the empty slots. Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 23

Frameworks and Contracts Continued Frameworks focus on the overall properties of component compositions. Contracts give specifications for relationships between concrete components. These specifications may be different for components within one composition. Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 24

Frameworks and Patterns It is important to realize that design patterns and frameworks are distinct concepts of different natures. Design patterns are of a logical nature, representing knowledge of and experience gained with software. Frameworks are of a physical nature, and are executable software used in either the design or the run-time phase. Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 25

Frameworks and Patterns Continued The major differences between design patterns and frameworks are as follows: The level of abstraction of frameworks and design patterns; Design patterns are smaller architectural elements than frameworks; The level of specialization of frameworks and design patterns. Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 26

Conclusion Component specifications are essential for component users who are focused on the component features, functional and non-functional The main purpose of frameworks is to support the process of component composition Component developers must obey the rules and formats specified by the framework to develop and to specify the component, while component users will use frameworks to compose systems from components in a more efficient and accurate way. Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 27

Conclusion Continued Patterns give an abstract and more general view of a function, procedure or similar, which can be implemented in the form of systems or components Component designers will use patterns in the design process to design components more efficiently Building Reliable Component-based Systems Chapter 1 - Basic Concepts in Component-Based Software Engineering Page 28