gn i D a t s i L ca u L I A - Istituto Nazionale di Fisica...

Post on 23-May-2020

1 views 0 download

transcript

Intr

oduz

ione

al

l’A

nali

si e

Des

ign

ad o

gget

ti

Intr

oduz

ione

al

l’A

nali

si e

Des

ign

ad o

gget

ti

Luc

a L

ista

Il ci

clo

di v

ita d

el s

oftw

are

Il ci

clo

di v

ita d

el s

oftw

are

•R

equi

rem

ents

•A

naly

sis

•D

esig

n•

Prod

uctio

n•

Tes

ting

•M

aint

enan

ce

Il m

odel

lo W

ater

fall

Il m

odel

lo W

ater

fall

Ana

lysi

sA

naly

sis D

esig

nD

esig

n Prod

uctio

nPr

oduc

tion

Tes

ting

Tes

ting

Req

uire

men

tsR

equi

rem

ents

Il m

odel

lo E

volu

tion

ary

Il m

odel

lo E

volu

tion

ary

Req

uire

men

tsR

equi

rem

ents

Ana

lysi

sA

naly

sis

Des

ign

Des

ign

Prod

uctio

nPr

oduc

tion

Tes

ting

Tes

ting

Wat

erfa

ll vs

Evo

lutio

nary

Wat

erfa

ll vs

Evo

lutio

nary

Evo

luti

onar

y

•B

revi

cic

li di

svi

lupp

o co

mpl

eti

•Sc

elte

bas

ate

sulla

val

utaz

ione

de

i ris

chi

•In

tegr

azio

ne c

ontin

ua

Wat

erfa

ll

Dec

ompo

sizi

one

com

plet

a de

l si

stem

a da

ll’in

izio

Proc

esso

per

sin

goli

pass

i

Inte

graz

ione

alla

fine

Un

prod

otto

com

plet

o è

disp

onib

ile

solo

alla

fine

Un

prot

otip

o fu

nzio

nant

e è

disp

onib

ile si

n da

ll’in

izio

Ana

lysi

sA

naly

sis

•C

ompr

ensi

one

e raz

iona

lizza

zion

ede

i req

uisi

ti –

la fo

rmul

azio

ne d

ei r

equi

siti

è sp

esso

inco

mpl

eta,

am

big

uao

impr

ecis

a–

chia

rifi

ca d

ei r

equi

siti

e ve

rifi

ca d

ella

con

sist

enza

•C

ostr

uzio

ne d

el m

odel

lo•

Iden

tifi

cazi

one

delle

cla

ssi d

egli

ogge

tti r

ileva

nti

per

l’ap

plic

azio

ne–

Evi

tare

rife

rim

enti

a st

ruttu

re in

form

atic

he, c

ome

arra

y,

list

e, e

tc. c

he sa

rann

o tr

atta

te p

iù ta

rdi

•U

so d

ell’

astr

azio

ne–

Rim

anda

re i

detta

gli a

una

fase

succ

essi

va

•Id

enti

fica

zion

e de

lle re

lazi

oni t

ra c

lass

i•

I no

mi d

i cla

ssi,

met

odi e

attr

ibut

i son

o im

port

anti!

Com

e id

entif

icar

e le

cla

ssi

Com

e id

entif

icar

e le

cla

ssi

•D

all’

anal

isi t

estu

ale

dei r

equi

siti

, le

clas

si p

osso

no

es

sere

iden

tific

ate

con

i pi

ù im

por

tant

i sos

tant

ivi

•Po

sson

o sp

ecif

icar

e si

a ra

ppr

esen

tazi

oni d

i ent

ità

fisi

che

(im

pieg

ato,

libr

o, e

cc.)

che

co

ncet

ti (s

upe

rfic

ie, t

raie

ttori

a, p

agam

ento

, pre

stito

, ecc

.)

•G

li o

gge

tti d

evo

no

aver

e re

spo

nsab

ilità

chi

are

all’

inte

rno

del m

ode

llo

•L

e re

spo

nsab

ilità

dev

on

o es

sere

eq

uam

ente

di

stri

buite

tra

le d

iver

se c

lass

i

Err

ori d

a ev

itare

Err

ori d

a ev

itare

•E

limin

are

clas

si ri

don

dant

i–

dupl

icat

i di c

lass

i già

def

inite

(ste

sse

funz

iona

lità:

in

vest

itore

, com

prat

ore ,

ven

dito

re),

cla

ssi i

rrile

vant

i (s

cars

e fu

nzio

nalit

à: p

eso,

alte

zza,

pre

zzo)

, cla

ssi d

i so

la im

plem

enta

zion

e ( e

lenc

o li

bri ,

ecc.

)

•E

vita

re c

lass

i co

n tr

oppe

resp

onsa

bilit

à–

Meg

lio s

pezz

arle

in c

lass

i più

pic

cole

, con

ruol

i più

ch

iari

e de

fini

ti

•E

vita

re c

lass

i che

sian

o so

lo c

onte

nito

ri di

dat

i–

Ese

mpi

o: s

olo

met

odi getX()

, setX()

: equ

ival

e ad

av

er d

ichi

arat

o X

attr

ibut

o pu

bblic

o. L

a re

spon

sabi

lità

sull’

uso

di X

ce l’

haqu

alch

e al

tro

ogge

tto!

Iden

tific

azio

ne d

ei m

etod

i e a

ttrib

uti

Iden

tific

azio

ne d

ei m

etod

i e a

ttrib

uti

•I

prim

i can

dida

ti m

etod

i pos

sono

ess

ere e

strat

to d

ai

prin

cipa

li ve

rbin

ella

des

criz

ione

testu

ale

dei r

equi

siti

•G

li at

trib

uti r

appr

esen

tano

le p

rinc

ipal

i pro

prie

tàde

gli

ogge

tti–

Util

izza

re n

uovi

og

getti

agg

rega

ti pe

r le

pro

prie

tà c

ompl

esse

che

m

erita

no u

n’id

entit

à in

dipe

nden

te (e

s.: l

’aut

odi

un

aut

ista

, il

cont

oco

rren

te b

anca

rio

di u

n ri

spar

mia

tore

)

–R

iman

dare

la d

escr

izio

ne d

egli

attr

ibut

i nec

essa

ri pe

r de

ttagl

i di

im

plem

enta

zion

e

•C

erca

re o

pera

zion

i com

uni a

più

cla

ssi e

ver

ific

are

se sia

poss

ibile

cre

are

una

clas

se a

stra

tta

Rap

port

o tr

a cl

ient

e se

rver

Rap

port

o tr

a cl

ient

e se

rver

Vis

ta d

el c

lien

t•

Il cl

ient

sa d

i cos

a ha

bi

sogn

o, e

che

vuol

e ri

chie

dere

al s

erve

r

•N

on g

li in

tere

ssa

come

il se

rver

fa

il la

voro

•N

on g

li in

tere

ssa

se il

lavo

ro lo

fai i

l ser

ver

o se

lo

del

ega

(es.

: pro

xy)

Vis

ta d

el s

erve

r•

Il se

rver

sa

qua

le la

voro

de

ve sv

olge

re a

rich

iesta

•N

on g

li in

tere

ssa

chi

effe

ttua

la ri

chie

sta

•Se

com

e sv

olge

re il

lav

oro

o a

chi c

hied

ere

per

svol

gere

le p

arti

che

non

sa co

mpl

etar

e

Ass

egna

re R

espo

nsab

ilità

Ass

egna

re R

espo

nsab

ilità

•A

naliz

zare

il r

uol

ode

i var

i og

getti

•C

onc

entr

arsi

sul

com

por

tam

ento

e n

on

sulla

ra

ppr

esen

tazi

one

•D

efin

ire

le in

terf

acce

(le

ope

razi

oni c

he so

ddi

sfan

o le

re

spon

sabi

lità)

pri

ma

Un

a c

orre

tta

ass

egn

azio

ne d

elle

res

po

nsa

bilità

è la

chi

ave

di u

n a

bu

on

a m

odu

lari

tàe

rius

o

Col

labo

razi

one

tra

clas

siC

olla

bora

zion

e tr

a cl

assi

•L

e re

spo

nsab

ilità

van

no

sudd

ivis

e tr

a i v

ari o

gge

tti

del s

iste

ma

•N

on

dev

e es

iste

re u

n co

ntro

llo c

entr

aliz

zato

–U

n og

gett

o ch

e sv

olge

tutte

le o

pera

zion

i e u

sa og

getti

ch

e si

ano

solo

con

teni

tori

di d

ati e

quiv

ale

a un

prog

ram

mar

e in

term

ini d

i dat

i e fu

nzio

ni!

•U

n o

gge

tto d

eve

com

pier

e le

pro

prie

re

spon

sabi

lità

e del

egar

e ad

altr

i ope

razi

oni

spec

ific

he–

Leg

ge d

i Dem

eter

: non

usa

te o

gget

ti lo

ntan

i:In

vece

di: stockMarket.stocklist().add(stock);

usar

e:

stockMarket.add(stock);

Iden

tific

azio

ne d

elle

resp

onsa

bilit

àId

entif

icaz

ione

del

le re

spon

sabi

lità

•O

gni

cla

sse

deve

tent

ate

di r

ifiu

tare

le

resp

onsa

bilit

à–

Dov

rei?

(Non

sono

io c

he lo

dev

o fa

re!)

–Po

trei

? (

Non

ho l

e ca

ratte

rist

iche

per

far

lo!)

•C

erca

te d

i far

e p

oco

lavo

ro–

Se u

na c

lass

e ha

dov

uto

acce

ttare

una

re

spon

sabi

lità

può

cerc

are

di f

ar f

are

il la

voro

a

qual

che

altr

o og

gett

o

•Po

tenz

iate

i co

llab

orat

ori,

no

n in

terf

erite

Iden

tific

azio

ne d

elle

rela

zion

iId

entif

icaz

ione

del

le re

lazi

oni

•C

erca

re c

olla

bor

azio

ni

•C

erca

re a

ggre

gazi

oni

•C

erca

re g

ener

aliz

azio

ni

Com

e u

n c

lien

tcon

osce

il su

o se

rvic

epr

ovid

er?

•E

vita

re le

rela

zio

ni i

nut

ili e

di e

cced

ere

nelle

di

pend

enze

Rag

nate

le d

i dip

ende

nze

rend

ono r

igid

o il

codi

ce!

Scel

ta d

elle

pos

sibili

rel

azio

niSc

elta

del

le p

ossib

ili r

elaz

ioni

Lo

gich

e

•G

ener

aliz

zazio

ne: E

’ u

n..

•A

ggr

egaz

ione

: Ha

•D

ipen

denz

a: C

on

osce

Impl

emen

tazi

one

•E

redi

tari

età

•Is

tanz

iazi

one

di t

empl

ate

•C

omp

osiz

ione

b

y va

lue

•C

omp

osiz

ione

b

y re

fere

nce

Ave

reo

Ess

ere

Ave

reo

Ess

ere

sottot

ipi p

osso

no

ess

ere u

sati

ogni

vol

ta c

he è

ri

chie

sta

la c

lass

e d

i bas

e.

•U

sare

ere

dita

riet

àse

è r

ichi

esto

il p

olim

orfi

smo

•M

ai m

odi

fica

re il

com

por

tam

ento

del

la c

lass

e di

ba

se p

er m

otiv

i ind

otti

dalle

sotto

clas

si c

oncr

ete.

•In

C+

+, l’

ered

itari

età

pu

bbl

ica

seg

ue il

“P

rinc

ipio

di L

isko

v”:

Ere

dita

riet

à e r

i -us

o d

el c

odic

eE

redi

tari

età

e ri -

uso

del

cod

ice

•A

ttenz

ione

! L

’ ere

dita

riet

àpu

ò e

sser

e us

ata

per

evita

re d

i ris

criv

ere

codi

ce ch

e es

iste

già

in

altr

e cl

assi.

Que

sto

non

è O

O e

d è

da

evita

re!

•L

’agg

rega

zion

esp

esso

risp

onde

meg

lio a

qu

esta

esi

genz

a.

•Se

il r

appo

rto

fra

due

ogge

tti è

del

tip

o:–

èal

lora

si u

sa l’

ered

itari

età;

–ha

allo

ra si

usa

l’ag

greg

azio

ne.

Ave

reo

Ess

ere

Ave

reo

Ess

ere

•Investor: è

una Strategy

o ha

una

Strategy

•StockMarket: è

un vector<Stock>

o ha

un vector<Stock>

•Auto: h

a4

Ruote

o è

4 vo

lte u

na Ruota

(im

poss

iblie

in C

++,

tipi

co in

EIF

FE

L)

Com

posi

zion

e:by

val

ueo

by

refe

renc

eC

ompo

sizi

one:

by v

alue

o b

y re

fere

nce

•T

ipi s

empi

ci( int, d

ouble, …

): b

y va

lue

•Pa

rte

dello

sta

todi

un

og

getto

: b

y va

lue

•U

n o

gge

tto v

iene

con

divi

so:

by

refe

renc

e

•A

lloca

to r

un

tim

e:

by

refe

renc

e

•U

sato

pol

imor

fica

men

te:

by

refe

renc

e

Des

ign

Des

ign

•A

vvic

inar

e il

mo

dello

ad

og

getti

del

l’an

alis

i ai

conc

etti

info

rmat

ici

•A

ggi

unt

a di

nuo

vi o

gge

tti i

nter

ni n

eces

sari

per

l’im

plem

enta

zion

e

•E

spre

ssio

ne d

elle

ope

razi

oni

ide

ntif

icat

e in

fase

di

anal

isi i

n te

rmin

i di a

lgor

itmi

•Su

ddi

visi

one

delle

ope

razi

oni

com

ples

se in

op

eraz

ioni

più

sem

plic

i–

da d

eleg

are

ad a

ltri o

gget

ti

•Sc

elta

del

le st

ruttu

re d

ati

Cic

lo d

i Des

ign

Cic

lo d

i Des

ign

Spe

cify

Sem

anti

cs

Spe

cify

Sem

anti

cs

Iden

tify

Obj

ects

an

d C

lass

es

Iden

tify

Obj

ects

an

d C

lass

es

Spe

cify

inte

rfa

ces

and

impl

emen

tatio

n

Spe

cify

inte

rfa

ces

and

impl

emen

tatio

n

Iden

tify

Rel

atio

nshi

ps

Iden

tify

Rel

atio

nshi

ps

Iter

azio

ni s

ul D

esig

nIt

eraz

ioni

sul

Des

ign

•D

opo

ogni

cic

lo b

isog

na a

naliz

zare

i ri

schi

, la

stab

ilità

e la

com

ples

sità

delle

cla

ssi

•Se

una

cla

sse

è tro

ppo

com

ples

sa c

onvi

ene

divi

derl

a

•A

d o

gni

cic

lo il

num

ero

di m

odif

iche

dev

e di

min

uire

•A

rchi

tettu

re tr

oppo

com

ples

se d

evon

o es

sere

mod

ular

izza

te

Prod

uzio

nePr

oduz

ione

•C

odi

fica

, im

plem

enta

zio

ne d

el m

ode

llo

•N

on

sopr

avva

luta

re q

uest

a fa

se: r

ichi

ede

min

ore

sfor

zo s

e le

fasi

pre

cede

nti s

ono

fatte

ben

e

Su

dd

ivis

ion

e d

el t

emp

o p

er il

pri

mo

cic

lo

Ana

lysi

s30

%

Pro

d.15

%Tes

ting

20%

Des

ign

35%

Tes

tT

est

•D

ebug

gin

g :è

ovv

io…

il c

odi

ce n

on

dev

e da

re

erro

ri.

•U

se c

ases

: spe

cifi

can

o il

com

por

tam

ento

del

si

stem

a in

una

regi

one.

•Sc

enar

i : so

no

esem

pi c

onc

reti

di u

se c

ases

. Per

de

fini

zion

e se

tutti

gli

scen

ari s

on

o so

ddi

sfat

ti co

rret

tam

ente

il t

est è

pos

itivo

.

Use

Cas

ese

Scen

ari

Use

Cas

ese

Scen

ari

•U

no U

seC

ase

spec

ific

a al

cuni

dei

co

mpo

rtam

enti

rich

iest

i al s

iste

ma

•U

noSc

enar

ioè

una

real

izza

zione

con

cret

adi

uno

use

case

in u

na p

artic

olar

e ci

rcos

tanz

a–

Scen

aris

eco

nda

ripo

sson

o e

sser

e us

ati p

er

rap

pres

enta

re u

na v

aria

zio

nedi

un

tem

a di

un

o

scen

ario

pri

ncip

ale

(wh

at if

...)

Met

odi

di s

vilu

ppo

del

sof

twar

eM

eto

di d

i svi

lupp

o d

el s

oftw

are

Un

met

odo

com

pren

de:

•U

na n

otaz

ione

mez

zo c

omu

ne p

er e

spri

mer

e st

rate

gie

e dec

isio

ni

•U

n p

roce

sso

spec

ific

a co

me

deve

avv

enir

e lo

svi

lupp

o

Met

odi

Obj

ect O

rien

ted

Met

odi

Obj

ect O

rien

ted

–B

ooch

Met

hod

by G

rady

Bo

och

–O

MT

by J

im R

umba

ugh

–O

bjec

tory

(Use

Cas

es)

by I

var

Jaco

bso

n

–C

RC

by

R.W

irfs

-Bro

ck

•D

i più

rece

nte

intr

oduz

ione

: UM

L–

uno

sta

nda

rd O

MG

(Obj

ectM

anag

emen

t Gro

up),

da

l no

vem

bre

1997

Gra

dy B

ooch

Jim

Rum

baug

h

Ivar

Jac

obso

n

Un

ese

mpi

o co

ncre

toU

n e

sem

pio

conc

reto

•R

equi

siti:

–R

ealiz

zare

una

sim

ulaz

ione

di u

n m

ode

llo d

i m

erca

to a

zio

nari

o. D

iver

si i

nves

titor

i si

scam

bian

o ti

toli

su u

n m

erca

to a

zio

nari

o. G

li in

vest

itori

deci

don

o se

ven

dere

o a

cqui

star

e in

ba

se a

pro

prie

stra

tegi

e.

–Si

vu

ole

mis

urar

e •

l’an

dam

ento

dei

tito

li su

l mer

cato

•qu

ali s

ono

le st

rate

gie

più

redd

itizi

e

Poss

ibili

can

dida

ti cl

assi

Poss

ibili

can

dida

ti cl

assi

•R

equi

siti:

–R

ealiz

zare

una

sim

ulaz

ione

di u

n m

ode

llo d

i m

erca

to a

zio

nari

o. D

iver

si i

nves

titor

isi

scam

bian

o ti

toli

su u

n m

erca

to a

zio

nari

o. G

li in

vest

itori

deci

don

o se

ven

dere

o a

cqui

star

e in

ba

se a

pro

prie

stra

tegi

e.

–Si

vu

ole

mis

urar

e •

l’an

dam

ento

dei

tito

lisu

l mer

cato

•qu

ali s

ono

le st

rate

gie

più

redd

itizi

e

Iden

tific

hiam

o cl

assi

e og

getti

Iden

tific

hiam

o cl

assi

e og

getti

•I

prim

i can

dida

ti cl

assi

poss

ono

ess

ere

pres

i da

l voc

abol

ario

del

pro

blem

a ch

e st

iam

o

anal

izza

ndo.

Ese

mpi

o:–

Inve

stito

re, T

itolo

, Ord

ine,

Str

ateg

ia

Ana

lizzi

amo

un p

aio

di s

cena

riA

naliz

ziam

o un

pai

o d

i sce

nari

•C

ome

deci

dere

se v

ende

re o

acq

uist

are

un

titol

o

•C

ome

gest

ire

gli

ordi

nisu

l mer

cato

Dec

ider

e se

ven

dere

o a

cqui

star

e un

tito

loD

ecid

ere

se v

ende

re o

acq

uist

are

un ti

tolo

•A

cqui

sire

info

rmaz

ioni

sul

tito

lo•

Ana

lizza

re le

pre

staz

ioni

del

tito

lo–

Gua

dag

no,

per

dita

, sto

ria…

.

•A

naliz

zare

i pr

opri

guad

agni

o le

pro

prie

pe

rdite

•D

ecid

ere

in b

ase

alla

stra

tegi

a–

Qua

nto

acq

uist

are/

ven

dere

–A

che

pre

zzo

pia

zzare

l’or

dine

Ges

tire

gli

ordi

niG

estir

e gl

i or

dini

•C

ont

rolla

re g

li or

dini

rela

tivi a

cia

scu

n ti

tolo

•V

erif

icar

e se

ci s

on

o o

rdin

idi v

endi

ta e

di

acq

uist

o c

ompa

tibili

–L

’off

erta

di v

endi

ta d

eve

aver

e un

pre

zzo

min

ore

o ug

uale

a qu

ello

del

l’of

fert

a di

acq

uist

o

•E

seg

uire

gli

ordi

ni–

Poss

ibili

tà d

i ese

cuzi

one

parz

iale

deg

li or

dini

–G

li or

dini

pos

sono

term

inar

e in

eseg

uiti

al t

erm

ine

di

una

valid

ità m

assim

a

Iden

tific

hiam

o al

cune

rela

zion

iId

entif

ichi

amo

alcu

ne re

lazi

oni

•U

n in

vest

itore

poss

iede

una

cer

ta q

uant

ità d

i tito

li–

ha u

na c

erta

stra

tegi

a di

acq

uist

o

Bu

yS

tra

teg

y

pri

ce

()b

uy

()

(fro

m n

as

da

q)

Sto

ck

sym

bo

l()

pri

ce

()

(fro

m n

as

da

q)

sto

ckI

nfo

am

ou

nt

: lo

ng

= (

0)

bu

yPri

ce

: d

ou

ble

= (

0)

sto

ckI

nfo

()a

vaila

ble

()

(fro

m I

nve

sto

r)

Po

rtfo

lio

Inve

sto

r

ca

pita

l_ :

do

ub

le =

( c

ap

ital )

bu

y()

se

ll()

(fro

m n

as

da

q)

0..

1

1-b

uyS

tra

teg

y_

0..

1

11

1

1

1

-po

rtfo

lio_

Rel

azio

ni d

ella

cla

sse Order

Rel

azio

ni d

ella

cla

sse Order

•In

ord

ine

è re

lativ

o a

un

tito

lo

•Sa

da

chi i

nves

titor

e è

stat

o im

mes

so

•Pu

ò re

aliz

zare

ven

dita

o a

cqui

sto

Sto

ck

(fro

m n

as

da

q)

Ord

er

pri

ce

_ :

do

ub

le =

( p

ric

e )

am

ou

nt_

: l

on

g =

( a

mo

un

t )

valid

ity_

: u

ns

ign

ed

int

= (

va

lidit

y )

exe

cu

te()

(fro

m n

as

da

q)

0..

11

-sto

ck

_

0..

11

Inve

sto

r(f

rom

na

sd

aq

)

#in

ves

tor_

0..

11

0..

11

Bu

yOrd

er

exe

cu

te()

(fro

m n

as

da

q)

Se

llOrd

er

exe

cu

te()

(fro

m n

as

da

q)

Che

sig

nifi

ca ac

quis

tare

o v

ende

reC

he si

gni

fica

acqu

ista

re o

ven

dere

•U

n in

vest

itore

:–

deci

de la

qua

ntità

e il

prez

zo d

i azi

oni

da

ven

dere

in b

ase

alla

sua

stra

tegi

a–

crea

l’or

dine

rela

tivo

al ti

tolo

da

acq

uist

are/

ven

dere

•Si

ris

erva

di n

on sp

ende

re il

cap

itale

che

può

serv

ire

per

eseg

uire

un

acqu

isto

(altr

imen

ti va

in ro

sso…

!)•

Si r

iser

va d

i non

ven

dere

azi

oni g

ià im

pegn

ate

in u

n or

dine

di v

endi

ta (v

ende

rebb

e le

stes

se az

ioni

due

vo

lte!)

–M

ette

rlo

l’or

dine

sul m

erca

to

Com

e vi

ene

emes

so u

n or

dine

di a

cqui

sto

Com

e vi

ene

emes

so u

n or

dine

di a

cqui

sto

an

Inve

sto

r :

Inve

sto

ra

Str

ate

gy

: B

uy

Str

ate

gy

an

Ord

er

: B

uy

Ord

er

na

sd

aq

: S

toc

kM

ark

et

bu

y(s

toc

k, c

ap

ital,

bu

yPri

ce

, a

mo

un

tAva

ilab

le)

Bu

yOrd

er(

this

, s

toc

k,

pri

ce

, a

mo

un

t)

pri

ce

( )

ad

dB

uy(

an

Ord

er)

res

erv

e(c

os

t)

co

st(

)

Def

inia

mo

le st

rate

gie

Def

inia

mo

le st

rate

gie

•St

rate

gie

di a

cqui

sto:

–C

ompr

o se

il t

itolo

sta

sale

ndo

•Pe

rché

cre

do

che

co

ntin

uerà

a sa

lire

–C

ompr

o se

il t

itolo

è sc

eso

•Pe

rché

cre

do

che

poi

ris

alir

à

–C

ompr

o a

cas

o •

es.:

sim

ulo

il c

aso

in c

ui h

o a

vuto

not

izie

che

mi h

ann

o co

nvi

nto

–C

ompr

o al

tre

azio

ni d

i un

titol

o ch

e st

a pe

rden

do•

Cos

ì med

io il

pre

zzo

di a

cqui

sto,

e p

iù fa

cilm

ente

pos

so re

cupe

rare

•St

rate

gie

di v

endi

ta:

–V

endo

se h

o gu

adag

nato

•Pe

rché

cos

ì rea

lizz

o il

gua

dag

no

–V

endo

per

non

per

dere

ulte

rior

men

te (S

top-

loss

)•

Cos

ì no

n p

erd

o u

lter

iorm

ente

–V

endo

a c

aso

•es

.: si

mul

o il

cas

o in

cui

ho

bis

og

no

di s

oldi

Com

e so

no o

rgan

izza

te le

stra

tegi

eC

ome

sono

org

aniz

zate

le st

rate

gie

Ra

nd

om

Bu

yStr

ate

gy

(fro

m n

as

da

q)

Ra

nd

om

Se

llStr

ate

gy

(fro

m n

as

da

q)

Sim

ple

Bu

yStr

ate

gy

(fro

m n

as

da

q)

Sim

ple

Se

llStr

ate

gy

(fro

m n

as

da

q)

Sm

art

Bu

yStr

ate

gy

(fro

m n

as

da

q)

Sto

pL

os

sS

tra

teg

y(f

rom

na

sdaq

)

Inve

sto

r(f

rom

na

sd

aq

)

Bu

yS

tra

teg

y

bu

y()

pri

ce

()

(fro

m n

asd

aq)

-bu

yStr

ate

gy_

0..

11

0..

11

Il m

odel

lo è

este

ndib

ilea

nuov

e po

ssib

ili s

trat

egie

ch

e po

sso

defi

nire

in s

egui

to

Stra

tegi

e m

ultip

leSt

rate

gie

mul

tiple

•C

ome

gest

ire

la p

ossib

ilità

di s

egui

re p

poss

ibili

str

ateg

ie a

sec

onda

del

le

circ

osta

nze?

•U

na st

rate

gia

mul

tipla

è a

nch’

essa

una

st

rate

gia

–A

stra

zio

ne!

Stra

tegi

e m

ultip

leSt

rate

gie

mul

tiple

Inve

sto

r(f

rom

na

sd

aq

)

Co

mp

os

iteB

uy

Str

ate

gy

bu

y()

ad

d()

(fro

m n

as

da

q)

Bu

yS

tra

teg

y

pri

ce

_ :

do

ub

le

bu

y()

pri

ce

()

(fro

m n

as

da

q)

0..

11

-bu

yS

tra

teg

y_

0..

11

1

1..

*

1

1..

*

str

ate

gie

s_

loo

p o

ver

sta

teg

ies

( s

)

{

lo

ng

bu

yAm

ou

nt

= s

->b

uy(

s,

ca

pita

l, p

ric

e,

am

ou

nt

);

if

( b

uyA

mo

un

t !=

0 )

{

p

ric

e_

= s

->p

ric

e()

;

retu

rn b

uyA

mo

un

t;

}

}

p

ric

e_

= 0

;

retu

rn 0

;

Que

sto m

odel

lo d

ire

lazi

one

si ch

iam

aC

omp

osit

e P

atte

rn.

E’

com

une

a m

olte

cir

cost

anze

nelle

qua

le è

nec

essa

rio

un a

lber

odi

ogg

etti

com

posi

ti

Com

e ve

ngon

o ge

stiti

gli

ordi

niC

ome

veng

ono

gest

iti g

li or

dini

na

sd

aq

: S

toc

kM

ark

et

sel

lOrd

er

: O

rde

rb

uy

Ord

er

: O

rde

rb

uye

r :

Inve

sto

rs

elle

r :

Inve

sto

r

pri

ce

( )

pri

ce

( )

if (s

ellP

ric

e <

= b

uyP

ric

e)

{ p

ric

e =

se

llPri

ce

;

. .

.}

am

ou

nt(

)

am

ou

nt(

)

exe

cu

te(p

ric

e,

am

oun

t)

exe

cu

te(p

ric

e,

am

ou

nt)

se

ll(s

toc

k, p

ric

e,

am

ou

nt)

bu

y(s

toc

k, p

ric

e,

am

ou

nt)

am

ou

nt

=

m

in(s

ellA

mo

un

t,

bu

yAm

ou

nt)

Com

e ve

ngon

o si

ncro

nizz

ate

le o

pera

zio

niC

ome

veng

ono

sinc

roni

zzat

e le

ope

razi

oni

•Pe

r si

mul

are

ogni

“to

rnat

a” d

i acq

uist

i e

ven

dite

:–

i div

ersi

in

vest

itori

devo

no s

egui

re le

pro

prie

st

rate

gie

e dec

ider

e gl

i or

dini

–il

mer

cato

dev

e ge

stir

e gl

i or

dini

Ges

tione

sim

ulat

a de

l “m

ultit

aski

ng ”

Ges

tione

sim

ulat

a de

l “m

ultit

aski

ng ”

Ta

sk

do

Ta

sk(

) :

void

(fro

m n

asd

aq)

Ta

skM

an

ag

er

do

Ta

sk(

) :

void

ad

d(t

as

k :

Ta

sk*

) :

void

(fro

m n

as

da

q)

10

..*

10

..*

-ta

sks

_

Inve

sto

r(f

rom

na

sd

aq

)

do

Ta

sk(

) :

void

Sto

ckM

ark

et

(fro

m n

as

da

q)

do

Ta

sk

() :

vo

id

Com

e fu

nzio

na il

“m

ultit

aski

ng”

Com

e fu

nzio

na il

“m

ultit

aski

ng”

ma

in p

rog

ram

ma

na

ge

r :

Ta

sk

Ma

na

ge

rin

ves

tor3

:

Inve

sto

rin

ves

tor3

:

Inve

sto

rn

as

da

q :

Sto

ck

Ma

rke

tin

ves

tor1

:

Inve

sto

r

do

Ta

sk(

)d

oT

as

k( )

do

Ta

sk(

)d

oT

as

k( )

do

Ta

sk(

)d

oT

as

k( )

do

Ta

sk(

)d

oT

as

k( )

do

Ta

sk(

)d

oT

as

k( )

do

Ta

sk(

)d

oT

as

k( )

do

Ta

sk(

)d

oT

as

k( )

do

Ta

sk(

)d

oT

as

k( )

Def

iniz

ione

del

le im

plem

enta

zion

iD

efin

izio

ne d

elle

impl

emen

tazi

oni

#include "Task.h"

#include <map>

class Stock;

class BuyStrategy;

class StockMarket;

class Investor

: public Task

{ public:

Investor( double

capital, StockMarket* );

~Investor();

void setBuyStrategy( BuyStrategy

* buy

);

void doTask();

void print();

bool buy

( Stock*, double

price, long

amount

);

bool

sell( Stock*, double

price, long

amount

);

void reserve( double

);

void release( double

);

void reserve( Stock *, long );

void release( Stock *, long );

long amountAvailable( Stock * ) const;

private:

double

capital_;

double reservedCapital_;

StockMarket

* market_;

BuyStrategy

* buyStrategy_;

struct stockInfo

{

stockInfo() : buyPrice(0), amount(0),

reserved(0) {}

double buyPrice;

long amount;

long reserved;

long available() const

{ return

amount

-reserved; }

};

map<Stock*, stockInfo> portfolio_;

double buyPrice( Stock * ) const;

long amount( Stock * ) const;

long amountAvailable( Stock * ) const;

};

Impl

emen

tazi

one

met

odi

Impl

emen

tazi

one

met

odi

void Investor::doTask()

{

if

( market_ == 0 ) return;

vector<Stock*>::const_iterator

s;

for( s = market_->begin(); s != market_->end(); s++ )

{

Stock * stock = *s;

double buyPrice

= Investor::buyPrice( stock );

long amountAvailable

= Investor::amountAvailable( stock );

double capitalAvailable

= capital_-

reservedCapital_;

long buyAmount

= buyStrategy_->buy( stock, capitalAvailable, buyPrice, amountAvailable

);

double

price = buyStrategy_->price();

if

( buyAmount

< 0 )

{

// cout

<< "sell order: " << -buyAmount

<< " " << stock->symbol()

//

<< " at " << price << endl;

market_->addSell( new

SellOrder(

this, stock, price, -buyAmount

) );

} else

if

(buyAmount

> 0 )

{

//

cout

<< "buy order: " <<

buyAmount

<< " " << stock->symbol()

//

<< " at " << price <<

endl;

market_->addBuy( new

BuyOrder(this, stock, price,

buyAmount

) );

}

}

// print();

}

Met

tere

tutto

insi

eme

Met

tere

tutto

insi

eme

•Is

tanz

iare

i ti

toli

e il

mer

cato

•Is

tanz

iare

gli i

nves

titor

i

•A

sseg

nare

le st

rate

gie

–i p

aram

etri

so

no

det

erm

inat

i in

bas

e a n

umer

i ps

eudo

casu

ali

•C

onne

ttere

i di

vers

i og

getti

•…

far

par

tire

il m

ultit

aski

ng!

Il m

ain

pro

gram

(1)

Il m

ain

pro

gram

(1)

StockMarket nasdaq;

Stock msft( "MSoft", 4.0);

nasdaq.add( &msft

);

msft.setPrice( 5.0 );

vector<Investor> investors;

const unsigned int numberOfInvestors

= 200;

for( int

k = 0; k < numberOfInvestors; k++ )

investors.push_back( Investor( 100000,

&nasdaq

) );

const unsigned int initialBuyers

= 100;

for

( int

j = 0; j < initialBuyers; j ++ )

{

investors[j].buy( &msft, msft.price(),

20000 );

} vector<Investor>::iterator

i

for( i = investors.begin(); i !=

investors.end(); i++ )

i->print();

for( vector<Investor>::iterator

i =

investors.begin(); i != investors.end();

i++ )

{

CompositeBuyStrategy

* strategy

=

new CompositeBuyStrategy;

strategy->add( new StopLossStrategy

( 0.20 + drand48()*0.30 ) );

strategy->add( new RandomBuyStrategy

( 0.05 + drand48()*0.15, 0.05 +

drand48()*0.015, 0.02 + drand48()*0.48 )

);

strategy->add( new RandomSellStrategy

( 0.002 + drand48()*0.003, 0.05 +

drand48()*0.015, 0.02 + drand48()*0.48 )

);

strategy->add( new SmartBuyStrategy

( 3, 0.010 + drand48()*0.020, 0.3 +

drand48()*0.7 ) );

strategy->add( new SimpleBuyStrategy

( 1, 0.005 + drand48()*0.015, 0.3 +

drand48()*0.7 ) );

strategy->add( new SimpleSellStrategy

( 0.1 + drand48()*0.20 ) );

i->setBuyStrategy( strategy

);

}

Il m

ain

pro

gram

(2)

Il m

ain

pro

gram

(2)

TaskManager

manager;

for( vector<Investor>::iterator

i = investors.begin();

i != investors.end(); i++ )

manager.add( &*i );

manager.add( &nasdaq

);

const unsigned int numberOfTasks

= numberOfInvestors

+ 1;

const unsigned int numberOfTransactions

= 5000;

const unsigned

long iterations

= (unsigned

long)( numberOfTasks

) *

(unsigned

long)(numberOfTransactions);

for( unsigned

long i = 0; i < iterations

; i++ )

manager.doTask();

for( vector<Investor>::iterator

i = investors.begin(); i !=

investors.end(); i++ )

i->print();

Ris

ulta

ti…R

isul

tati…

0123456789

110

0120

0130

0140

01

spec

ulaz

ione

crol

lo

Tem

po (

gio

rni?

)

Quo

tazi

one

($?,

���