ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355...

63
ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) on material based on past ECE 355 notes by Prof. K. Czarneszki.

Transcript of ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355...

Page 1: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

ECE 355: Software Engineering

CHAPTER 2

Unit 4 (Part 2)

Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Page 2: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Course outline

• Unit 1: Software Engineering Basics • Unit 2: Process Models and Software Life Cycles• Unit 3: Software Requirements Unit 4: Unified Modeling Language (UML)• Unit 5: Design Basics and Software Architecture• Unit 6: OO Analysis and Design • Unit 7: Design Patterns• Unit 8: Testing and Reliability • Unit 9: Software Engineering Management and Economics

Page 3: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

UML - Outline

• Introduction• Behavioral modelingStructural modeling

– Static structural diagrams• Class diagrams• Object diagrams

– Implementation diagrams• Component diagrams• Deployment diagrams

• Advanced modeling

Page 4: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

What is structural modeling?

• Structural model: a view of a system that emphasizes the structure of the objects, including their classifiers, relationships, attributes and operations.

Page 5: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Structural Modeling: Core Elements

«interface»

Page 6: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Structural Modeling: Core Elements (cont’d)

Construct Description Syntax

constraint¹ a semantic condition or restriction.

¹ An extension mechanism useful for specifying structural elements.

{constra in t}

Page 7: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Structural Modeling: Core Relationships

Construct Description Syntax

association a relationship between two or moreclassifiers that involves connectionsamong their instances.

aggregation A special form of association thatspecifies a whole-part relationshipbetween the aggregate (whole) and thecomponent part.

generalization a taxonomic relationship between a moregeneral and a more specific element.

dependency a relationship between two modelingelements, in which a change to onemodeling element (the independentelement) will affect the other modelingelement (the dependent element).

Page 8: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Structural Modeling: Core Relationships (cont’d)

Construct Description Syntax

realization a relationship between a specification andits implementation.

Page 9: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Structural Diagram Tour

• Show the static structure of the model– the entities that exist (e.g., classes, interfaces, components, nodes)– internal structure– relationship to other entities

• Do not show temporal information• Kinds

– static structural diagrams• class diagram• object diagram

– implementation diagrams• component diagram• deployment diagram

Page 10: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

UML - Outline

• Introduction• Structural modeling

Static structural diagrams• Class diagrams

• Object diagrams

– Implementation diagrams• Component diagrams

• Deployment diagrams

• Behavioral modeling• Advanced modeling

Page 11: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Static Structural Diagrams

• Shows a graph of classifier elements connected by static relationships.

• kinds– class diagram: classifier view– object diagram: instance view

Page 12: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

UML - Outline

• Introduction• Structural modeling

– Static structural diagramsClass diagrams

• Object diagrams

– Implementation diagrams• Component diagrams

• Deployment diagrams

• Behavioral modeling• Advanced modeling

Page 13: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Class

Window

originsize

Open()Close()Move()Display()

name

attributes

operations

Page 14: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Active class

EventManager

Suspend()Flush()

Thick boundary

Page 15: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Classes: compartments with names

Fig. 3-23, UML Notation Guide

bill no-shows

Reservation

operations

guarantee()cancel ()change (newDate: Date)

responsibilities

match to available rooms

exceptions

invalid credit card

Page 16: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Classes with more detailsPackageName::Agent

Height: FloatVal : Boolean = false<<constructor>>New(p : policy)<<process>>Process(o : order)…

Responsibilities-- determine risk of an order-- handle criteria for fraud

Name: simple, path

Attribute: all, only some, or none

Stereotype: group attributes/ops and put a descriptive prefix.

Responsibility: obligation of a class. free-form text.

Operations: services provided.

Page 17: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Classifiers

• A classifier is a mechanism for describing structural and behavioral features.– Nine classifiers

• Classes, interfaces, datatypes, signals, components, nodes, use cases, subsystems.

– Advanced features• Multiplicity, visibility, signatures, polymorphism

Page 18: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Visibility of a classifier’s attr. & ops.

1. Public: Any outside classifier can use (+).2. Protected: Any descendant of the classifier can use (#).3. Private: Only the classifier itself can use (-).

Toolbar# currentSelection: Tool# toolCount: Integer

+ pickItem(i: integer)- compact()

Page 19: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

(Owner) Scope

1. Instance: Each instance of the classifier holds its own value for the feature.2. Classifier: There is just one value of the feature for all instances of the classifier.

Frame

Header : FrameHeader

uniqueID : Long

instance

classifier

(“static” in Java)

Page 20: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Multiplicity

- Specification of the range of allowable cardinalities an entity may assume.

NetworkController 1

consolePort [2..*] : Port

Page 21: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Classes: method body

Fig. 3-24, UML Notation Guide

report ()

BurglarAlarm

isTripped: Boolean = false

PoliceStation

1 station

*

{ if isTrippedthen station.alert(self)}

alert (Alarm)

Page 22: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Showing more details...

Names of abstract classes and operations shown in italics

Window

display ()

size: Areavisibility: Boolean

hide ()

Window

Window

+default-size: Rectangle#maximum-size: Rectangle

+create ()

+display ()

+size: Area = (100,100)#visibility: Boolean = true

+hide ()

-xptr: XWindow*

-attachXWindow(xwin:Xwindow*)

{abstract,author=Joe,status=tested}

Fig. 3-20, UML Notation Guide

Page 23: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Relationships

• Dependency: • Use to show one thing using or deriving from

another.• Arrow in the direction of thing being depended on.

• Generalization:• Use to show a parent-child relationship.• Child is substitutable for parent (not the other way!)

• Association: (structural relationship)• Objects of one thing are connected to another.• Unary, binary, n-ary.

Page 24: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Relationships

Window

Open()Close()HandleEvent()

Event

DialogBox Control

association

dependency

generalization

DisplayPrompt()…

ConsoleWindow

Page 25: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Generalization: Alternative notations

Fig. 3-47, UML Notation Guide

Shape

SplineEllipsePolygon

Shape

SplineEllipsePolygon

Shared Target Style

Separate Target Style

. . .

. . .

Page 26: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Generalization: Multiple Classification

Fig. 3-48, UML Notation Guide

Vehicle

WindPoweredVehicle

MotorPoweredVehicle

LandVehicle

WaterVehicle

venue

venuepowerpower

SailboatTruck

{overlapping} {overlapping}

Page 27: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

More about association

Person CompanyWorks for

Name an association to describe its nature.Direction triangle: direction of reading.

Person Company

Role: face presented to the other class.

employee employer

Page 28: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

More about association

Person Company

Navigability: An arrow may be attached to the end of the path toindicate that navigation is supported toward the classifier attachedto the arrow.

Works for

Page 29: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

More about association

Person Companyemployee employer

1..**

Multiplicity: How many objects may be connected across an instance of an association.

Multiplicity at one end for each object at the other end, there must be that many objects at the near end.

Exactly one: 1Zero or one: 0 .. 1Many: 0 .. *One or more: 1 .. *Not shown unspecified or suppressed

Page 30: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

AggregationPlain association: peer relationship.Aggregation: whole/part relationship. - An object may be a part of ONLY one aggregate at a time.

1

*

Company

Department

whole

part

Page 31: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

More about association

Composition (composite aggregation): - An object may be a part of ONLY one composite at a time. - Whole is responsible for the disposition of its parts.

Window

Frame*

1

whole

part

Page 32: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Composition vs Aggregation

• Aggregation: does not link the lifetimes of the whole and its parts.

• Composition:• Parts with nonfixed multiplicity can be created after

the composite itself. lifetime

• Such parts can be explicitly removed before the death of the composite. lifetime

• An object may be a part of only one composite at a time. strong ownership

Page 33: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Alternative notations for composition

Fig. 3-45, UML Notation Guide

Window

scrollbar [2]: Slidertitle: Headerbody: Panel

Window

scrollbar title body

Header Panel

2 1 1

Slider

111

Fig. 3-45, UML Notation Guide

scrollbar:Slider

Window

2

title:Header1

body:Panel1

Page 34: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

More about association

Association classes: specify properties of an association.

Company Person

Job

employer employee

* 1..*

DescriptiondateHiredSalary

Page 35: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Ternary Associations

Fig. 3-44, UML Notation Guide

PlayerTeam

Year

Record

goals forgoals againstwinslosses

goalkeeper

season

team

ties

Page 36: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

ConstraintsConstraints add new semantics or change existing rules.

Portfolio

BankAccount

Corporation

{secure}{or}

Person

Page 37: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Constraints and Comments

Fig. 3-17, UML Notation Guide

Member-of

Chair-of

{subset}Person Committee

Person Company

boss

{Person.employer =Person.boss.employer}

employeremployee

0..1

0..1

1

Representsan incorporated entity.

Page 38: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Derived Attributes and Associations

Fig. 3-52, UML Notation Guide

Person

birthdate/age{age = currentDate - birthdate}

Company

Person

Department

WorksForDepartment

/WorksForCompany

{ Person.employer=Person.department.employer }

1

1

1employer

employerdepartment

Page 39: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

More examples of associations

Polygon PointContains

{ordered}

3..1

GraphicsBundle

colortexturedensity

1

1

-bundle

+vertex

Page 40: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

More examples of associations

Fig. 3-40, UML Notation Guide

Person

Manages

JobCompany

boss

worker

employeeemployer

0..1

Job

Account

Person

Corporation

{Xor}

salary

Page 41: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Dependencies

Fig. 3-50, UML Notation Guide

«friend»ClassA ClassB

ClassC

«instantiate»

«call»

ClassD

operationZ()«friend»

ClassD ClassE

«refine»ClassC combines

two logical classes

Page 42: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Realization- A semantic relationship between classifiers.- One classifier specifies a contract that another guarantees.- Realization in two places:

- between interfaces and classes/components that realize them.- between use cases and collaborations that realize them.

- Graphical rendering: cross between generalization and dependency

Page 43: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Interface

• Defines a set of operation specs

• Never defines an implementation(no attributes, no associations, operations not implemented)

• Typically attached to a class or component

Page 44: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Interfaces: Shorthand Notation

Fig. 3-29, UML Notation Guide

+crea te ()+ log in (U serN am e, P assw d)+ find (S to re Id )+ge tP O S to ta ls (P O S id )+upda teS to reTo ta ls (Id ,S a les)+ge t(Item )

-s to re Id : In teger-P O S lis t: L is t

Store

P O S te rm ina l

P O S te rm ina lH om e

<<use>>

S to reH om e

S to re

POSterm inal

I

I

Page 45: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

+create()+login(UserNam e, Passwd)+find(StoreId)+getPOStotals(POSid)+updateStoreTotals(Id,Sales)+get(Item )

-storeId: Integer-POSlist: List

Store

POSterm inal

POSterm inalHom e

<<use>>

StoreHom e

POSterm inal

+getPOStotals(POSid)+updateStoreTotals(Id,Sales)+get(Item )

<<interface>>Store

Interfaces: Longhand Notation

Fig. 3-29, UML Notation Guide

I

I

Page 46: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Types and Implementation Classes

Fig. 3-27, UML Notation Guide

Set«type»

addElement(Object)removeElement(Object)testElement(Object):Boolean

* elements

Object«type»

HashTableSet«implementationClass»

addElement(Object)removeElement(Object)testElement(Object):Boolean

1 body

HashTable«implementationClass»

setTableSize(Integer)

Page 47: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Type

• Like an interface: Defines a set of operation specs

• Unlike an interface: Can have attributes and associations

Page 48: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Class Diagram Example

+getOrderStatus+setOrderStatus+getLineItem s+setLineItem s+getCreditApproved+setCreditApproved

...

OrderBean{abstract}

LineItem{abstract}

Product

1

*

1

*

<<interface>>EntityBean

CreditCard{abstract}

Custom er

PM Order

PM LineItem

PM CreditCard

*

1

*

buyer

order

order

item

item

com m odity

Adapted from Fig. 23 [EJB 2.0].

Page 49: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

UML - Outline

• Introduction• Structural modeling

– Static structural diagrams• Class diagramsObject diagrams

– Implementation diagrams• Component diagrams

• Deployment diagrams

• Behavioral modeling• Advanced modeling

Page 50: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Instances

• Concrete manifestation of an abstraction

• All objects are instances

• Not all instances are objects. (Instance of an association is a “link”)

• To indicate an instance, underline its name

Page 51: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Instances (named, anonymous, multiple)

t: Transaction myCustomer

:Multimedia::AudioStream

:keyCode

multiobject

anonymous

named

Page 52: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Object statemyCustomer

Id : SSN = “432 …..”Active = true

c: Phone[WaitingForAnswer]

Instance with explicit state

Instance with attribute values

Page 53: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Object diagrams

• Model the instances of things contained in class diagrams.

• Show objects are their relationships at a point in time.

• No communication is shown.

Page 54: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

An object diagram

c:Company

d1: Dept d2: Dept

d3: Dept

p: Person : ContactInfo

name = “Sales” name = “R&D”

Name = ….

Name = “jk” Address=“200 U Av.”

Objects, links, notes, constraints

Page 55: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Composite objects

Fig. 3-39, UML Notation Guide

horizontalBar:ScrollBar

verticalBar:ScrollBar

awindow : Window

surface:Pane

title:TitleBar

moves

moves

Page 56: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

UML - Outline

• Introduction• Structural modeling

– Static structural diagrams• Class diagrams

• Object diagrams

Implementation diagrams• Component diagrams

• Deployment diagrams

• Behavioral modeling• Advanced modeling

Page 57: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Implementation Diagrams

• Show aspects of model implementation, including source code structure and run-time implementation structure

• Kinds– component diagram– deployment diagram

Page 58: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

UML - Outline

• Introduction• Structural modeling

– Static structural diagrams• Class diagrams

• Object diagrams

– Implementation diagramsComponent diagrams

• Deployment diagrams

• Behavioral modeling• Advanced modeling

Page 59: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Component Diagram

• Shows the organizations and dependencies among software components

• Component– a modular, replaceable and significant part of a

system that packages implementation and exposes a set of interfaces

• Components may be– implemented by artifacts (e.g., binary, executable,

or script files)

Page 60: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

<<EJBEntity>>Catalog

CatalogHom e

Catalog

CatalogPK

<<EJBSession>>ShoppingSession

ShoppingSessionHom e

ShoppingSession

CatalogInfo

<<file>>CatalogJAR

<<focus>>Catalog

<<auxiliary>>CatalogPK

<<auxiliary>>CatalogInfo

CatalogHom e

Catalog

<<EJBEntity>>ShoppingCart

ShoppingCartHom e

ShoppingCart

Component Diagram

Fig. 3-95, UML Notation Guide

Page 61: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

UML - Outline

• Introduction• Structural modeling

– Static structural diagrams• Class diagrams

• Object diagrams

– Implementation diagrams• Component diagramsDeployment diagrams

• Behavioral modeling• Advanced modeling

Page 62: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Deployment Diagram

• Shows the configuration of run-time processing elements and the software components, processes and objects that live on them

• Deployment diagrams may be used to show which components may run on which nodes

Page 63: ECE 355: Software Engineering CHAPTER 2 Unit 4 (Part 2) Presentation material based on past ECE 355 notes by Prof. K. Czarneszki.

Deployment Diagram

Fig. 3-97, UML Notation Guide