aitooliot avaus
Post on 13-Dec-2014
468 Views
Preview:
DESCRIPTION
TRANSCRIPT
© TammiOliot
Aido OliotAvaus
Mitä ja miksi oliot
© 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
© TammiOliotPage 32008-01-11
Pähkinänkuoressa
1
2
3
4
© 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
© 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
© TammiOliot
OlioparadigmanKokonainen maailmankuva
© 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)
© 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
© 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
© TammiOliot
Abstrakti oliomalliMäärittely
© TammiOliotPage 122008-01-11
Ravintolan luokkakaavio
© TammiOliotPage 132008-01-11
Ravintolan yhteistoimintakaavio
© 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.
© TammiOliot
Abstrakti malli ja 3-kerroksinen toteutusLisää kompleksisuuden hallintaa
© 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
© TammiOliotPage 172008-01-11
PysyvyysSovellus-oliot
NäytötLiiketoiminta-
oliot
LiiketoimintalogiikkaSovelluslogiikka
Looginen 3-taso arkkitehtuuri
© 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ä
© TammiOliotPage 192008-01-11
Liiketoimintojen yhteinen leikkaus
© TammiOliot
Abstrakti mallilähtöinen sovelluskehitysAbstract Domain Driven
Development
© 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
© TammiOliotPage 222008-01-11
SCRUM
Scrum
Sprint
© TammiOliotPage 232008-01-11
Ketteryys tarkkenevasta mallista
Kehittämisprosessi
Abstrakti mallinnus 5 -15 pv Suunnittelu Toteutus
todellisuus
© 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
© 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
© 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
© 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% ?
© TammiOliot
Mistä todella on kysymys
• Arvoista• Mielipiteistä• Uskomuksista
• Havainnosta• Objektiivisista
tosiasioista• Toistettavuudesta• Loogisesta
päättelystä• Ymmärryksestä
EI ole kysymys ON kysymys
© 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
© 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
© TammiOliotPage 322008-01-11
Loppu
© 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
© TammiOliot
Aidoista Olioista SovelluksiinToimintatavat
• Kokoontumiset ja alustukset• Kriittinen salliva avoin keskustelu• Opetustyöpajojen järjestäminen• Foorumin tarjoaminen älylliselle keskustelulle
© 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ä)
© TammiOliotPage 362008-01-11
Loppu
© 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)
© 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.
© 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
© 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
© TammiOliotPage 412008-01-11
© 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
top related