SOFTWARE DESIGN AND ARCHITECTURE LECTURE 32. Review Behavioral Patterns – Observer Pattern – Chain of command.

Slides:



Advertisements
Similar presentations
Component-Based Software Engineering Main issues: assemble systems out of (reusable) components compatibility of components.
Advertisements

Component Oriented Programming 1 Chapter 2 Theory of Components.
Copyright © 2012 Pearson Education, Inc. Publishing as Prentice Hall A.1.
COMPONENT DIAGRAM in UML 2.0 Veronica Carrega
© 2007 Pearson Education, Inc. Publishing as Pearson Addison-Wesley 1 Architectural Modeling Notations.
Figures – Chapter 17. Figure 17.1 Component characteristics Component characteristic Description StandardizedComponent standardization means that a component.
Jordan - Amman Tel: Fax: P.O.Box : 166 Copyright © 2011 Applied Science University. All Rights Reserved ASU Open Course.
Basic Concepts in Component-Based Software Engineering
2-1 © Prentice Hall, 2007 Chapter 2: Introduction to Object Orientation Object-Oriented Systems Analysis and Design Joey F. George, Dinesh Batra, Joseph.
C OMPONENT & D EPLOYMENT D IAGRAMS Hoang Huu Hanh, Hue University hanh-at-hueuni.edu.vn.
1 © Wolfgang Pelz UML3 UML 3 Notations describe how to use reusable software. Package Component Deployment Node.
1 SWE Introduction to Software Engineering Lecture 23 – Architectural Design (Chapter 13)
- 1 - Component Based Development R&D SDM Theo Schouten.
Component and Deployment Diagrams
Software Engineering Module 1 -Components Teaching unit 3 – Advanced development Ernesto Damiani Free University of Bozen - Bolzano Lesson 2 – Components.
Component-Based Software Engineering Dr R Bahsoon 1 Lecture 1. Introduction Component-Based Software Dr. Rami Bahsoon School of Computer Science The University.
COMS W4156: Advanced Software Engineering
UML Packages & Related Diagrams
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 19 Slide 1 Component-based software engineering 1.
Chapter 10 Introduction to Components. Process Phases Discussed in This Chapter Requirements Analysis Design Implementation ArchitectureFramework Detailed.
1 CS 456 Software Engineering. 2 Contents 3 Chapter 1: Introduction.
An Introduction to Software Architecture
Copyright 2002 Prentice-Hall, Inc. Modern Systems Analysis and Design Third Edition Jeffrey A. Hoffer Joey F. George Joseph S. Valacich Chapter 20 Object-Oriented.
SWE © Solomon Seifu ELABORATION. SWE © Solomon Seifu Lesson 11 Subsystem Design.
Smith’s Aerospace © P. Bailey & K. Vander Linden, 2005 Architecture: Component and Deployment Diagrams Patrick Bailey Keith Vander Linden Calvin College.
UML diagrams What is UML UML diagrams –Static modeoing –Dynamic modeling 1.
Chapter 16 Applying UML and Patterns Craig Larman
Chapter 17 Component-based software engineering 1Chapter 17 Software reuse CS 425 November 20, 2014 Ian Sommerville, Software Engineering, 9 th Edition.
SWE 316: Software Design and Architecture Objectives Lecture # 18 Introduction to Components SWE 316: Software Design and Architecture To learn:  benefits.
UML Class Diagram Trisha Cummings. What we will be covering What is a Class Diagram? Essential Elements of a UML Class Diagram UML Packages Logical Distribution.
CBSE 2014 Modeling Components with UML. Bibliography Modelling components in UML – Main text: Kim Hamilton, Russell Miles, Learning UML 2.0, OReilly,
TAL7011 – Lecture 4 UML for Architecture Modeling.
Design Jon Walker. More UML ● What is UML again?
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.
Part VII: Design Continuous
Software Engineering Lecture 8 Object-Oriented Analysis.
COMPONENT DIAGRAM in UML 2.0 Veronica Carrega. PLAN OF TALK  Introduction about components  Components and component diagrams in uml 2.0  Case study.
1 Technical & Business Writing (ENG-715) Muhammad Bilal Bashir UIIT, Rawalpindi.
Chapter 19: Interfaces and Components [Arlow and Neustadt, 2005] University of Nevada, Reno Department of Computer Science & Engineering.
Chapter 16 UML Class Diagrams 1CS6359 Fall 2012 John Cole.
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 15. Review Interaction-Oriented Software Architectures – MVC.
Identifying classes, Packages and drawing class Diagrams, Object Diagrams and composite structure diagrams Week 07 1.
Basic Concepts and Definitions
CS223: Software Engineering Lecture 13: Software Architecture.
Copyright © 2009 Pearson Education, Inc. Publishing as Prentice Hall Appendix A Object-Oriented Analysis and Design A.1.
Object Design More Design Patterns Object Constraint Language Object Design Specifying Interfaces Review Exam 2 CEN 4010 Class 18 – 11/03.
Object Oriented Programming and Data Abstraction Earl Huff Rowan University.
CS 501: Software Engineering Fall 1999 Lecture 15 Object-Oriented Design I.
Chapter 17 - Component-based software engineering
UML Diagrams By Daniel Damaris Novarianto S..
Course Outcomes of Object Oriented Modeling Design (17630,C604)
COMPONENT & DEPLOYMENT DIAGRAMS
Chapter 17 - Component-based software engineering
UML Diagrams Jung Woo.
Chapter 19: Interfaces and Components
CBSE 2014 Modeling Components with UML
Component-Based Software Engineering
Chapter 20 Object-Oriented Analysis and Design
CIS 375 Bruce R. Maxim UM-Dearborn
Appendix A Object-Oriented Analysis and Design
Analysis models and design models
An Introduction to Software Architecture
Chapter 19: Interfaces and Components
ISpec: A Compositional Approach to Interface Specification
Sylnovie Merchant, Ph.D. MIS 161 Spring 2005
Chapter 17 - Component-based software engineering
Design Yaodong Bi.
CIS 375 Bruce R. Maxim UM-Dearborn
Appendix A Object-Oriented Analysis and Design
Presentation transcript:

SOFTWARE DESIGN AND ARCHITECTURE LECTURE 32

Review Behavioral Patterns – Observer Pattern – Chain of command

Outline Component Based Software Engineering – Components – Component Based Design – Component Model – CBSE

COMPONENT BASED SOFTWARE ENGINEERING

Component-based software engineering How do you define a “Component”? How do you define “Component-based software engineering”? 5

What is a Component? Several definitions of a component in literature, however everyone agrees that a component is a piece of software… But this requires clarification! 6

What is a Component? Components provide a service without regard to where the component is executing or its programming language – A component is an independent executable entity that can be made up of one or more executable objects – The component interface is published and all interactions are through the published interface 7

Component The Object Management Group’s “Modeling Language Specification” defines a component as – “a physical, replaceable part of a system that packages implementation and provides the realization of a set of interfaces. – A component represents a physical piece of system’s implementation, including software code (source, binary or executable) or equivalents, such as scripts or command files.

Component Provides a service: implementation-independent Need not to be compiled Executable More abstract than classes

Components can be made of Source code – Classes – one or more, possibly related Executable code – Object code – Virtual object code Other files – Images, text, indices

Motivation for CBSE – Develop software systems as assemblies of components – Reuse-driven & market-driven software development – Easing maintenance and evolution: design for change! 11

Component view points There are many definitions of components: – Consideration of CBSE from different viewpoints and focus on different aspects of software engineering Design viewpoint: components as reusable design parts Architecture viewpoint: – High-level representation(structural and behavioral) of a service/computation 12

Implementation viewpoint: – Components confirmed to a specific component model – At run time could be binary packages, distributed components Business viewpoint: – buy vs. build (Commercial-off-the-shelf COTS components)

Manifests Since components can consist of several parts, they are typically packaged with a list of their contents. Manifests contain information such as: – Identification of the component – Authorship of the component – List of the files or classes making up this component – Other components on which this one relies – Encryption information – Means of verifying that all parts of the component are present – Version number

introspection The information about the component is called metadata and the process of obtaining it is introspection ClassName, superclass, super- interfaces, inner classes, fileds, constructors, Methods FieldName, type ConstructorParameters, exceptions MethodName, parameter, return type, exceptions

N tier Architecture

Software Architecture Point of View The software architecture of a program or computing system is the structure or structures of the system, which comprise software components [and connectors], the externally visible properties of those components [and connectors] and the relationships among them... [and the environment]

Component Characteristics Standardised – A component has to conform to some standardised component model This model may define component interfaces, component meta-data, documentation, composition and deployment Independent – A component should be independent 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

Component Characteristics Composable – For a component to be composable, All external interactions must take place through publicly defined interfaces In addition, it must provide external access to information about itself such as its methods and attributes

Deployable – To be deployable, A component has to be self-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 Explicit context dependencies – Specification of the deployment and run-time environments Which tools, platforms, resources, other components are required?

Documented – 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

Marketable entity – A component is a self-contained binary piece of software that one can typically purchase in the open market Not a complete application – A component can be combined with other components to form a complete application (or an even bigger component) It can be used in unpredictable combinations – A component can be used in ways that were totally unanticipated by the original developer – Components can be combined with other components using plug-and-play

UML

Interfaces Act as a “contract” Requires Provide

Interfaces – Can include operations, method calls, etc that pass messages to component to ask for services – Can declare exceptions to indicate that the operation did not perform successfully

Component Diagram In UML 2 a component is merely a specialized version of the class concept. The notation rules that apply to the class classifier also apply to the component classifier. A component is drawn as a rectangle with optional compartments stacked vertically. Can be modeled as just a rectangle with the component's name and the component stereotype text and/or icon. The component stereotype's text is «component»" and the component stereotype icon is a rectangle with two smaller rectangles protruding on its left side (the UML 1.4 notation element for a component). Figure: The different ways to draw a component's name compartment

Component Diagram The interfaces provided represent the formal contract of services the component provides to its consumers/clients. Figure shows the Order component having a second compartment that denotes what interfaces the Order component provides and requires – Even though components are – autonomous units they still may – depend on the services provided – by other components.

Component Diagram Another approach to modeling a component's interfaces: Builds off the single rectangle, with the component's name in it, and places interface symbols connected to the outside of the rectangle. In this second approach the interface symbols with a complete circle (lollipop) at their end represent an interface that the component provides. Interface symbols with only a half circle at their end (sockets) represent an interface that the component requires (in both cases, the interface's name is placed near the interface symbol itself).

Component Diagram Modeling a component's relationships When showing a component's relationship with other components, the lollipop and socket notation must also include a dependency arrow. On a component diagram with lollipops and sockets, note that the dependency arrow comes out of the consuming (requiring) socket and its arrow head connects with the provider's lollipop, as shown in Figure. Assembly connectors are drawn as lollipop and socket symbols next to each other. Drawing these assembly connectors in this manner makes the lollipop and socket symbols very easy to read. Figure 5: A component diagram that shows how the Order System component depends on other components

Component Diagram Figure: This component's inner structure is composed of other components

An example of UML 2.5 component diagram for online shopping.

Contractual interfaces A specification attached to an interface that mutually binds the clients and providers of the components Functional Aspects (API) Pre- and post-conditions for the operations specified by API – Preconditions denoting the constraints which need to be met by the client – Postconditions denoting the constraints which the component promises to fulfill in return – A component may also additionally satisfy global constraints called invariants Non-functional aspects (different constrains, environment requirements, etc.)

Component Model A component model is a definition of standards for component implementation, documentation and deployment – Examples of component models EJB model (Enterprise Java Beans).NET model Corba Component Model The component model specifies how interfaces should be defined and the elements that should be included in an interface definition Different application domains have different needs for component-based systems – Different non-functional properties: performance, security, reliability, scalability, etc.

Elements of a component model

CBSE Describes the principles and practices of systematically engineering software systems from components – CBSE process models vs. classical models CBS lifecycle, reuse approach, Unified Process – Requirements & design Requirements engineering approaches to CBSE Describes Unified Modeling Language (UML) notations to the specification, design, and modeling of components-based software – Component-based software architectures Styles, specification, refinements, and paradigms (e.g. Service- oriented architectures, middleware-induced software architectures, Model-Driven Architectures) Dependability issues in CBSE 38

Summary Component Based Software Engineering – Components – Component Based Design – Component Model – CBSE