Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Samankaltaiset tiedostot
Ohjelmistotekniikan menetelmät, arkkitehtuuria ja rajapintoja

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Ohjelmistojen mallintaminen, suunnittelumalleja

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Palveluperustaiset arkkitehtuurityylit

Viestinvälitysarkkitehtuurit

Viestinvälitysarkkitehtuurit Lähtökohta:

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

Rajapinta (interface)

Ohjelmistoarkkitehtuurit

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

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi.

Ohjelmoinnin jatkokurssi, kurssikoe

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Ohjelmistojen mallintaminen Olioiden yhteistyö Harri Laine 1

Mikä yhteyssuhde on?

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit kevät

Suunnittelumalleja, MVC. Juha Järvensivu 2008

17. Javan omat luokat 17.1

Ohjelmistojen mallintaminen, sekvenssikaaviot

Tietorakennepohjaiset menetelmät

Ohjelmistojen mallintaminen Ohjelmiston suunnittelu Model driven development Harri Laine 1

Luokka- ja oliokaaviot

Graafisen käyttöliittymän ohjelmointi Syksy 2013

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

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

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VIII Suunnittelumallit Observer ja State

17. Javan omat luokat 17.1

Ohjelmistojen mallintaminen Tietovuokaaviot Harri Laine 1

UML Luokkakaavio 14:41

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

16. Javan omat luokat 16.1

Java kahdessa tunnissa. Jyry Suvilehto

Ohjelmistoarkkitehtuurit, syksy

A TIETORAKENTEET JA ALGORITMIT

4. Luokan testaus ja käyttö olion kautta 4.1

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Metodien tekeminen Javalla

Arkkitehtuurityylejä ja ratkaisumalleja

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

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

UML - unified modeling language

Olio-ohjelmointi Javalla

Tietorakenteet, laskuharjoitus 3, ratkaisuja

1. Mitä tehdään ensiksi?

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

2. Olio-ohjelmoinista lyhyesti 2.1

Ohjelmistotuotanto. Luento

Suunnitteluvaihe prosessissa

Javan perusteita. Janne Käki

Tietokanta (database)

Vertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

Oppimistavoitteet. Arkkitehtuurityylejä. Microservices. Microservices. Microservices LISÄÄ ARKKITEHTUURITYYLEJÄ. Arkkitehtuurityylejä

18. Abstraktit tietotyypit 18.1

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

Arkkitehtuurityylejä ja suunnittelutaktiikoita

1 Tehtävän kuvaus ja analysointi

JUnit ja EasyMock (TilaustenKäsittely)

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

Ohjelmistotuotanto, suunnittelu Syksy Suunnittelu. Suunnittelun tulos. Suunnitteluprosessin työvaiheet. Suunnitteluprosessi.

Jypelin käyttöohjeet» Miten voin liittää törmäyksiin tapahtumia?

P e d a c o d e ohjelmointikoulutus verkossa

Ohjelmistoarkkitehtuurit Kevät 2014 Arkkitehtuurityylit vol 2

Sisällys. 12. Näppäimistöltä lukeminen. Yleistä. Yleistä

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

4. Olio-ohjelmoinista lyhyesti 4.1

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä. Tiedonkätkentä. Aksessorit. 4.2

Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi

jotakin käyttötarkoitusta varten laadittu kokoelma toisiinsa liittyviä säilytettäviä tietoja

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet

15. Ohjelmoinnin tekniikkaa 15.1

Ohjelmistotekniikan menetelmät, toteutuksesta ja testauksesta

Johdatus sovellussuunnitteluun, s99, osa3 Helsingin yliopisto;/tktl Harri Laine 1. Olioiden väliset yhteydet. Olioiden väliset yhteydet

Järjestelmäarkkitehtuuri (TK081702)

Ohjelmistoarkkitehtuurit, syksy

Ohjelmistotekniikan menetelmät, UML

12. Näppäimistöltä lukeminen 12.1

6. Suunnittelu. Suunnittelun tulos

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Sisältö. 2. Taulukot. Yleistä. Yleistä

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Hirviö. Design Patterns

Microsoft Visual Studio 2005

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

UML -mallinnus LUOKKAKAAVIO EERO NOUSIAINEN

T Henkilökohtainen harjoitus: FASTAXON

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

UML- mallinnus: Tilakaavio

Java-API, rajapinnat, poikkeukset, UML,...

Sisältö. 22. Taulukot. Yleistä. Yleistä

Transkriptio:

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri 2 28.11.2008 Harri Laine 1

Ohjelmistoarkkitehtuuri Rajapinta UML:ssä piirteiden (attribuuttien ja operaatioiden) kokoelma, josta ei voi suoraan luoda ilmentymiä rajapinnan toteuttava olio tarjoaa julkisen pääsyn ko. piirteisiin rajapinta käytettävissä vain toteuttavien luokkien kautta - toteuttava luokka perii rajapinnan Rajapintaa käytetään usein attribuuttien ja parametrien tyyppinä, kuvaamaan sitä, että mikä tahansa rajapinnan toteuttava olio voi olla todellisena parametrina 28.11.2008 Harri Laine 2

Ohjelmistoarkkitehtuuri Rajapinnat Javassa rajapinnassa voidaan määritellä vain vakioattribuutteja ja operaatioiden otsakkeita (ei toteutusta) luokka voi periä vain yhden (abstraktin tai konkreettisen) luokan, mutta voi toteuttaa useita rajapintoja Abstrakti luokka (abstract class) esittelee vähintään yhden operaation, jota ei ole toteutettu kyseisessä luokassa ei voi suoraan luoda ilmentymiä 28.11.2008 Harri Laine 3

Ohjelmistoarkkitehtuuri Rajapintojen kuvaustavat <<interface>> A toteutusriippuvuus= perinnältä näyttävä ja pitkälti sitä vastaava A A ClassA ClassA ClassA 28.11.2008 Harri Laine 4

Ohjelmistoarkkitehtuuri Rajapintojen avulla voidaan poistaa joitain riippuvuussyklejä. Rajapinta sisällytetään tällöin samaan pakkaukseen kuin sen käyttäjä 28.11.2008 Harri Laine 5

Ohjelmistoarkkitehtuuri 28.11.2008 Harri Laine 6

Ohjelmistoarkkitehtuuri 28.11.2008 Harri Laine 7

Proseduraalinen / tapahtumapohjainen ohjelmakontrolli Ohjelmiston toimintakontrolli (control flow) määrittää, mitä operaatioita ohjelmassa suoritetaan ja missä järjestyksessä Proseduraalinen kontrolli operaatiot käynnistetään proseduurikutsuilla. Jos operaatio tarvitsee syöttötietoa se odottaa kunnes on saanut tiedot, suorittaa käsittelynsä ja palauttaa kontrollin kutsujalle 28.11.2008 Harri Laine 8

Proseduraalinen / tapahtumapohjainen ohjelmakontrolli Tapahtumaperustainen kontrolli Ohjelman ytimenä on silmukka, joka odottaa ulkoisia tapahtumia (event) tapahtumajonosta. Tapahtuma voi olla esimerkiksi syötteen valmistuminen, häiriöilmoitus, ulkoa tuleva viesti. Tapahtuman aiheuttaja lähettää tapahtuman jonoon. Jonoa tarkkailevassa silmukassa tapahtuma ohjataan siitä kiinnostuneille käsittelijöille (silmukka kutsuu käsittelijää ja välittää sille tapahtuman) Käsittelijät on rekisteröity tapahtumista kiinnostuneiksi Yllä esitetty kuvaa asynkronista tapahtumankäsittelyä 28.11.2008 Harri Laine 9

Proseduraalinen / tapahtumapohjainen ohjelmakontrolli Tapahtumia voidaan käsitellä myös synkronisesti Tällöin tapahtumia ei viedä jonoon vaan tapahtuman aiheuttaja kutsuu suoraan rekisteröityneiden käsittelijöiden käsittelymetodia välittäen niille parametrina luomansa tapahtuman Tässäkään tilanteessa käsittelijän ei tarvitse odottaa syötettä. 28.11.2008 Harri Laine 10

Proseduraalinen / tapahtumapohjainen ohjelmakontrolli PDialogEvent PDialog +adddialoglistener() -firedialogevent() +dook() «layer» presentation «uses» PWindow +init() IPDialogListener +processdialogevent() «layer» control «uses» ICPresenter +init() CActioner +processdialogevent() public class PDialog { private CActioner IPDialogListener act; lst; private PDialogEvent evt; public void adddialoglistener(ipdialoglistener adddialoglistener(cactioner a) { l) act { lst = = a; l; } private void firedialogevent() { if (evt!= null) evt = new PDlgEvent(); if (lst (act!= null) lst.processdialogevent(evt); act.processdialogevent(evt); } } public void dook() { firedialogevent(); } } CInit public class CActioner { public void processdialogevent( PDialogEvent evt) { // do something with evt } } 28.11.2008 Harri Laine 11

Perusrakenne Ohjelmiston osiinjakoon vaikuttaa myös se millainen perusrakenne (arkkitehtuurityyli, architectural style) ohjelmistolle valitaan Seuraavassa esitellään lyhyesti muutamia: 28.11.2008 Harri Laine 12

Jaettu tietovarasto (repository) Osajärjestelmät käyttävät ja muokkaavat yhtä keskeistä tietovarastoa Osajärjestelmät ovat suhteellisen riippumattomia toisistaan, helppo lisätä uusia Yhteistyö tietovaraston kautta Kontrollin ohjaus osajärjestelmissä tai tietovarastossa Esimerkkejä: tietokantajärjestelmät, kääntäjät, CASE-ohjelmistot 28.11.2008 Harri Laine 13

Putket ja suodattimet Pipes and Filters Ohjelmisto saa syötteenään aineistoa, jonka käsittely on perusteltua jakaa useaksi peräkkäiseksi vaiheeksi Suoraviivainen ratkaisu ongelmaan olisi käyttää peräkkäisiin eräajoihin pohjautuvaa ratkaisua (batch sequential), jossa jälkimmäinen vaihe käyttää syöttöaineistonaan edellisen vaiheen tuottamaa tiedostoa ja aloittaa sen käsittelyn kun edellinen vaihe on saanut työnsä kokonaan valmiiksi 28.11.2008 Harri Laine 14

Putket ja suodattimet Putkiin ja suodattimiin perustuvassa ratkaisussa suodattimet (filters) hoitavat inkrementaalisesti tiedon käsittelyn Saapuvaa tietoa käsitellään saapumisjärjestyksessä. Tulostietoelementit voidaan tuottaa pienehkön syöttöaineiston osan perusteella. Suodatin ottaa tarvitsemansa määrän tietoa syöttöjonosta ja tuottaa tietoa tulosjonoon rikastaa, jalostaa, muuntaa esitysmuodon 28.11.2008 Harri Laine 15

Putket ja suodattimet UNIX putkia putket sed grep awk suodattimet 28.11.2008 Harri Laine 16

Model/View/Controller (MVC) MVC:ssä eristetään tietosisältö (model) sen esittämisestä (view) ja siihen kohdistuvan käsittelyn hallinnasta (controller). Sisältöoliot (model) pitävät sisällään kaikki esitettävät tiedot ja niiden muuttamiseen tarvittavat operaatiot. Ne eivät tiedä mitään käyttöliittymästä, tietojen esittämismuodoista eivätkä tiedoille käyttöliittymässä tehtävistä operaatioista. 28.11.2008 Harri Laine 17

Model/View/Controller Sisältöoliot tarjoavat käyttöliittymästä riippumattomat operaatiot tietojen hakuun ja muokkaukseen. Esim. sisältöolio kello: ylläpitää sisäisesti kellonaikaa tarjoaa operaation ajan kysymiseksi tarjoaa operaatiot ajan asettamiseksi 28.11.2008 Harri Laine 18

Model/View/Controller Näkymäoliot (view) esittävät niihin liitettyjen sisältöolioiden tilaa. Ne käyttävät hyväkseen sisältöolion kyselypalvelua saadakseen tilan selville. Esim. Kellon voisi liittyä kaksi näkymäoliota: analogianäyttö ja digitaalinäyttö. Ohjausoliot (controller) hallitsevat sitä, miten käyttäjä voi vaikuttaa sisältöolioiden tietoihin. 28.11.2008 Harri Laine 19

Model/View/Controller Application View Controller Model Database & Web Services 28.11.2008 Harri Laine 20

Model/View/Controller Sisältöolio rekisteröi näkymän lisää-näkymä operaatiolla ja vastaavasti se voi kytkeytyä siitä irti (poista-näkymä) Ohjain voi vaikuttaa suoraan näkymän tilaan tai epäsuorasti muuttamalla sisällön tilaa. Kun sisällön tila muuttuu sisältöolio tiedottaa asiasta kaikille olion tilasta kiinnostuneiksi rekisteröityneille näkymille. 28.11.2008 Harri Laine 21

Model/View/Controller Tarkkailija: olio, joka rekisteröityy kiinnostuneeksi kohteen tilasta ja tarjoaa kuuntelupalvelun (update), jonka avulla tilamuutoksesta tiedotetaan sisältö * tarkkailija (observer) näkymä ohjain 28.11.2008 Harri Laine 22

Asiakas - palvelin Client- server Palvelin osajärjestelmä tarjoaa palveluita asiakas osajärjestelmille. Palvelupyynnöt etäproseduurikutsuina tai välittäjän kautta. 28.11.2008 Harri Laine 23

Kolmikerrosarkkitehtuuri Kolme kerrosta: liittymä (interface) kaikki oliot, joiden kanssa käyttäjä on tekemisissä sovelluslogiikka (application logic) Ohjaus- ja sisältöoliot, jotka toteuttavat sovelluslogiikan tallennus ajokerrasta toiseen säilyvän tiedon tallennus Nelikerrosarkkitehtuurissa liittymä jakautuu asiakas (asiakaskoneessa) ja palvelinosiin (palvelimessa) 28.11.2008 Harri Laine 24