40
© TammiOliot Aido Oliot Avaus Mitä ja miksi oliot

AitoOliot avaus

Embed Size (px)

DESCRIPTION

esitys jonka esitin ensitapaamisessa

Citation preview

Page 1: AitoOliot avaus

© TammiOliot

Aido OliotAvaus

Mitä ja miksi oliot

Page 2: AitoOliot avaus

© TammiOliot

Aidot Olio avaus 23.4.2009

• Ryhmän esittäytyminen• Paras tietämys sovelluskehityksestä – ADDD• Ryhmän toimintasuunnitelma –toimintaideoita ja niiden

kehittelyä• Jatkon toimenpiteistä päättäminen• Vapaata keskustelua

Page 3: AitoOliot avaus

© TammiOliotPage 32008-01-11

Pähkinänkuoressa

1

2

3

4

Page 4: AitoOliot avaus

© TammiOliotPage 42008-01-11

lkdj fkjsd fj d'fjojd n öln clfoj d ih coih pij dfoj o ij cij dscij dj idc oijcpoi dåoj ihji khj dcohjfoid f podc 'okcoo poidc okjddfh pod 'åodöokidh f hlkjhd hjddihd f fg fg adf ihdf f ffdf df idhf df fgdf ihd fdfg dfgodh fdfg idfhdfg idfh dfg idshf dfg idhf dfg oidh fdfg fdfgh df

-1980

koodi + tieto

lkdj fkjsd fj d'fjojd n öln clfoj d ih coih pij dfoj o ij cij dscij dj idc oijcpoi dåoj ihji khj dcohjfoid f podc 'okcoo poidc okjddfh pod 'åodöokidh f hlkjhd hjddihd f fg fg adf ihdf f ffdf df idhf df

1980-1990

koodi tieto

1990 -

koodi + tieto

HW + OSMiddlewareMiddleware Middleware

HW + OS HW + OS HW + OS HW + OS

Middleware

Middleware

abstraktiotaso

sovellusohjelmointi

1960 2010

Tietojärjestelmien kehitys

Page 5: AitoOliot avaus

© TammiOliot

Monimutkaisuuden hallinnasta

• Sovelluksien rakentaminen = monimutkaisuuden hallinta

• Monimutkaisuutta hallitaan kerrostamalla & sisäkkäistämällä

• Sovelluksen monimutkaisuus voidaan osittaa:– Olioparadigmalla– Abstraktiolla eli pelkistämisellä– Sovellus- ja liiketoimintanäkökulmien aikaisella ja

selkeällä erottamisella

Page 6: AitoOliot avaus

© TammiOliot

OlioparadigmanKokonainen maailmankuva

Page 7: AitoOliot avaus

© TammiOliot

Olioparadigma

Olioaksioomat Olioparadigman peruspilarit

Olioparadigman aksioomat ovat:1.     Maailma koostuu olioista ja vain oliosta, jotka ovat yksilöitä (so. jokaisella

oliolla on identiteetti) ja ne voivat olla löyhästi kytketty muihin olioihin.2.     Kaikki havaitut oliot ovat sekä rakenteita että toimijoita

samanaikaisesti.3.     Olioilla toiminta kuvataan palveluina ja ne voivat lähettää

toisilleen viestejä. Tämän mahdollistaa olioiden yhteistoiminnan.4.     Olio syntyessään kuuluu täsmälleen yhteen luokkaan eikä se elinkaarensa

aikana voi vaihtaa sitä.5.     Olion (tai olioiden) toiminnan tuloksena, joko kyseisen olion tila muuttuu tai

syntyy aina saman perusjoukon olio - ei koskaan mitään muuta (sulkeuma - aksioma)

Page 8: AitoOliot avaus

© TammiOliot

Henkilö- nimi- tukan väri- pituus- paino- syntymäaika- GSMnumero

kerroNimi

kerr

oIkä

kerroOsoite

muutaGSMnumero

laulaMaamme

kerroIkä

Palvelujen kuori

Olion ydin = identiteettiObject

OlioParadigma

olioita =yksilöitä

luokka

luokka: yhteiset ominaisuudet ja palvelut ja viestit

luokka vastaa kielen käsitettä (sanaa)

Class

Page 9: AitoOliot avaus

© TammiOliot

Liiketoimintaprosessi

Funktionaalinen dekompositio Agentteihin perustuva dekompositio

Olioiden käyttäytyminen

Homma

AlkuKeski Loppu

AlunAlku AlunLoppu KeskiKesi LopunAlku LopunLoppu

A

Temppu1Temppu2

D

Temppu1Temppu2

B

Temppu1Temppu2

C

Temppu1Temppu2A DB C

Page 10: AitoOliot avaus

© TammiOliot

Abstrakti oliomalliMäärittely

Page 11: AitoOliot avaus

© TammiOliotPage 122008-01-11

Ravintolan luokkakaavio

Page 12: AitoOliot avaus

© TammiOliotPage 132008-01-11

Ravintolan yhteistoimintakaavio

Page 13: AitoOliot avaus

© TammiOliotPage 142008-01-11

semanttinen sisältö

abstraktiotaso

korkea

matala

sisältö vähäinen

sisältö runsas

semantiikan määrä

Abstraktiotason hallintaLiiketoiminnan mallia laadittaessa abstraktiotason hallinta on hyvin keskeinen elementti.

Page 14: AitoOliot avaus

© TammiOliot

Abstrakti malli ja 3-kerroksinen toteutusLisää kompleksisuuden hallintaa

Page 15: AitoOliot avaus

© TammiOliotPage 162008-01-11

Looginen 2-taso arkkitehtuuri

sovellusGUI

RelaatioTK

liiketoimintasovellustoiminta

Sama toiminnallisuustoteutetaan lähes samalla tavalla

useaan kertaan (kertaluokka ~ 10 )

Kompleksisuudenräjähdys

Tietojärjestemän rakentaminen monimutkaistuu

tarpeettoman päällekäisyyden takia

Page 16: AitoOliot avaus

© TammiOliotPage 172008-01-11

PysyvyysSovellus-oliot

NäytötLiiketoiminta-

oliot

LiiketoimintalogiikkaSovelluslogiikka

Looginen 3-taso arkkitehtuuri

Page 17: AitoOliot avaus

© TammiOliotPage 182008-01-11

Kahden erillisen mallin yhdistäminen

käsitemalli

prosessimalli

Kahden erillisen mallin yhdistäminen hyvin vaikeaa

oliomalli

Finnair Tjt- tutkimus

38 * 44 = 1672 yhteyttä

Page 18: AitoOliot avaus

© TammiOliotPage 192008-01-11

Liiketoimintojen yhteinen leikkaus

Page 19: AitoOliot avaus

© TammiOliot

Abstrakti mallilähtöinen sovelluskehitysAbstract Domain Driven

Development

Page 20: AitoOliot avaus

© TammiOliotPage 212008-01-11

Perinteinenvesiputous

määrittelysuunnittelu

toteutus

kompleksisuusräjähdys

Ketterä

MallilähtöinenKetterä

määrittely suunnittelu toteutus

Abstrakti liiketoiminnan mallinnusLiiketoimintalogiikan

toteutusSovellustarpeiden lisäy

Perinteinen & ketterä projektiperiaate

Page 21: AitoOliot avaus

© TammiOliotPage 222008-01-11

SCRUM

Scrum

Sprint

Page 22: AitoOliot avaus

© TammiOliotPage 232008-01-11

Ketteryys tarkkenevasta mallista

Kehittämisprosessi

Abstrakti mallinnus 5 -15 pv Suunnittelu Toteutus

todellisuus

Page 23: AitoOliot avaus

© TammiOliotPage 242008-01-11

Juoma Ruoka

Työntekijä

sotunimiosoitepalkka

Pöytä

nimisijainti

varaaPaikat()

Kokki

taitoLuokitus

valmista()

Menu

nimi

Paikka

nimisijainta

0..*

1

0..*

1

Tarjoilija

tarjoile()

Annos

tunnusvalmis

valmista()annosOK()

0..*

1

0..*

1

Tuote

nimityppihintatila

teeAnnos()

0..*

1

0..*

1

Istuu

alkuAikaloppuAikatila

kesto()

0..*

1

0..*

1

Tilaus

aikatila

lisääLaskulle()annosOK()valmista()

0..*

1

0..*

1

10..1 10..1

0..*

1

0..*

1

Asiakas

nimiosoite

lisääLaskulle()luoLasku()

10..*

10..*

10..* 10..*

Lasku

tunnuspäivämäärätyyppi

lisääLaskulle()

0..*

1

0..*

1

LaskuElementti

tunnustuoteNimimääräyksikköhintaalennusd

Liiketoiminna asiantuntijaMallintaja

Juoma Ruoka

Työntekijä

sotunimiosoitepalkka

Pöytä

nimisijainti

varaaPaikat()

Kokki

taitoLuokitus

valmista()

Menu

nimi

Paikka

nimisijainta

0..*

1

0..*

1

Tarjoilija

tarjoile()

Annos

tunnusvalmis

valmista()annosOK()

0..*

1

0..*

1

Tuote

nimityppihintatila

teeAnnos()

0..*

1

0..*

1

Istuu

alkuAikaloppuAikatila

kesto()

0..*

1

0..*

1

Tilaus

aikatila

lisääLaskulle()annosOK()valmista()

0..*

1

0..*

1

10..1 10..1

0..*

1

0..*

1

Asiakas

nimiosoite

lisääLaskulle()luoLasku()

10..*

10..*

10..* 10..*

Lasku

tunnuspäivämäärätyyppi

lisääLaskulle()

0..*

1

0..*

1

LaskuElementti

tunnustuoteNimimääräyksikköhintaalennusd

Juoma Ruoka

Työntekijä

sotunimiosoitepalkka

Pöytä

nimisijainti

varaaPaikat()

Kokki

taitoLuokitus

valmista()

Menu

nimi

Paikka

nimisijainta

0..*

1

0..*

1

Tarjoilija

tarjoile()

Annos

tunnusvalmis

valmista()annosOK()

0..*

1

0..*

1

Tuote

nimityppihintatila

teeAnnos()

0..*

1

0..*

1

Istuu

alkuAikaloppuAikatila

kesto()

0..*

1

0..*

1

Tilaus

aikatila

lisääLaskulle()annosOK()valmista()

0..*

1

0..*

1

10..1 10..1

0..*

1

0..*

1

Asiakas

nimiosoite

lisääLaskulle()luoLasku()

10..*

10..*

10..* 10..*

Lasku

tunnuspäivämäärätyyppi

lisääLaskulle()

0..*

1

0..*

1

LaskuElementti

tunnustuoteNimimääräyksikköhintaalennusd

Liiketoiminna asiantuntijaMallintaja

SovellusOliotnäytöt PysyvyysLiiketoiminnanOliot

Tarjouksen, tilausvahvistuksen tai sopimuksen lähettäminen

Toimitusohjeen lähettäminen

Myyntitapahtuman kirjaus

Myyjä

Asiakkuuden analyysi

Liiketoimintaprosessit

Use cases

Työnkulut

Abstrakti liiketoimintamalli

Implementation

Implementation 2

1

3

4

Kehittämisprosessi

Page 24: AitoOliot avaus

© TammiOliotPage 252008-01-11

KehittämisprosessiJuoma Ruoka

Työntekijä

sotunimiosoitepalkka

Pöytänimisijainti

varaaPaikat()

Kokki

taitoLuokitus

valmista()

Menunimi

Paikkanimisijainta

0..*1

0..*1

Tarjoilija

tarjoile()

Annos

tunnusvalmis

valmista()annosOK()

0..*

1

0..*

1

Tuotenimityppihintatila

teeAnnos()

0..*

1

0..*

1

IstuualkuAikaloppuAikatila

kesto()

0..*1

0..*1

Tilaus

aikatila

lisääLaskulle()annosOK()valmista()

0..*

1

0..*

1

10..1 10..1

0..*

1

0..*

1

Asiakas

nimiosoite

lisääLaskulle()luoLasku()

10..*

10..*

10..* 10..*

Lasku

tunnuspäivämäärätyyppi

lisääLaskulle()0..*

1

0..*

1

LaskuElementtitunnustuoteNimimääräyksikköhintaalennusd

Liiketoiminna asiantuntijaMallintaja

Juoma Ruoka

Työntekijä

sotunimiosoitepalkka

Pöytänimisijainti

varaaPaikat()

Kokki

taitoLuokitus

valmista()

Menunimi

Paikkanimisijainta

0..*1

0..*1

Tarjoilija

tarjoile()

Annos

tunnusvalmis

valmista()annosOK()

0..*

1

0..*

1

Tuotenimityppihintatila

teeAnnos()

0..*

1

0..*

1

IstuualkuAikaloppuAikatila

kesto()

0..*1

0..*1

Tilaus

aikatila

lisääLaskulle()annosOK()valmista()

0..*

1

0..*

1

10..1 10..1

0..*

1

0..*

1

Asiakas

nimiosoite

lisääLaskulle()luoLasku()

10..*

10..*

10..* 10..*

Lasku

tunnuspäivämäärätyyppi

lisääLaskulle()0..*

1

0..*

1

LaskuElementtitunnustuoteNimimääräyksikköhintaalennusd

Juoma Ruoka

Työntekijä

sotunimiosoitepalkka

Pöytänimisijainti

varaaPaikat()

Kokki

taitoLuokitus

valmista()

Menunimi

Paikkanimisijainta

0..*1

0..*1

Tarjoilija

tarjoile()

Annos

tunnusvalmis

valmista()annosOK()

0..*

1

0..*

1

Tuotenimityppihintatila

teeAnnos()

0..*

1

0..*

1

IstuualkuAikaloppuAikatila

kesto()

0..*1

0..*1

Tilaus

aikatila

lisääLaskulle()annosOK()valmista()

0..*

1

0..*

1

10..1 10..1

0..*

1

0..*

1

Asiakas

nimiosoite

lisääLaskulle()luoLasku()

10..*

10..*

10..* 10..*

Lasku

tunnuspäivämäärätyyppi

lisääLaskulle()0..*

1

0..*

1

LaskuElementtitunnustuoteNimimääräyksikköhintaalennusd

Liiketoiminna asiantuntijaMallintaja

80 %1

0%

100

%

SovellusOliotnäytöt PysyvyysLiiketoiminnanOliot

Page 25: AitoOliot avaus

© TammiOliot

OOA&OOD:n ja ADDD:n erot

Alkuperäinen OOA (Booch & Coad)

• Pohja: olioparadigma on sama• esittävät mallin etsimistä

vaatimuksista (sovelluksesta) käsin

• Alkuperäisessä se määräytyy sattumanvaraisesti

ADDD

• Pohja: olioparadigma on sama• erotan sovelluksen ja

kohdealueen domain- mallin alusta lähtien ja tämä malli kuvaa todellisuutta

• Vaatimukset otetaan lähtökohdaksi kun suunnitellaan sovellusta, mutta silloin liiketoiminnan malli on jo valmis

• Minulla abstraktion taso valitaan tietoisesti

Page 26: AitoOliot avaus

© TammiOliot

ADDD ja OOA & OOD

ominaisuus ADDD2005 >

OOA + OOD1995 >

OO-paradigma 97 % 100%

Kohdealueen malli puhdas sisältää sovelluksen

Tietoinen abstraktiotason valinta

100 % ~ 50 %

3-kerros arkkitehtuuri 100% 100%

Kerrosten aikainen erottaminen

100 % 25 %

Ketteryys 0 – 100% ?

Generointi 15 -25% ?

Page 27: AitoOliot avaus

© TammiOliot

Mistä todella on kysymys

• Arvoista• Mielipiteistä• Uskomuksista

• Havainnosta• Objektiivisista

tosiasioista• Toistettavuudesta• Loogisesta

päättelystä• Ymmärryksestä

EI ole kysymys ON kysymys

Page 28: AitoOliot avaus

© TammiOliotPage 302008-01-11

Asian ytimeen

Juoma Ruoka

Työntekijä

sotunimiosoitepalkka

Pöytä

nimisijainti

varaaPaikat()

Kokki

taitoLuokitus

valmista()

Menu

nimi

Paikka

nimisijainta

0..*

1

0..*

1

Tarjoilija

tarjoile()

Annos

tunnusvalmis

valmista()annosOK()

0..*

1

0..*

1

Tuote

nimityppihintatila

teeAnnos()

0..*

1

0..*

1

Istuu

alkuAikaloppuAikatila

kesto()

0..*

1

0..*

1

Tilaus

aikatila

lisääLaskulle()annosOK()valmista()

0..*

1

0..*

1

10..1 10..1

0..*

1

0..*

1

Asiakas

nimiosoite

lisääLaskulle()luoLasku()

10..*

10..*

10..* 10..*

Lasku

tunnuspäivämäärätyyppi

lisääLaskulle()

0..*

1

0..*

1

LaskuElementti

tunnustuoteNimimääräyksikköhintaalennusd

Liiketoiminna asiantuntijaMallintaja

Juoma Ruoka

Työntekijä

sotunimiosoitepalkka

Pöytä

nimisijainti

varaaPaikat()

Kokki

taitoLuokitus

valmista()

Menu

nimi

Paikka

nimisijainta

0..*

1

0..*

1

Tarjoilija

tarjoile()

Annos

tunnusvalmis

valmista()annosOK()

0..*

1

0..*

1

Tuote

nimityppihintatila

teeAnnos()

0..*

1

0..*

1

Istuu

alkuAikaloppuAikatila

kesto()

0..*

1

0..*

1

Tilaus

aikatila

lisääLaskulle()annosOK()valmista()

0..*

1

0..*

1

10..1 10..1

0..*

1

0..*

1

Asiakas

nimiosoite

lisääLaskulle()luoLasku()

10..*

10..*

10..* 10..*

Lasku

tunnuspäivämäärätyyppi

lisääLaskulle()

0..*

1

0..*

1

LaskuElementti

tunnustuoteNimimääräyksikköhintaalennusd

Juoma Ruoka

Työntekijä

sotunimiosoitepalkka

Pöytä

nimisijainti

varaaPaikat()

Kokki

taitoLuokitus

valmista()

Menu

nimi

Paikka

nimisijainta

0..*

1

0..*

1

Tarjoilija

tarjoile()

Annos

tunnusvalmis

valmista()annosOK()

0..*

1

0..*

1

Tuote

nimityppihintatila

teeAnnos()

0..*

1

0..*

1

Istuu

alkuAikaloppuAikatila

kesto()

0..*

1

0..*

1

Tilaus

aikatila

lisääLaskulle()annosOK()valmista()

0..*

1

0..*

1

10..1 10..1

0..*

1

0..*

1

Asiakas

nimiosoite

lisääLaskulle()luoLasku()

10..*

10..*

10..* 10..*

Lasku

tunnuspäivämäärätyyppi

lisääLaskulle()

0..*

1

0..*

1

LaskuElementti

tunnustuoteNimimääräyksikköhintaalennusd

Liiketoiminna asiantuntijaMallintaja

Toiminnallinen decomposition Olioden yhteistoiminta

ATemppu1Temppu2

DTemppu1Temppu2

BTemppu1Temppu2

CTemppu1Temppu2A DB C

Homma

AlkuKeski Loppu

AlkuAlku AlkuLoppu Keski LoppuAlkuLoppuLoppu

Toiminnallinen decomposition Olioden yhteistoiminta

ATemppu1Temppu2

DTemppu1Temppu2

BTemppu1Temppu2

CTemppu1Temppu2A DB C

Homma

AlkuKeski Loppu

AlkuAlku AlkuLoppu Keski LoppuAlkuLoppuLoppu

Homma

AlkuKeski Loppu

AlkuAlku AlkuLoppu Keski LoppuAlkuLoppuLoppu

Juoma Ruoka

Työntekijä

sotunimiosoitepalkka

Pöytänimisijainti

varaaPaikat()

Kokki

taitoLuokitus

valmis ta()

Menunimi

Paikkanimisijainta

0..*1

0..*1

Tarjoilija

tarjoi le()

Annos

tunnusvalmis

valmista()annosOK()

0..*

1

0..*

1

Tuotenimityppihintatila

teeAnnos()

0..*

1

0..*

1

IstuualkuAikaloppuAikatila

kesto()

0..*1

0..*1

Tilaus

aikatila

lisääLaskulle()annosOK()valmista()

0..*

1

0..*

1

10..1 10..1

0..*

1

0..*

1

Asiakas

nimiosoite

lisääLaskulle()luoLasku()

10.. *

10.. *

10..* 10..*

Lasku

tunnuspäivämäärätyyppi

lisääLaskulle()0..*

1

0..*

1

LaskuElementtitunnustuoteNimimääräyksikköhintaalennusd

Liiketoiminna asiantuntijaMallintaja

Juoma Ruoka

Työntekijä

sotunimiosoitepalkka

Pöytänimisijainti

varaaPaikat()

Kokki

taitoLuokitus

valmis ta()

Menunimi

Paikkanimisijainta

0..*1

0..*1

Tarjoilija

tarjoi le()

Annos

tunnusvalmis

valmista()annosOK()

0..*

1

0..*

1

Tuotenimityppihintatila

teeAnnos()

0..*

1

0..*

1

IstuualkuAikaloppuAikatila

kesto()

0..*1

0..*1

Tilaus

aikatila

lisääLaskulle()annosOK()valmista()

0..*

1

0..*

1

10..1 10..1

0..*

1

0..*

1

Asiakas

nimiosoite

lisääLaskulle()luoLasku()

10.. *

10.. *

10..* 10..*

Lasku

tunnuspäivämäärätyyppi

lisääLaskulle()0..*

1

0..*

1

LaskuElementtitunnustuoteNimimääräyksikköhintaalennusd

Juoma Ruoka

Työntekijä

sotunimiosoitepalkka

Pöytänimisijainti

varaaPaikat()

Kokki

taitoLuokitus

valmis ta()

Menunimi

Paikkanimisijainta

0..*1

0..*1

Tarjoilija

tarjoi le()

Annos

tunnusvalmis

valmista()annosOK()

0..*

1

0..*

1

Tuotenimityppihintatila

teeAnnos()

0..*

1

0..*

1

IstuualkuAikaloppuAikatila

kesto()

0..*1

0..*1

Tilaus

aikatila

lisääLaskulle()annosOK()valmista()

0..*

1

0..*

1

10..1 10..1

0..*

1

0..*

1

Asiakas

nimiosoite

lisääLaskulle()luoLasku()

10.. *

10.. *

10..* 10..*

Lasku

tunnuspäivämäärätyyppi

lisääLaskulle()0..*

1

0..*

1

LaskuElementtitunnustuoteNimimääräyksikköhintaalennusd

Liiketoiminna asiantuntijaMallintaja

80 %

SovellusOliotnäytöt PysyvyysLiiketoiminnanOliot

Juoma Ruoka

Työntekijä

sotunimiosoitepalkka

Pöytänimisijainti

varaaPaikat()

Kokki

taitoLuokitus

valmis ta()

Menunimi

Paikkanimisijainta

0..*1

0..*1

Tarjoilija

tarjoi le()

Annos

tunnusvalmis

valmista()annosOK()

0..*

1

0..*

1

Tuotenimityppihintatila

teeAnnos()

0..*

1

0..*

1

IstuualkuAikaloppuAikatila

kesto()

0..*1

0..*1

Tilaus

aikatila

lisääLaskulle()annosOK()valmista()

0..*

1

0..*

1

10..1 10..1

0..*

1

0..*

1

Asiakas

nimiosoite

lisääLaskulle()luoLasku()

10.. *

10.. *

10..* 10..*

Lasku

tunnuspäivämäärätyyppi

lisääLaskulle()0..*

1

0..*

1

LaskuElementtitunnustuoteNimimääräyksikköhintaalennusd

Liiketoiminna asiantuntijaMallintaja

Juoma Ruoka

Työntekijä

sotunimiosoitepalkka

Pöytänimisijainti

varaaPaikat()

Kokki

taitoLuokitus

valmis ta()

Menunimi

Paikkanimisijainta

0..*1

0..*1

Tarjoilija

tarjoi le()

Annos

tunnusvalmis

valmista()annosOK()

0..*

1

0..*

1

Tuotenimityppihintatila

teeAnnos()

0..*

1

0..*

1

IstuualkuAikaloppuAikatila

kesto()

0..*1

0..*1

Tilaus

aikatila

lisääLaskulle()annosOK()valmista()

0..*

1

0..*

1

10..1 10..1

0..*

1

0..*

1

Asiakas

nimiosoite

lisääLaskulle()luoLasku()

10.. *

10.. *

10..* 10..*

Lasku

tunnuspäivämäärätyyppi

lisääLaskulle()0..*

1

0..*

1

LaskuElementtitunnustuoteNimimääräyksikköhintaalennusd

Juoma Ruoka

Työntekijä

sotunimiosoitepalkka

Pöytänimisijainti

varaaPaikat()

Kokki

taitoLuokitus

valmis ta()

Menunimi

Paikkanimisijainta

0..*1

0..*1

Tarjoilija

tarjoi le()

Annos

tunnusvalmis

valmista()annosOK()

0..*

1

0..*

1

Tuotenimityppihintatila

teeAnnos()

0..*

1

0..*

1

IstuualkuAikaloppuAikatila

kesto()

0..*1

0..*1

Tilaus

aikatila

lisääLaskulle()annosOK()valmista()

0..*

1

0..*

1

10..1 10..1

0..*

1

0..*

1

Asiakas

nimiosoite

lisääLaskulle()luoLasku()

10.. *

10.. *

10..* 10..*

Lasku

tunnuspäivämäärätyyppi

lisääLaskulle()0..*

1

0..*

1

LaskuElementtitunnustuoteNimimääräyksikköhintaalennusd

Liiketoiminna asiantuntijaMallintaja

80 %

SovellusOliotnäytöt SovellusOliotnäytöt SovellusOliotnäytöt PysyvyysLiiketoiminnanOliot

PysyvyysPysyvyysPysyvyysLiiketoiminnanOliot

LiiketoiminnanOliot

1

2

3

4

PysyvyysSovellus-oliot

NäytötLiiketoiminta-

oliot

LiiketoimintalogiikkaSovelluslogii

kka

PysyvyysPysyvyysPysyvyysSovellus-oliot

NäytötLiiketoiminta-

oliotLiiketoiminta-

oliot

LiiketoimintalogiikkaSovelluslogii

kka

LiiketoimintalogiikkaSovelluslogii

kka

Page 29: AitoOliot avaus

© TammiOliotPage 312008-01-11

Ikuinen totuus

The center of gravity of an object-oriented information system should be its domain model.

•Get this model right, and your task will be much easier.•Get this model wrong, and abandon all hope.

Grady Booch: Object Solution

Boochin käsitys SOA:ta

Page 30: AitoOliot avaus

© TammiOliotPage 322008-01-11

Loppu

Page 31: AitoOliot avaus

© TammiOliot

Aidoista Olioista SovelluksiinToiminnan tavoitteet

• Ymmärtää olioparadigma ja sen merkitys korkealaatuisessa sovellustuotantoannossa

• Edistää huippuosaamista abstraktin mallinnuksen ja 3-tasoiten sovellusten toteutuksissa

• Etsiä ja edistää ja ottaa käyttöön tätä toimintaa hyvin tukevia työvälineitä

• Opettaa lahjakkaita ihmisiä tämän tietotaidon osaajiksi

• Laajentaa tämä toiminta kansainväliseksi

Page 32: AitoOliot avaus

© TammiOliot

Aidoista Olioista SovelluksiinToimintatavat

• Kokoontumiset ja alustukset• Kriittinen salliva avoin keskustelu• Opetustyöpajojen järjestäminen• Foorumin tarjoaminen älylliselle keskustelulle

Page 33: AitoOliot avaus

© TammiOliot

Aidoista Olioista SovelluksiinSeuraavia tapahtumia

• Abstraktin oliomallinnuksen koulutus– 1 tai 2 päivää ?– Paikka – Tilan hankita / kustannus– Ajankohta

• Abstraktin mallinnuksen mestariluokka– 1 tai 2 päivää ?– Paikka – Tilan hankita / kustannus– Ajankohta

• 3-taso Java- kehittämisen workshop (perusteet)• ¼ vuosittainen OlioOlutIP (malleja & kieliä)

Page 34: AitoOliot avaus

© TammiOliotPage 362008-01-11

Loppu

Page 35: AitoOliot avaus

© TammiOliotPage 372008-01-11

XP eXtream Programming • Kent Beck• Periaate: ei suunnitella vaan toteutetaan

– Laaditaan tarinoita– Hahmotetaan luokkina ja yhteistoimintana– Toteutetaan, korjataan

• Työtapoja– Yhteinen työtila– Pariohjelmointi– Vahvasti testilähtöinen– Refaktorointi– Niukka dokumentointi (travel lite)

Page 36: AitoOliot avaus

© TammiOliotPage 382008-01-11

Prosessiasiantuntijan kommentti 1995

• Sovelluskehitys yrittää käyttää (1995) täysin soveltumatonta prosessin ohjaus mekanismia

• Määriteltyä prosessin ohjausta voidaan käyttää vain silloin, kun prosessi kuvaus on niin täsmällinen, että samoista lähtöarvoista prosessi tuottaa täsmälleen saman lopputuloksen

• Ei ole edes kuviteltavissa, että sovelluksen ominaisuuksia tai työvaiheita voitaisiin mitenkään kuvata tällä tarkuustasolla.

• JOHTOPÄÄTÖS: Aina kun prosessin kompleksisuus ylittää annetun raja ainoa toimiva prosessin ohjausmekanismi on kokemusperäinen eikä määritelty prosessi.

Page 37: AitoOliot avaus

© TammiOliotPage 392008-01-11

Kokemusperäinen ohjaus • Suunnitellaan vähän – vain sen verran kun se

on tehtävissä hyödyllisesti• Varaudutaan odottamattomaan• Ohjaus perustuu prosessin huolelliseen

tarkkailuun ja nopeaan reagointiin• Sopeudutaan koko ajan osittaiseen

epäyhtenäiseen ja osin ristiriitaiseen tietoon• Kiinnitetään ymmärrystä toteutuksella• Huolehditaan oikeasta suunnasta jatkuvalla

tarkkailulla ja arvioinnilla

Page 38: AitoOliot avaus

© TammiOliotPage 402008-01-11

Grady Booch SOA:sta

GB:”I've seen some folks suggest creating an SOA from the bottom up: look at a silo, identify the potential services, and publish them, then weave a system together from them. This is in essence technology first. In my experience, this is a recipe for disaster and/or serious over-engineering. You've got to start with the scenarios/business needs, play those out against the existing/new systems, zero in on the points of tangency, and there plan a flag for harvesting a meaningful service. These styles, and their resulting costs/benefits, are rarely discussed. “(värjäykset ja bouldaukset mun)ja vahan ennen  tätä:There are also services with a big S: there is a conceptual kind of service that is not manifest as a pure WSDL service but rather something else. Think of a service as a port on a system, with that port having a well-defined interface consisting of a vocabulary of classes, a protocol, and a particular set of messages and resulting behavior. It is a good thing that you can conceptualize a system as a web of services, some of which are Services and some of which are, well, services.

http://www.ratio.co.uk/ov10.pdf

ObjectiveView10

Page 39: AitoOliot avaus

© TammiOliotPage 412008-01-11

Page 40: AitoOliot avaus

© TammiOliot

Jukka Tamminen

Page 42

2008-01-14

Simula

rakenteinenohjelmointi

C++C

relaatiokantojenteoria SQL-kannat

CheninER-malli

OOA

oliotietokannat

WWWMosaiq

Arpanet

Java-Corbasovellukset

NetScape

Java

verkkokannat

1970 1975 1980 19901985 1995

EJB jaOTM

Javatapahtuma-sovellukset

2000

Smalltalk oliohajautus(CORBA)

Java -teknologian kehitys