Harkat alkavat ensi viikolla Vierailuluentoaohar/materiaali2016/luento02_johdanto.pdf ·...

Preview:

Citation preview

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ää?

Recommended