Yleisiä asioita
• Harkat alkavat ensi viikolla
• Vierailuluentoa
– Ensi viikon perjantaina, Janne Viitala,
Sandvik
• Slackin #luennot-kanava taas käytössä
Ohjelmistoarkkitehtuurit 2016 1
1 Johdanto
2
1.1 Mikä on ohjelmistoarkkitehtuuri?
1.2 Ohjelmistoarkkitehtuuri ja laatuvaatimukset
1.3 Katsaus ohjelmistotuotannon kehittymiseen
1.4 Miksi ohjelmistoarkkitehtuuri on tärkeä
1.5 Ohjelmistoarkkitehtuuri ja ohjelmistokehitysprosessi
1.6 Ohjelmistoarkkitehtuuri ja organisaatio
1.7 Ohjelmiston osittaminen
1.8 Toteutusalustan arkkitehtuuri
1.9 Yhteenvetoa
Ohjelmistoarkkitehtuurit 2016
1.3 Katsaus
ohjelmistotuotannon
kehittymiseen
Ohjelmointi
4
Vaatimukset
Ohjelma
Ohjelmointikieli
”Programming-in-the-small”
Ongelma: Ohjelmointikielen
hallinta
Ratkaisu: OhjelmointiympäristötVaatimusten
toteutus
ohjelmointikielellä
Ohjelmistoarkkitehtuurit 2016
Järjestelmäkehitys
5
Vaatimukset Ohjelmointikieli
”Programming-in-the-large”
Ongelma: Riippuvuuksien
hallinta
Ratkaisu: Arkkitehtuuri
KomponentKomponentKomponentKomponentti
Ohjelmistoarkkitehtuurit 2016
Ohjelmistotuotanto
6
Vaatimukset Ohjelmointikieli
”Programming-in-the-many”
Ongelma: Ihmisten hallinta
Ratkaisu: Prosessi
KomponentKomponentKomponentKomponentti
Prosessi
Ohjelmistoarkkitehtuurit 2016
Hajautetut järjestelmät
7
Vaatimukset Ohjelmointikieli
Ongelma: Järjestelmän hajautta-
minen, rinnakkaisuus
Ratkaisu: Arkkitehtuuri
KomponentKomponentKomponentKomponentti
Prosessi
Rinnakkaiset
laitealustat
Ohjelmistoarkkitehtuurit 2016
Mallipohjainen
ohjelmistotuotanto
8
Vaatimukset Ohjelmointikieli
”Model-driven development”
Ongelma: Monimutkaisuuden
hallinta
Ratkaisu: Abstraktio,
mallintaminen, arkkitehtuuri
malli
malli
malli
KomponentKomponentKomponentKomponentti
Ohjelmistoarkkitehtuurit 2016
Model-Driven Development (MDD)
9
Bran Selic
Ohjelmistoarkkitehtuurit 2016
Tuoteperheet
10
Vaatimukset
Ongelma: Muunneltavuuden hallinta
Ratkaisu: Arkkitehtuuri + prosessi
malli
malli
malli
KomponentKomponentKomponentKomponentti
OhjelmointikieliOhjelmointi-
alusta
Vaatimukset
Ohjelmistoarkkitehtuurit 2016
Globaali ohjelmistokehitys
11
Ongelma: Työn hajauttaminen
Ratkaisu: Arkkitehtuuri + prosessi
malli
malli
malli
KomponentKomponentKomponentKomponentti
OhjelmointikieliOhjelmointi-
alusta
VaatimuksetVaatimukset
Ohjelmistoarkkitehtuurit 2016
Palvelut
12
Ongelma: Integrointi liike-
toimintaan
Ratkaisu: Arkkitehtuuri
(palvelupohjainen arkkitehtuuri)
malli
malli
malli
KomponentKomponentKomponentKomponentti
OhjelmointikieliOhjelmointi-
alusta
Liiketoiminta-
palvelut
VaatimuksetVaatimukset
Ohjelmistoarkkitehtuurit 2016
Ohjelmistotuotanto tänään
13
malli
malli
malli
KomponentKomponentKomponentKomponentti
OhjelmointikieliOhjelmointi-
alusta
Ohjelmistoarkkitehtuuri on avain
- komponentien välisten suhteiden
hallintaan
- järjestelmien monimutkaisuuden
hallintaan
- ohjelmistojen muunneltavuuden
hallintaan
- ohjelmistokehityksen ja laskennan
hajauttamiseen
- liiketoimintaintegrointiin
Liiketoiminta-
palvelut
VaatimuksetVaatimukset
Ohjelmistoarkkitehtuurit 2016
Taloussanomat
2.9.2005
14Ohjelmistoarkkitehtuurit 2016
http://www.talouselama.fi/kumppaniblogit/tieto/hyv
at-tulokset-edellyttavat-etta-it-ymmartaa-
liiketoimintaa-3362373
Talouselämä 21.8.2014
Kairos Future of Business -tutkimus
”Ketterä lähestymistapa ei kuitenkaan vähennä
arkkitehtuurin tarvetta ohjelmistokehityksessä.
Laadukkaan ohjelmistoarkkitehtuurin rooli
päinvastoin korostuu yhä enemmän.”
” Kun vähintään 80 prosenttia
arkkitehtuurisuunnitelmista toteutuu ja projektit
pannaan täytäntöön seuraavien 3 – 12 kuukauden
aikana, on tilanne usein hyvä.”
http://pages.tieto.com/Business-and-IT-
transformation.html?utm_source=tieto.com&utm_medium=link&
utm_campaign=transformation%20research
Kysyttävää?
Miksi
ohjelmistoarkkitehtuuri on
tärkeä?
Ohjelmistoarkkitehtuurit 2016 16
Miksi
ohjelmistoarkkitehtuuri on
tärkeä?
•Tarjoaa abstraktiotason, jolla monet keskeiset järjestelmän
kehittämiseen liittyvät ongelmat ratkaistaan
•Keskeinen kommunikoinnin väline ohjelmiston elinkaaren
aikana: määrittelee ja nimeää järjestelmän keskeiset osat,
ratkaisut, käsitteet
•Arkkitehtuuri antaa rajat ja helpottaa (tai tekee
mahdolliseksi) järjestelmän rakentamista, testausta,
ylläpitoa ja uudelleenkäyttöä
•Ensimmäinen analysoitavissa oleva järjestelmän
esitysmuoto: järjestelmää voidaan “testata” ennen
toteutusta
Ohjelmistoarkkitehtuurit 2016 17
AEON Center (Carrara-marmorin korvaaminen
80 000 000 $ refaktorointi)
Mitä seurauksia
epäonnistuuneella
ohjelmistoarkkitehtuurilla on?
Epäonnistuneen
ohjelmistoarkkitehtuurin
seurauksia
• järjestelmää ei pystytä toteuttamaan
• järjestelmä ei valmistu suunnitellussa ajassa
• järjestelmä ei skaalaudu
• järjestelmä on tehoton
• järjestelmää on vaikea testata
• järjestelmää on vaikea ylläpitää
• järjestelmää ei pystytä uudelleenkäyttämään
• järjestelmää ei pystytä siirtämään toiseen ympäristöön
Ohjelmistoarkkitehtuurit 2016 21
Syitä epäonnistuneeseen
arkkitehtuuriin
22
- huono kommunikaatio
- arkkitehtuurin kannalta olennaisia
vaatimuksia ei ole otettu huomioon
- arkkitehti on kokematon tai
heikkotahtoinen
- johdolta tuleva painostus
- kehitysprosessi ei tue
arkkitehtuuria
- arkkitehdiltä puuttuu kohdealueen
tuntemus
- muita?
Ohjelmistoarkkitehtuurit 2016
• Vasa-laivan tapauksessa laivan vakautta testattiin, ja tulos oli katastrofi, mutta
asia peiteltiin ja projektia jatkettiin, koska homma piti saada valmiiksi
• Kuninkaan vaatimus tykkimäärästä ei mahtunut yhteen kanteen, joten laivasta piti
tehdä kiireessä kaksikantinen
• Kiire, painostus
• Ristiriitaiset vaatimukset, nopeus, uusi teknologia, näyttävyys, mahtipontisuus,
näyttävyys vs. käytännöllisyys
• Suunnittelija ei ollut koskaan moisia tehnyt
• Painopiste liian ylhäällä, tykkikannet liian korkealla
• Tukirakenteet liian paksuja ja niitä liikaa
• Kansien korkeus turhan iso painopiste nousi
• Epäsymmetrisyys, eri mittayksikköjen käyttö
Anna esimerkki
ohjelmistoarkkitehtuurin tai
suunnittelun takia
epäonnistuneesta
projektista
Ohjelmistoarkkitehtuurit 2016 23
Kun ohjelmistoarkkitehtuuri
menee pieleen
Ohjelmistoarkkitehtuurit 2016 24
http://www.artechra.com/media/speaking/2008/JAOO20
08-Top10Mistakes.pdf
http://www.cse.psu.edu/~gxt29/bug/softwarebug.html
USS Yorktown - arkkitehtuurissa puutteita, päälle inhimillinen virhe
Ajoneuvoliikenteein rekisteri (PALKO) – aloitettiin 1999 päätökseen 2013 10+ vuotta myöhässä
Greyhound Lines ”Trips” (lippujenvaraus) – lentolippujenvarausjärjestelmän pohjalta kehitelty
epäonnistuminen
http://business.baylor.edu/Charles_Davis/courses/acc5
317/articles/toms1094.htm
Kysyttävää?
Ohjelmistoarkkitehtuuri ja
ohjelmistokehitysprosessi
Arkkitehtuurin kehittäminen
27
Arkkitehtuurin kannalta merkittävät vaatimukset
Alustava
arkkitehtuuriVaatimus-
analyysi
Arkkitehtuurin
arviointi
Alustava
arkkitehtuuri-
suunnittelu
Laatu-
vaatimuksen
huomiointi
Keskeiset
toiminnalliset
vaatimukset
Laatu-
vaatimukset
Arkkitehtuuri
Kaikki
käsitelty
ei
OK
Toissijaiset
toiminnalliset
vaatimukset
Inkrementaalisuus, agile:
pienin toteutettavissa oleva
arkkitehtuuri -> toteutus
Rajoitteet
Yksityiskohtainen
suunnittelu
OK
Yleisten ratkaisu-
mallien
soveltaminen
Arkkitehtuuri-
muunnos
Ympäristö-
vaatimukset
Ohjelmistoarkkitehtuurit 2016
Arkkitehtuurin kannalta merkittävät
vaatimukset
28
• Keskeiset toiminnalliset vaatimukset (mitä järjestelmä tekee)
- Usein lähtökohta arkkitehtuurin suunnittelulle
• Laatuvaatimukset (miten tehdään) vaikuttavat tyypillisesti
olennaisesti arkkitehtuuriin (“ei-toiminnalliset vaatimukset”)
- Esim. suorituskyky, muunneltavuus, skaalautuvuus, hinta, ylläpidettävyys, siirrettävyys, uudelleenkäytettävyys jne.
• Kehitysympäristövaatimukset
- Järjestelmä on pystyttävä järkevästi kehittämään tietyssäorganisaatiossa (esim. hajautettu kehitys)
• Suoritusympäristövaatimukset
- Esim. sulautetun järjestelmän laiteympäristö
• Rajoitteet
- Esim. tietyn teknologian sanelemat
Ympäristö-
vaatimukset
Ohjelmistoarkkitehtuurit 2016
Laatuvaatimusten yhteentörmäys
29
AsiakasJohto
Kustannus,
resurssitarveMarkkinointi
Piirrerunsaus,
nopeasti saatavilla,
yhteensopivuus
Loppukäyttäjä
Suorituskyky, luotettavuus,
käytettävyys
Ylläpitäjä
Muunneltavuus,
testattavuus
Hinta, vakaus,
toimitusvarmuus,
Arkkitehti
Ohjelmistoarkkitehtuurit 2016
Arkkitehtuurin arviointi
30
• Monet ohjelmiston laatuominaisuudet olisivat pääteltävissä
jo arkkitehtuurikuvauksesta(esim. tiukka kerrosarkkitehtuuri -> suorituskykyongelmat)
• Arkkitehtuurin arviointi = laatuvaatimusten tarkennus +
arkkitehtuurin arviointi tarkennettuja laatuvaatimuksia
vasten(esim. ATAM)
• Arkkitehtuurin arviointi on ohjelmiston testaamista sen
ensimmäisen täsmällisen kuvauksen perusteella
Ohjelmistoarkkitehtuurit 2016
Arkkitehtuurin kehittäminen
31Ohjelmistoarkkitehtuurit 2016
Tehdään arkkitehtuuri ensin
up-front
Sprint
Backlog
Product
Backlog
Sprint
Backlog
Potentially
shippable
product
increment
Analysis
Sprint
Backlog
Delivered
product
Potentially
shippable
product
increment
Sprint
Sprint
Sprint
Sprint retrospective
Sprint review
2-4 weeks
2-4 weeks
Architecture
design
Architecture
design
32Ohjelmistoarkkitehtuurit 2016
Sprint 0
Sprint
Backlog
Product
Backlog
Sprint
0
Sprint
0
Architecture,
development
environment,
etc..
Analysis
Sprint
Backlog
Delivered
product
Potentially
shippable
product
increment
Sprint
Sprint
Sprint
Sprint retrospective
Sprint review
2-4 weeks
2-4 weeks
33Ohjelmistoarkkitehtuurit 2016
Arkkitehtuuri sprinteissä
Sprint
Backlog
Product
Backlog
Sprint
Backlog
Potentially
shippable
product
increment
Analysis
Sprint
Backlog
Delivered
product
Potentially
shippable
product
increment
Sprint
Sprint
Architecture
design
Architecture
design
Sprint retrospective
Sprint review
2-4 weeks
2-4 weeks
Sprint
Architecture
design
Architecture
design
Architecture
design
Architecture
design
34Ohjelmistoarkkitehtuurit 2016
Erillinen arkkitehtuuritiimi
Sprint
Backlog
Product
Backlog
Sprint
Backlog
Potentially
shippable
product
increment
Analysis
Sprint
Backlog
Delivered
product
Potentially
shippable
product
increment
Sprint
Sprint
Sprint
Sprint retrospective
Sprint review
2-4 weeks
2-4 weeks
Architecture
team
Architecture
teamXOR
35Ohjelmistoarkkitehtuurit 2016
Kanban ja arkkitehtuuri…
• https://scalingsoftwareagility.wordpress.com/2010/03/05/an-agile-architectural-epic-kanban-system-part-2-%E2%80%93-the-model/
Ohjelmistoarkkitehtuurit 2016 36
Vaatimukset
• Arkkitehtuurin kannalta merkittävätvaatimukset on yleensä priorisoitu- Tyypillisesti yksi tai kaksi laatuvaatimusta dominoi
arkkitehtuuria, vähemmän tärkeiden täytyy mukautua
• Vaatimusten ja arkkitehtuuriratkaisujen yhteyden säilyttäminen olennaista- Kuinka järjestelmä täyttää arkkitehtuurin kannalta merkittävät
vaatimukset, erityisesti laatuvaatimukset
• Vaatimukset muuttuvat järjestelmän elinkaaren aikana- Walking on water and developing software from
specifications are easy tasks – when both are frozen (E. Bevard)
37Ohjelmistoarkkitehtuurit 2016
• Architecture in Agile World, James Cooper
– http://www.slideshare.net/jamescooper/archite
cture-in-an-agile-world
• Janne Sinivirta – All hand on deck, Intro to
Agile Architechture
– https://vimeo.com/84116089
Ohjelmistoarkkitehtuurit 2016 38
Kysyttävää?
Ohjelmistoarkkitehtuuri ja
organisaatio
40
Conwayn laki: arkkitehtuurin rakenne = organisaation rakenne
ryhmä
henkilö henkilö
ali-
järjestelmä
komponentti komponentti
liiketoiminta-
yksikköjärjestelmä
Ohjelmistoarkkitehtuurit 2016
Ohjelmiston osittaminen
41
Perusteena voi olla:
• toiminnallisuus
• yleisyys
• hajautus
• muutosherkkyys
• intressi, huolenaihe
(concern)
• ...huolenaihe
Ohjelmistoarkkitehtuurit 2016
Koodi
LokiLoki
TurvallisuusTurvallisuus
Sessiot
Läpitunkeva toiminta
(cross-cutting concerns)
42
LokiLoki
TurvallisuusTurvallisuus
Sessiot
Koodi
LokiLoki
TurvallisuusTurvallisuus
Sessiot
LokiLoki
TurvallisuusTurvallisuus
KoodiKoodi
Ohjelmistoarkkitehtuurit 2016
SessiotKoodi
Aspektit
43
LokiLoki
TurvallisuusTurvallisuus
Sessiot
Koodi TurvallisuusTurvallisuusLokiLoki
KoodiKoodi
Ohjelmistoarkkitehtuurit 2016
1.8 Toteutusalustan
arkkitehtuuri
44
• Toteutusalusta pakottaa sovellukselle usein tietyn arkkitehtuurin
• Sovellus rakennetaan tämän arkkitehtuurin ehdoilla
• Sovelluskehityksen keskeinen kysymys on miten vaatimukset
saadaan toteutettua alustan tarjoamilla välineillä
Esimerkiksi:
Miten vaatimukset toteutetaan J2EE-alustalla?
Miten vaatimukset toteutetaan .NET-alustalla?
Miten vaatimukset toteutetaan Qt-alustalla?
Ohjelmistoarkkitehtuurit 2016
Kehitys kulkee kohti arkkitehtuuritason
toteutusvälineitä
45
Toteutusvälineet:
Muuttujat
Aliohjelmat
Luokat
Komponentit
Alustat
Ekosysteemit
ohjelmointikieli
ohjelmistoarkkitehtuuri
Ohjelmistoarkkitehtuurit 2016
Arkkitehtuuriperustainen
ohjelmointi, mitä
vaatimuksia tämä asettaa
ohjelmistoarkkitehtuurille?
Ohjelmistoarkkitehtuurit 2016 46
Mitä vaatimuksia tämä asettaa
ohjelmistoarkkitehtuurille?
47
• geneerinen: sopiva monille sovelluksille
• tavallisen ohjelmoijan ymmärrettävissä
• kuvattu täsmällisesti ja kattavasti
• kuvattu käyttäjän (so. sovellusohjelmoijan) kannalta
Kun ohjelmistoarkkitehtuuri on osa toteutusvälineistön
kuvausta, sen tulee olla:
Ohjelmistoarkkitehtuurit 2016
Yhteenvetoa
48
• Ohjelmistoarkkitehtuuri on järjestelmän keskeisiä
ratkaisuja koskeva kuvaus, joka mahdollistaa
järjestelmän hallinnan sen elinkaaren aikana
• Ohjelmistoarkkitehtuurilla ja ohjelmiston laadulla on
kiinteä yhteys: arkkitehtuuri on suuressa määrin
laatuominaisuuksien tukemista
• Ohjelmistokehityksestä on tullut arkkitehtuurikeskeistä:
monet lähestymistavat ja teknologiat perustuvat tai
liittyvät läheisesti arkkitehtuuriin
Ohjelmistoarkkitehtuurit 2016
Tehtävä
Kukkia ja LVI-tekniikka Vammalassa ja
Korpilahdella myyvä yritys Keijon Kukka ja LVI on
laajentamassa toimintaansa verkkoon. Uuden
toimintamallin mukaan asiakkaat voivat tilata
Keijon Kukka ja LVIltä valmiita kukkapaketteja ja
putkiremontteja. Olette voittaneet tarjouspyynnön
ja saaneet tilauksen Keijon Kukka ja LVIn
verkkokauppasovelluksesta.
Mitkä asiat vaikuttavat järjestelmän arkkitehtuuriin?
49Ohjelmistoarkkitehtuurit 2016
Kysyttävää?