ppt - Amnon H. Eden

slimwhimperSoftware and s/w Development

Nov 3, 2013 (3 years and 7 months ago)

95 views

1

Formal Specification of

Object
-
Oriented Design

Amnon H. Eden

Department of Computer Science, University of Essex



Research seminar given at the Department of Computer Science, University of
Essex

25 October, 2003

2

Context

Abstractions

Design Vs. Architecture

3

Levels of Abstraction

Architecture

Design

Implementation

while
(true)
do


c := c
-

1;


d := d + 1;


if c < 0
goto

continue;


continue: ...

4

Software Architecture

An emerging discipline


Origins
: Perry & Wolf [92]



Architectural Styles
”: Shaw & Garlan [96]


Underlying formalisms


Z


Statecharts


finite automata


CSP


Architecture Description Languages (ADLs)


ACME


Rapide


UniCon


Wright,


5

Implementations


Programming languages


Denotational/operational semantics


Computational models


Turing machine, RAM machine, Abstract State
Machines


Formal Languages


Lambda calculus, sigma calculus, …

6

(Object
-
Oriented) Design


Design Methodologies


Notations


Heuristics


Design patterns


In particular: Gamma, Helm, Johnson & Vlissides
[94]


Formalization?

7

Objectives


Conceptual:

1.
A formal ontology for OOD

2.
A formal specification language


Patterns


Libraries & frameworks

3.
Elegance

4.
Reasoning capabilities


Pragmatic


Full integration with existing programming practice


Tool support


Visual specifications

8

Design Models

A Computational Model

9

Program & Design Model

class

PMButton {}

class

WinButton {}


void

exit() {}

interface

Creator {}


class

WinCreator:
extends

Creator {

WinButton_FactoryMethod() {


//
Creation
:



new

WinButton;


//
Invocation
:



exit();


}

}

class

PMCreator:
extends
Creator {

PMButton_FactoryMethod() {


//
...



new

PMButton;

}

}

PM
-
creator
Win
-
creator
Win-
button
Win-button-
factory-method
exit
PM
-button-
factory-method
defined-in

defined-in

creator
PM-button
A
10

Denotation
Function

Given
L


OOPL
,

A Denotation: M
odelling function

D

:
L




Universe
D

,

Relations
D


Methods

Invoke

Create

Inherit

Classes

Classes, methods

Abstract, Inherit,

Create, Call, …

11

Axiomatic Semantics

Building Blocks of O
-
O Design

12

Hierarchy

AbstractFactory



C

ConcreteFactories



P(
C





Abstract(
AbstractFactory
)

Inherit

(
ConcreteFactories
,
AbstractFactory
)

Abastract
Factory
Concrete
Factories
A


Factories
Factories



H

13

Clans, Selection Operator

PrimitiveOperation
s1


S

Classes



P(
C





PrimitiveOperation
1

Classes

Classes
Primitive
Operation1
14

Isomorphic Relations

Factories
Create
ProductA
ProductA
Create

Factories, ProductA



H


CreateProductA



S



Create

(
CreateProductA

Products
,
ProductA
)

15

LePUS

Terms

Predicates

Operator

16

Terms


Constants
: Belong to a given domain

EJBContext


C


Variables
: Range over a given domain

bean

:

C

17


/
SameSignature
S
bar

x
foo(int)
A::foo(int)
B::foo(int)
A::bar()

X

A::bar()

X
Auxiliary Domains



P
(
X
)
Power set of
X



P
(
X
)



{
x

|
x

X

}





H
Domain of all hierarchies



H


{
h

P
(
C
) |
Hierarchy(h)
}





S
Domain of function

signatures

18

Predicates

R

(S,T)


Total
(R,S,T)



"
s

S


$
t

T



R
(
s
,
t
)

R

(S,T)


Isomorphic
(R,S,T)



"
s

S


$
t

T



R
(
s
,
t
)


"
t

T


$
s

S



R
(
s
,
t
)

Hierarchy
(h)



Abstract(r)


"
c

h
,
c

r


Inherit
+

(c,r)


Clan
(
F
,
C
)



DefinedIn

(
F
,
C
)


"
f
1
,f
2

F



SameSignature

(f
1
,f
2
)

Tribe
(
F
,
C
)



"
f

F



Tribe
(f,
C
)

19

Selection Operator


Given a signature
s
, set of signatures
S
:


s

C

Selects methods in
c

C

with signature
s


Result is a clan


S

C

Selects clans in
c

C

with signature
s


Result is a tribe

20

Specifications in LePUS

Design Patterns

Object
-
Oriented Design

21

Factory
-
Method
Pattern

Products
Creators
factory-methods


Products
Products,
Creators

:
H

FactoryMethods
:

S


Produce

(FactoryMethods

Creators
,Products)

Return

(FactoryMethods

Creators
,Products)


22

Observer

Pattern

subject
Observers
Update
(
subject
)
concrete-
subject
getState
SetState
attach
(
observers
)
notify
ReferenceToMany

(subject,Observers)

Inherit(subject, concrete
-
subject)

FirstArg

(attach,observers)

FirstArg

(detach,observers)

FirstArg


update

observers,subject)

Invoke

(SetState

concrete
-
observer, notify

subject)

Invoke

(notify

subject,update

Obervers)

Invoke

(update

Obervers,attach

subject)

Invoke

(update

Obervers,detach

subject)

Assign(attach

subject,sybject,observers)

subject, concrete
-
subject
:

C

observers

:

H

attach, detach, notify, update, get
-
state

:

S

SetState

:

P
(
S
)

23

Visitor

Pattern

Visitors
Visit
(
Elements
)
Elements
accept
(
Visitors
)
Concision
: Three isomorphic
relations, one total relation, and
many pages of documentation in
one diagram

FirstArg

(Accept

Elements,Visitors)

FirstArg

(
Visit

Visitors,Elements)

Invocation

(Accept

Elements,Visit

Visitors)

Invocation

(Visit

Visitors,Elements)

Elements, Visitors

:

H

Accept

:

S

Visit

:

P
(
S
)

24

Documentation

Taken from the description of the Enterprise JavaBeans™:

“Every bean obtains an

EJBContext

object, which is a
reference directly to the container”

“A bean's home interface may declare zero or more
create()

methods, each of
which must have corresponding
ejbCreate
()

and

ejbPostCreate()

methods in the bean class.


Bean
EJB
Context
I
Bean
HomeImp
Create


Bean
G
ejbCreate
ejbPostCreate
BeanHome
Interface
I
Create


Bean
25

Enterprise JavaBeans™

java.ejb.
EJBObject
Bean
BeanInterface
I
Methods
EJBContext
setEntity
Context
BeanStub
Methods
G
Remote
Methods
I
BeanSkeleton
Methods
G
I
Clients
Methods
26

Reasoning

27

Conformance
(also
Refinement
)

observer
observable
I
Views
update
(
Observable
)
addObserver
(Observer)
notify
Observers
setChanged
ctors
model
Accessors
Mutators
update
(Observable)
subject
Observers
Update
(
subject
)
concrete-
subject
getState
SetState
attach
(
observers
)
notify
“Model
-
View
-
Controller”
in Java
Swing

... Conforms to the
Observer

pattern

28

creator
,
product

:

C


factory
-
method

:

S



Create

(
factory
-
method

factory
,
product
)

Return
(
factory
-
method

factory
,
product
)

Projection

product
factory
Creates
Return
factory-
method
product
factory
Creates

Return

factory-
method
creator
,
product

:

P(
C
)



factory
-
method
:

S



Create

(
factory
-
method

factory
,
product
)

Return

(
factory
-
method

factory
,
product
)

29

Products
Creators
factory-methods


Products
Creators
Factory-Methods

Products
Products
Factory Method
Vs.

Abstract Factory

The difference is merely in the order of sets


Isomorphisms are preserved

30

Two
-
Tier Programming

Integrating
Intentional

With
Extensional

programming

31

Multiple Representations

TextViews
observer
observable
I
ScrollViews
Update
(
Observable
)
addObserver
(Observer)
notify
Observers
C'tor
model
Accessors
Mutators
update
(Observable)
Update
(
Observable
)
C'tor
subject
observers
update
(
subject
)
attach
(
observers
)
detach
(
observers
)
notify
concrete-subject
Set-state
get-State
public class
Observable {


public

synchronized void



addObserver(Observer o)


{ ... }


public void


notifyObservers(Object arg)


{ ... }

}

class

MyObservable


extends

Observable {

public void
access()


{ ... }

public void
mutate() {


...


notifyObservers();


}

}

intrface

Observer {


void

update(Observable);

}

class

ScrollView


extends

Scrollbar


implements

Observer

{




}

class

TextView
extends

TextField


implements

Observer {

public



TextView(Counter c)


{ ... }

public void


update(Observable o,


Object counter)


{ ... }

}

Source Code

Pattern

Design Model

observable
observers
update
(
observable
)
attach
(
observers
)
notify
model
Mutators
Accessors
Instance of a pattern

Extensional
tier

Intentional
tier

32

subject
observers
update
(
subject
)
attach
(
observers
)
detach
(
observers
)
notify
concrete-subject
Set-state
get-State
Coordination

TextViews
observer
observable
I
ScrollViews
Update
(
Observable
)
addObserver
(Observer)
notify
Observers
C'tor
model
Accessors
Mutators
update
(Observable)
Update
(
Observable
)
C'tor
public class
Observable {


public

synchronized void



addObserver(Observer o)


{ ... }


public void


notifyObservers(Object arg)


{ ... }

}

class

MyObservable


extends

Observable {

public void
access()


{ ... }

public void
mutate() {


...


notifyObservers();


}

}

intrface

Observer {


void

update(Observable);

}

class

ScrollView


extends

Scrollbar


implements

Observer

{




}

class

TextView
extends

TextField


implements

Observer {

public



TextView(Counter c)


{ ... }

public void


update(Observable o,


Object counter)


{ ... }

}

Source Code

Pattern

Design Model

observable
observers
update
(
observable
)
attach
(
observers
)
notify
model
Mutators
Accessors
Instance of a pattern

Coordination

33

Coordination: Part I

TextViews
observer
observable
I
ScrollViews
Update
(
Observable
)
addObserver
(Observer)
notify
Observers
C'tor
model
Accessors
Mutators
update
(Observable)
Update
(
Observable
)
C'tor
public class
Observable {


public

synchronized void



addObserver(Observer o)


{ ... }


public void


notifyObservers(Object arg)


{ ... }

}

class

MyObservable


extends

Observable {

public void
access()


{ ... }

public void
mutate() {


...


notifyObservers();


}

}

intrface

Observer {


void

update(Observable);

}

class

ScrollView


extends

Scrollbar


implements

Observer

{




}

class

TextView
extends

TextField


implements

Observer {

public



TextView(Counter c)


{ ... }

public void


update(Observable o,


Object counter)


{ ... }

}

Source Code

Design Model

Parsing/

Reverse engineering

34

Coordination: Part II

TextViews
observer
observable
I
ScrollViews
Update
(
Observable
)
addObserver
(Observer)
notify
Observers
C'tor
model
Accessors
Mutators
update
(Observable)
Update
(
Observable
)
C'tor
Design Model

observable
observers
update
(
observable
)
attach
(
observers
)
notify
model
Mutators
Accessors
Instance of a pattern

<
observers
,
observer
,
TextView
,
ScrollView
>

<
observers
.update
,


observer
.update
,


TextView
.update
,

ScrollView
.update
>



35

subject
observers
update
(
subject
)
attach
(
observers
)
detach
(
observers
)
notify
concrete-subject
Set-state
get-State
Coordination: Part III

observable
observers
update
(
observable
)
attach
(
observers
)
notify
model
Mutators
Accessors
Pattern

Instance of a pattern

<
Observers
,
Observers
>

<
subject
,
observable
>

<
concrete
-
subject
,
model
>

<
Set
-
state
,
Mutators
>

<
Observers.update
,


Observers.update
>





36

Tool Support


The Software Architecture Lab, Concordia U.


Architectural Reflection projects:


Visualization tool


Specifications with a graphic editor


Parser for symbolic specifications


Reverse engineering from Java


In collaboration with IBM Research Centre, Haifa

pattern

AbstractFactory
is




FactoryMethods
in

P2(F),


Creators
in

H,


Products
in

P(H)


where



tribe (FactoryMethods, Creators),


production <
-
> (FactoryMethods, Products),


return_type <
-
> (FactoryMethods, Products).

37

Implementation in Prolog


LePUS

is readily implemented in PROLOG:





Supported activities:


Validation


Application


Recognition


Discovery

FactoryMethod(hierarchy_structure (Creators_root, Creators_Leaves),


hierarchy_structure (Products_root, Products_Leaves),


FactoryMethods) :
-


clan(FactoryMethods,[Creators_root|Creators_Leaves]),


isomorphic(production, FactoryMethods,


[Products_root|Products_Leaves]).

38

Limitations


“Design Models”: Static properties


Cannot give behavioural specifications


Relations are abstract


Cannot represent more than

one relationships between

(
Journey, Location
)

Journey

Location

origin

destination

39

Future Directions


Sample specifications


Common libraries & Frameworks


Behavioural specifications


Use Gurevich’s
Abstract State Machines
(“evolving
algebras”)


Tool support


Forward and reverse engineering


Formalization of the visual language


Design visual primitives & operators


Visual semantics & syntax

40

References

D. E. Perry, A. L. Wolf (1992). "Foundation for the Study of
Software Architecture."
ACM SIGSOFT Software Engineering
Notes

Vol. 17, No. 4.

M. Shaw, D. Garlan (1996).
Software Architecture: Perspectives
on an Emerging Discipline
. Prentice Hall.

E. Gamma, R. Helm, R. Johnson, J. Vlissides (1994).
Design
Patterns: Elements of Reusable Object Oriented Software
.
Addison
-
Wesley

41

Bibliography

Full text:
http://www.eden
-
study.org
/

Ontology
: A. H. Eden Y. Hirshfeld, "Principles in Formal
Specification of Object Oriented Architectures.“
CASCON
2001
,
November 5
-
8, 2001, Toronto, Canada.

LePUS
:
A. H. Eden (2001). "Formal Specification of Object
-
Oriented Design."
International Conference on
Multidisciplinary Design in Engineering CSME
-
MDE 2001
,
November 21
-
22, 2001, Montreal, Canada.

Visual Notation
: A. H. Eden (2002). “
Design Schemata.”

Submitted
:
Annals of Software Engineering
, Special Volume
on Software Visualization.

42

Bibliography (
Cont.
)

The
Patterns’ Wizard
.
A. H. Eden, J. Gil, A. Yehudai (1997).
"Precise Specification and Automatic Application of Design
Patterns."
Proceedings of the
Twelve IEEE International
Automated Software Engineering Conference

(ASE 1997)
, Lake
Tahoe, Nevada Los Alamos, IEEE Computer Society Press,
Nov. 3
-
5, 1997.

Two
-
Tier Programming
. A. H. Eden, J. Jahnke (2002)
"Coordinating Software Evolution Via Two
-
Tier Programming,"
Coordination 2002
,
Lecture Notes in Computer Science
2315
,
pp. 149
-
159. Berlin: Springer
-
Verlag.

Intention/Locality
.
A. H. Eden (2002). “Architecture, Design,
Implementation.” Submitted:
Journal of
Software and System
Modeling (SoSyM)
. Berlin: Springer.