Ohjelmistoarkkitehtuurit. Kevät 2014 Kertausta



Samankaltaiset tiedostot
2 Ohjelmistoarkkitehtuurien kuvaaminen

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit. Kevät 2014, luento 3 Arkkitehtuurin kuvaus (mallinnus)

Viestinvälitysarkkitehtuurit

Viestinvälitysarkkitehtuurit Lähtökohta:

Ohjelmistoarkkitehtuurit. Kevät 2016, luento 3 Arkkitehtuurin kuvaus (mallinnus)

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

Ohjelmistoarkkitehtuurit kevät

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit. Kevät Johannes Koskinen.

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Ohjelmistoarkkitehtuurit

6. Arkkitehtuurityylit

Ohjelmistoarkkitehtuurit kevät

6. Arkkitehtuurityylit

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit Johannes Koskinen. Osittavat arkkitehtuurityylit

2 Ohjelmistoarkkitehtuurien kuvaus

Ohjelmistoarkkitehtuuri

3. Komponentit ja rajapinnat

Ohjelmistoarkkitehtuurit Kevät 2014 Arkkitehtuurityylit vol 2

9. Muunneltavuuden hallinta

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit Kevät käytäntöjä

Ohjelmistoarkkitehtuurit Komponentit Kevät 2014

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit kevät

Komponentit ja rajapinnat

10. Muunneltavuuden hallinta: variaatiopisteet

10. Muunneltavuuden hallinta: variaatiopisteet

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistoarkkitehtuurit. Kevät

Suunnitteluvaihe prosessissa


Ohjelmistoarkkitehtuurit. Syksy 2008

Ohjelmistoarkkitehtuurit Muunneltavuuden hallintaa, Ylläpidosta kevyesti, Vähän rääppeitä aiemmilta kerroilta

Ohjelmistoarkkitehtuurit. Syksy 2010

Ohjelmistoarkkitehtuurit, syksy

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Palveluperustaiset arkkitehtuurityylit

UML:n yleiskatsaus. UML:n osat:

Ohjelmistoarkkitehtuurit Kevät 2016 Arkkitehtuurityylit vol 2

Arkkitehtuurityylejä ja ratkaisumalleja

Muunneltavuuden hallintaa Kevät 2016 Samuel Lahtinen. Ohjelmistoarkkitehtuurit 2016

Toiminnot eli käyttäytyminen. Tieto eli rakenteelliset ominaisuudet

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit Kevät käytäntöjä

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

12. Kehysarkkitehtuurit

CQRS, -ES, PACS, DICOM, WTF?

Ohjelmistoarkkitehtuurit kevät

Ohjelmistojen mallintaminen, kesä 2010

Ohjelmistojen mallintaminen, kesä 2009

Helsingin yliopisto/tktl DO Tietokantojen perusteet, s 2000 Johdanto & yleistä Harri Laine 1. Tietokanta. Tiedosto

Vaatimusmääritelystä UML:n avulla

Muunneltavuuden hallinta (Variability management):

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

HSMT J2EE & EJB & SOAP &...

Ohjelmistoarkkitehtuurit Komponentit Kevät 2016

Ohjelmistotekniikan menetelmät, UML

TIE Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely

7 Viestipohjaisten yritysjärjestelmien suunnittelumallit

Ohjelmistojen suunnittelu

T Tietojenkäsittelyopin ohjelmatyö Hirviöryhmä loppukatselmointi. Hirviö. Projektikatselmointi

IIO30100 Tietokantojen suunnittelu (6 op)

Analyysi on tulkkaamista

Tietojärjestelmän osat

TIE Ohjelmistojen suunnittelu

Arkkitehtuuripankki. Mallintamisen metamalli ja notaatiot

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

2 Ohjelmistoarkkitehtuurien kuvaus

IIO30100 Tietokantojen suunnittelu (6 op)

OA:n kanoninen malli I

Ohjelmistoarkkitehtuurit. Kevät

HOJ J2EE & EJB & SOAP &...

IIO30100 TIETOKANTOJEN SUUNNITTELU (6 OP)

Ohjelmistojen mallintaminen kertausta Harri Laine 1

TIE Ohjelmistojen suunnittelu

Sisällys. Valtion tietotekniikan rajapintasuosituksia. XML:n rooleja sähköisen asioinnin tavoitearkkitehtuurissa. dbroker - asiointialusta

RECO irtaimiston- ja omaisuuden hallinta

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Ohjelmistojen mallintaminen Unified Modeling Language (UML)

Arkkitehtuurityylejä ja patterneja

Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.

JHS 179 ICT-palvelujen kehittäminen: Kokonaisarkkitehtuurin kehittäminen Liite 2 Arkkitehtuurikehyksen kuvaus

Integrointi. Ohjelmistotekniikka kevät 2003

Ohjelmistotekniikan menetelmät, kesä 2008

Harjoitustehtävät viikolle 42

Oppimistavoitteet. Arkkitehtuurityylejä ja patterneja. Tyylien ja patternien käytöstä. Kolmitasoarkkitehtuuri (N-Tier) Kolmitasoarkkitehtuuri (N-Tier)

Sähköiset palvelut - Isäntä ja renki

Unified Modeling Language

Copyright Observis Oy All rights reserved. Observis Oy Ville Kanerva, CTO Heikki Isotalus, COO Datasta tietoa

Written by Administrator Monday, 05 September :14 - Last Updated Thursday, 23 February :36

Arkkitehtuuri. Ylätason sovellusarkkitehtuuri

Ohjelmistojen mallintaminen Ohjelmistoarkkitehtuuri Harri Laine 1

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Transkriptio:

Ohjelmistoarkkitehtuurit Kevät 2014 Kertausta Samuel Lahtinen http://www.cs.tut.fi/~ohar/ 1

Sisältöä Hieman uutta asiaa/kertausta harjoitustöiden pohjalta Kurssin avainasioiden pikakelaus Tentin rakennetta, kysymyksiä 2

Tiedon mallintamisesta Järjestelmien ideana usein liikutella tietoa Tiedon käsittelymuoto, välitysmuoto, rakenne tärkeässä osassa Arkkitehtuuripäätös/ratkaisu Viestit, rajapinnat, tieto+metadata, rakenteinen tieto..., malli Vaikuttaa ohjelmiston rakenteeseen, ohjaa komponenttien jne. tarkempaa suunnittelua Mitkä asiat kiinnitetään, missä on joustavuutta? määrät, tyyppi, eri arvot/skaalat/tietotyypit Mahdollistaa konkreettisen suunnittelun 3

Esimerkkijärjestelmä: Autojen huollot, ajanvaraus, huoltotunnit, varaosat, laskutus nysväystä puljaamista Tietovarasto Käyttöliittymää, huoltamo käpistelyä Käyttöliittymää, laskutus 4

Esimerkkijärjestelmä: Autojen huollot, ajanvaraus, huoltotunnit, varaosat, laskutus 5

Tietomalli? käsitteeellisestä mallista konkreettisiin malleihin, tietokantatasolle Tietokanta ei välttämättä tallenna tietoja muun järjestelmän käyttämässä muodossa Data Modeling: http://www.sei.cmu.edu/reports/09tn024.pdf Yksi esimerkki: http://www.agiledata.org/essays/agiledatamodeling.html 6

Kurssiyhteenvetoa 7

Kurssihenkilökunnan ajatuksia Videojutuista alkuun vähän liikaa hässääkkää ja häiriötä, luennoija meni sekaisin Jos jatkoa tulee, niin tää homma toiminee paremmin ATAMit/DCARit menivät pääosin mukavasti, hyvin valmistautunutta porukkaa jne. Aikataulujutut jne liikaa säätöä Työkalut vaihtoon, IDLE käsin HTML:n nysvääminen, jne. aunarista, saadaanko jostain toimiva julkaisujärjestelmä Viikkoharkat sujuivat pienen alkusäädön jälkeen ok Aikataulu turhan repaleinen 8

Harjoitustyön tavoitteista Arkkitehtuurin luomiseen tarvitaan sovellusalueen, toteutustekniikoiden, yleisten hyvien ratkaisujen tuntemista, Itsenäinen selvitystyö Miten tämä toimisi, löytyykö tähän hyviä ratkaisutapoja? Mitä tekniikoita/alustoja on olemassa asiaa x varten? Lainsäädäntöä, tietoturvaan liittyvää asiaa, jne. Puuttuu vielä jonkun harjoitustyön osan tarkempi suunnittelu ja toteuttaminen 9

Kurssin asiat pikakelauksena 10

Mitä on ohjelmistoarkkitehtuuri? http://www.lessonsoffailure.com/developers/avoid -asshole-architect/ 11

Arkkitehtuurien kuvaamisesta 12

Arkkitehtuurinäkökulmat ja kuvaustyypit Näkökulmat: Skenaarionäkymät Vuorovaikutus ulkomaailman kanssa Loogiset näkymät Ohjelmistoyksiköiden vastuut Prosessinäkymät Prosessit ja niiden vuorovaikutus "4+1" (Kruchten) Kehitysnäkymät Järjestelmän jakaminen eri kehittäjille UML Fyysiset näkymät Ohjelmiston jako eri laiteyksiköille, verkko Muuntelunäkymät Ohjelmiston laajentaminen ja muuntelu 13

4+1 Prosessinäkymä(process view) Järjestelmän toiminnan jako loogisiin prosesseihin Prosessien kommunikointi - kontrollin kulku Rakenteet ja instanssit -samasta prosessirakenteesta voi olla useita instansseja Tärkeä rinnakkaisuutta sisältävien järjestelmien kuvauksessa Järjestelmän suorituskyvyn ja skaalautuvuuden arviointi Kehitysnäkymä (development view) Kuvaa järjestelmän jakoa kehitysyksiköihin pakkaukset, ohjelmistotekninen rakenne Fyysinen näkymä (physical view) Järjestelmän prosessointiyksiköt ja niiden yhteydet Prosessointiyksiköiden sisältämät fyysiset ohjelmistot (komponentit, resurssitiedostot, tietokannat,...) 14

4+1, osa 2 Skenaarionäkymä(scenario view) Nitoo yhteen 4 muuta näkymää ( +1 ) Järjestelmän vuorovaikutus käyttäjien ja muiden järjestelmien kanssa tietyssä käyttöskenaariossa Kuvaa järjestelmän rajapinnat ympäristöönsä Looginen näkymä (logical view) Toiminnallisuuden jakautuminen eri rakenneosien kesken Komponenttien velvollisuudet Koskee sekä staattisia rakenteita (esimerkiksi luokkia) että dynaamisia rakenteita (esimerkiksi olioita) 15

Skenaarionäkymä: käyttötapauskaavio CarRentalSystem Reserve vehicle Deliver vehicle Client Return vehicle Clerk <<include>> Service Service 16

RentableItem Car RentableStorage regnumber RentManager reserve(car,client) release(car) engage(car) return(car) update() setreturned setreserved setactive setid PrivateClient id name address creditcard Transaction kind info setkind setinfo TransactionManager handletransaction * 1 1 1 creates uses * manages * 1 rents setreturned Database Feature code description * <<interface>> LocationControl getpos(car) ItemManager 1 0..1 setcar(car) start() stop() reserve() release() engage() return() lost() recover() * creates Garage GPSService controller Client Store service information Looginen näkymä (rakenne): luokkakaavio 17

Fyysinen näkymä, sijoittelukaavio An XML infrastructure for archives, libraries and museums: resource discovery in the COVAX project 18

Muunneltavuusnäkymä: luokkakaavio feature Adding new item feature palette FeaturePalette Feature code description seticon(featureicon) price(): Integer * 1 FeatureIcon draw iconinterface initializer initcode add(feature) NewFeature price(): Integer myfeature NewFeatureIcon draw myicon initialize() Main... f = new NewFeature(...); fi = new FeatureIcon(...); f.seticon(fi); featurepalette.add(f);... 19

Komponentit Komponentit ovat arkkitehtuurin perusyksiköitä, jotka liitetään toisiinsa tarjottujen ja vaadittujen rajapintojen kautta Rajapintojen tulisi määritellä paitsi kutsumuoto myös sopimus rajapinnan käytöstä (esi- ja jälkiehdot) Komponentteja voidaan räätälöidä sen alkutilaa muuttamalla, vaihtamalla sen vaadittuihin rajapintoihin liittyviä muita komponentteja tai periyttämällä siitä erikoistettu komponentti Ohjelmistoarkkitehtuurit 2014 20

Suunnittelumalleista Suunnittelumallit antavat hyväksi havaittuja ratkaisuja yleisiin suunnitteluongelmiin Käytä suunnittelumallia vasta kun ongelma on selvästi ymmärretty Suunnittelumallit ovat kokemusperäistä tietoa, eivät innovaatioita Antisuunnittelumallit auttavat tunnistamaan ongelmakohtia Suunnittelumallit organisoidaan mallikieleksi käytön helpottamiseksi 21

Mitä pitää tietää Suunnittelumallien ulkoaopettelu tenttiin ei tarpeellista, ymmärrys ideasta ja käyttötavasta olennaisempaa Löydä annettu malli (patlet-kuvaus mallista annettuna) suunnittelumallin pidempi kuvaus, mitä ongelmia käytöstä (huolettomasta) saattaa olla? Komponenttien vuorovaikutus ja niihin liittyvät suunnittelumallit, perusideat koneenohjaus, pilvimaailma 22

Arkkitehtuurityylit Mitä löytyy, mihin soveltuvat, mikä perusidea? Kerros-, tietovuo-, asiakas-palvelin (eri muotoineen), viestinvälitys, tulkki jne. 23

Kerrosarkkitehtuurit Kerrosarkkitehtuuri (layer/tier architecture): Järjestelmän organisointi käsitetasoltaan nouseviin kerroksiin.. Ohjelmistoarkkitehtuurit 2014 30.4.2014 24

Tietovuoarkkitehtuurit (pipes and filters) Tietovuoarkkitehtuuri koostuu komponenteista (filter), jotka tuottavat ja kuluttavat tietoalkioita, ja tietoalkioita komponentilta toiselle kuljettavista väylistä (pipe). filter pipe filter pipe filter pipe pipe filter pipe filter Ohjelmistoarkkitehtuurit 2014 30.4.2014 25

Viestinvälitysarkkitehtuuri: perusidea rekisteröidyt komponentit 1) luo viesti 2) lähetä välittäjälle Komponenttien yhteinen rajapinta: receive(message) 3) päätä vastaanottaja(t) ja välitä viesti sille/niille rekisteröidyt komponentit 4) vastaanota Viesti Viestinvälittäjä 5) tulkitse/ prosessoi viesti Ohjelmistoarkkitehtuurit 2014 30.4.2014 26

Tulkkiarkkitehtuurin perusidea toimintakuvauksen sisäinen esitys Tuloste Jokin toiminnallinen kuvaus (teksti, XML, graafinen, ym.) Tulkki kutsuu Konkreettinen suoritusalusta noudattaa toteutus Syöte Kielen määritys Ohjelmistoarkkitehtuurit 2014 30.4.2014 27

Muunneltavuutta ja käärimistä Muunneltavuuden hallinnan ideat, muunneltavuuspisteet ja niiden dokumentointi Ylläpito ja evoluutio, muunnetavuus olemassa olevaan ohjelmistoon, kääriminen 28

Arkkitehtuurien arviointi Mitä tavoitteita, mitä tapoja on? Minkälaisiin kysymyksiin halutaan vastauksia? 29

Tuoterungot Mikä idea, miten voidaan varautua eri versioihin/eri alustoihin? 30

Ohjelmistokehykset Mikä idea, eri kehystyyppejä Hyödyt / ongelmat? Käyttäjä tai kehittäjä, mitä huomioita? 31

Yritysjärjestelmäjutut ja ekosysteemit Tiedon kulkua, integrointia, jne. Ekosysteemiajatelma Miten ekosysteemi vaikuttaa ohjelmistoon? (ohjelmistoalusta+muut vaikutukset) 32

Tent(e)istä

Mitä kuuluu tenttialueeseen? Karkeasti kaikki luennoilla käydyt jutut (myös spesiaalisessiot&vierailuluennot) Viikkoharjoitusten juttuja, kaikki normisessioiden perusjutut (tenttitehtävä voi olla viikkoharjoitustehtävän kaltainen) 34

Tenttiarkisto & kysymystyyppejä Kurssin sivuilta löytyy tenttiarkisto: http://www.cs.tut.fi/~ohar/tenttiarkisto Muutama esseehtävä tehtävä Joku kuvanpiirto tai kuvan ymmärtämistehtävä Väärin-oikein-väittämiä Suunnittelutehtävä tai olemassa olevan suunnitelman parantelu/muuttaminen 35

Esimerkkitehtäviä Alla on kuva järjestelmästä XYZ. Mitä arkkitehtuurityyliä on käytetty, entä mitä muita suunnitteluratkaisuita bongaat? Kuvaa lyhyesti esimerkin avulla tietovuoarkkitehtuuri (pipes-and-filters). Mitä etuja ja haittoja on tällä arkkitehtuurityylillä? Selitä lyhyesti mitä ongelmia voi liittyä valmiin tuoterungon käyttöön. Selitä lyhyesti mitä ongelmia voi liittyä tuoterungon kehittämiseen? Kerro lyhyesti millaisia erikoistamistekniikoita ohjelmistokehyksissä käytetään. Alla on kuvattu järjestelmä ja siihen liittyviä haasteita ja ongelmia. Olet saanut myös kokoelman erilaisia potentiaalisia patterneita/suunnittelumalleja. Mitä näistä käyttäisit, missä ja miksi? 36

Yhteenveto Tentti 7.5. klo 10-13, ei tarvitse ilmoittautua POP- ROCKissa Tentti alkaa tasan klo 10 Tentistä pääsee pois aikaisintaan 10:30 Materiaali-sivuilla koosteena joitakin kiinnostavia kirjoja ja koostetta julkaisuista yms. 37

Kysyttävää?