Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML...

36
Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this slide set is not contained in the 3 rd edition of the text book. It is planned for the 4 th edition.

description

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3 From Model Instances to Meta Models Canonical model-instance-relationship: aPerson is an instance of the class Person Thus the class Person is a model for aPerson And aPerson is a model (an abstraction) of a real person Can we generalize this idea?  What is the model for the class Person?

Transcript of Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML...

Page 1: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Usi

ng U

ML,

Pat

tern

s, an

d Ja

vaO

bjec

t-Orie

nted

Sof

twar

e En

gine

erin

gChapter 2,

Modeling with UML:UML 2 Metamodel

Note to Instructor:

The material in this slide set is not contained in the 3rd edition of the text book. It is planned for the 4th edition.

Page 2: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 2

Outline for today• From model instances to meta models• MOF meta model hierarchy• How UML relates to MOF

• Example: Use case diagram meta model• Example: Class diagram meta model

• Different notations for the UML meta model describe the same language

• UML Profiles: Adding new members to the family

Page 3: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 3

From Model Instances to Meta Models

Canonical model-instance-relationship:

aPerson is an instance of the class Person• Thus the class Person is a model for aPerson• And aPerson is a model (an abstraction) of a real

person

PersonaPerson <<instanceOf>>

Can we generalize this idea? What is the model for the class Person?

Page 4: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 4

From Model Instances to Meta ModelsCanonical model-instance-relationship:

• The instance aPerson and the class Person are on different levels of abstraction

• The class Person specifies features that characterize the structure and behavior of Persons

The model for the class Person must characterize the structure and behavior of classes

PersonaPerson <<instanceOf>>

Page 5: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 5

Person <<instanceOf>> <<metaclass>>Class

From Model Instances to Meta Models• Relationship between model and meta-model:

• The meta class Class is a model for the class Person• Since Person is a model (for the instance aPerson),

Class is a meta model (model for models)

PersonaPerson <<instanceOf>>

Page 6: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 6

From Model Instances to Meta Models• At first this might be confusing, so:

• Think about the different layers of abstraction:• Instances are concrete• Models are an abstract description of the instances• Meta models are an abstract description of models• Meta-meta models are an abstract description of

meta models….

Page 7: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 7

Meta: Where does the word come from?• The word comes from the Greek μετά

(metá, "after") • An editor in the first century assembled

Aristotles’ work• In the bookshelf, it was the book that came “after

physics” (meta physiká)• Aristotle did not use the term metaphysics,

instead he called these topics "first philosophy”.• A core topic of the metaphysics book is

ontology• Ontology: The philosophical study of nature. The

investigation of what types of things exist in the world and what relations these things have to each other.

Page 8: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 8

Questions in Ontology• What is existence?• Is existence a property?• Which entities, if any, are fundamental?• How do the properties of an object relate to the object itself?• What features are the essential, as opposed to merely accidental,

attributes of a given object?• How many levels of existence or ontological levels are there?• What is a physical object? • Can one give an account of what it means to say that a physical

object exists?• Can one give an account of what it means to say that a non-

physical entity exists?• What constitutes the identity of an object?• When does an object go out of existence, as opposed to merely

changing?

Source: http://en.wikipedia.org/wiki/Ontology

Page 9: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 9

Another Branch from Philosophy: EpistomologyEpistomology

• Analysis of the nature of knowledge and how it relates to truth

• What do people know?• How do we know what we know?• Also deals with the tools for the production of

knowledge• In computer science and project management,

we call it knowledge management• What is knowledge?• How is knowledge acquired?• How is knowledge externalized?• ….

Page 10: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 10

A Taxonomy of Philosophy (UML Class Diagram)

Philosophy

Metaphysics Epistomology Ethics

Page 11: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 11

Meta Models

Why do we need them?• Meta models can be used for instance to formalize UML

notations:• The UML is a Language, meta models are used to

describe the grammar• The UML meta model describes all models one can

create using UML• The meta model allows to talk about semantics.

Page 12: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 12

Meta Models

OK, so meta models are cool, but how do I create a meta model?

To approach this problem, we will look at the history of UML’s meta model first.

Page 13: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 13

The History of UML’s Meta Model

• UML 1.0 had a lot of semantic problems• The OMG tried to deal with these problems by

formalizing the language• Idea: Use meta modeling!

• The OMG realized that all that was needed to describe meta models was to use a subset of UML class diagram elements

• Insight: To describe any meta model, the UML class diagram notation itself can be used!

Page 14: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 14

Meta Object Facility (MOF)• In UML 2, the OMG introduced the Meta Object

Facility to create a common basis for meta modeling• MOF specification: http://www.omg.org/mof/• The specification describes how models can be

• exported from an application• imported into another model• transported across a network• stored and retrieved from a repository• rendered into different formats• used to generate application code

14

Page 15: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 15

Advantages of MOF Compliant Meta Models• MOF compliant models can easily be compared• MOF compliant models can be exchanged in a

standardized way • XMI (XML Metadata Interchange)

• OMG's XML-based standard format for model transmission and storage

• MOF compliant instances can live in the same metadata repository (data warehousing)

Page 16: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 16

The Meta Object Facility (MOF)We have seen this modeling sequence

instance model meta model…• This sequence could be continued forever• 4 models seem to be enough for most modeling problems

• MOF defines a four-layer meta model hierarchy• Layer M0: Information layer (The Application)• Layer M1: Model layer (The UML model)• Layer M2: Meta model layer (The UML meta model)• Layer M3: Meta-meta model layer (The MOF model)

• MOF and UML are aligned• The UML infrastructure contains all the concepts needed for

the specification of UML and MOF• But MOF is not restricted to UML

• Any meta model which is defined by using MOF is called MOF compliant.

Page 17: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 17

Meta model hierarchy of the MOF (UML-specific)

Layer M0: Run-time Instances• Real instances of the modelsLayer M0 contains concrete run-time instances

• Note that there is a difference between real instance and instance specification!

Page 18: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 18

Meta model hierarchy of the MOF (UML-specific)

Layer M1: UML-modelBy using any UML diagram, we instantiate the UML meta model from Layer 2 and obtain a UML model Layer M1 contains application-specific models

Page 19: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 19

Meta model hierarchy of the MOF (UML-specific)

Layer M2: UML meta model • Models the language UML, i.e., defines concepts like classes, attributes, associations

Layer M2 contains descriptions of elements that are used to describe the models on the model layer

Page 20: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 20

Meta model Hierarchy of the MOF (UML-specific)

Page 21: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 21

Meta model hierarchy of the MOF (UML-specific)

Layer M3: MOF model• The UML meta model is an instance of a yet more abstract model, namely the MOF model

• M3 : M2 ≈ M2 : M1 Layer M3 contains meta-meta models

Page 22: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 22

Meta model hierarchy of the MOF (UML-specific)

Remember that UML is only one possibility of modeling with MOF• We looked at a UML-specific hierarchy• MOF describes meta models in general

Page 23: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 23

Where are we?From model instances to meta modelsMOF meta model hierarchyHow UML relates to MOF

• Example: Use case diagram meta model

• Example: Class diagram meta model• Different notations for the UML meta

model describe the same language• UML Profiles: Adding new members to

the family

Page 24: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 24

How UML relates to MOF

• UML is MOF-compliant:The UML meta model is an instance of the MOF model

• Let’s see the UML meta model in action!

Page 25: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 25

Use Case Diagram Meta Model

*

<<instanceOf>>

<<instanceOf>>

<<instanceOf>>

<<Extend>><<instanceOf>>

<<Include>>

<<instanceOf>>

*

*

1

*11 1

* *

1*

*

1..*

0..10..1

UML Meta Model (Layer M2) (Simplified)UML Model for Use Cases (Layer M1)

Page 26: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 26

Class Diagram Meta Model (simplified)

<<instanceOf>><<instanceOf>>

<<instanceOf>>

<<instanceOf>>

0..1

*

0..1 *

0..1

*

0..12..*

Page 27: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 27

Notations for the UML Meta Model

• The UML meta model defines a language for specifying UML models

• The notation used to depict UML models provides graphical icons representing instances of meta model elements

(Sticky figure represents an Actor)• The notation is a mapping from meta model

elements to model elements(“uml-notation(Actor) = “)

Page 28: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 28

UML Profiles

• A lightweight extension mechanism for UML • Concepts partially present in earlier versions

• Stereotypes• Tagged Values

• Established as a specific meta-modeling technique in UML 2.0

• Contains mechanisms that allow meta classes from existing meta models to be extended

• ability to tailor the UML meta model for different platforms or domains

• consistent with the OMG Meta Object Facility (MOF).

Page 29: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 29

UML Profiles

• Consist of stereotypes, tagged values and constraints

• Customize UML models for particular domains or platforms

• Are applied to elements of the UML meta model (M2 Layer)

• Are developed by manufacturers or standardization organizations (CORBA, .NET)

29

Page 30: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 30

Applying a Stereotype• The attributes of a stereotype are called tagged

values• Applying a stereotype to an instance of a meta

class means instantiating the stereotype• If the stereotype has attributes, you have to provide

values for them • Confused? See following slide…

Page 31: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 31

Applying a Sterotype (ctd)

Page 32: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 32

Applying UML Profiles

• By applying a UML profile, we • Apply stereotypes to meta classes• Get a deeper understanding for the model• Narrow the amount of valid models.

Page 33: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 33

UML Profiles

All models (MOF)

UML models

CORBA models(profile)

SysML models

.NET models(profile)

U2TP (profile)

Page 34: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 34

SysML (Systems Modeling Language)• SysML is a general-purpose modeling language

for systems engineering applications• Supports the specification, analysis, design, verification

and validation of systems and “systems of systems”. • Proposed in 2001 to improve the specification of

functional and nonfunctional requirements• Use Cases allow the specification of requirements

only on a very high level. • Defined as a UML profile • SysML has two new diagrams (requirements

diagrams and parametric diagrams) in addition to the existing UML diagrams

Page 35: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 35

Requirements Diagram• A SysML requirements diagram is a graphical notation that

describes the requirements of a system in a graphical notation

• Requirements can be linked to other requirements• Requirement elements can also be linked to Use Cases

and Components that realize the requirements (enabling traceability of requirements).

Page 36: Using UML, Patterns, and Java Object-Oriented Software Engineering Chapter 2, Modeling with UML: UML 2 Metamodel Note to Instructor: The material in this.

Bernd Bruegge & Allen H. Dutoit Object-Oriented Software Engineering: Using UML, Patterns, and Java 36

Additional Information• MOF Home Page

• http://www.omg.org/mof/• MOF Specification, Current Version 2.0

• http://www.omg.org/technology/documents/modeling_spec_catalog.htm#MOF

• RSS Feed:• feed://www.omg.org/mof/rss/index.xml