11. Kehysarkkitehtuurit

Samankaltaiset tiedostot
8. Kehysarkkitehtuurit

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit. Kevät

12. Kehysarkkitehtuurit

Johdanto Kehystyypit Kehysten arkkitehtuurilähestymistavat Kehykset ja suunnittelumallit Kehysten etuja ja ongelmia Yhteenvetoa

Ohjelmistoarkkitehtuurit kehysarkkitehtuurit. Kevät 2014

Ohjelmistoarkkitehtuurit kehysarkkitehtuurit. Kevät 2016

Kehyspohjainen ohjelmistokehitys

8. Framework architectures

11. Kehysarkkitehtuurit

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

Ohjelmistokehykset (software frameworks)

Ohjelmistoarkkitehtuurit, syksy

Ohjelmistoarkkitehtuurit. Kevät Johannes Koskinen.

Ohjelmistokehykset (software frameworks)

Kehyksillä toteuttettujen tuotelinjojen rakenteellinen optimointi

Luento 8. Ohjelmistokehykset Tuoteperheet CSM14101 Ohjelmistoarkkitehtuurit

10. Tuoterunkoarkkitehtuurit

7. Tuoterunkoarkkitehtuurit

Tuoterunko hajautetussa ympäristössä

Ohjelmistoarkkitehtuurit kevät Muunneltavuuden hallinta: variaatiopisteet. Ohjelmistot muuntuvat kahdessa dimensiossa

Ohjelmistoarkkitehtuurit. Kevät 2014

Tuoterunkoarkkitehtuurit. Ohjelmistoarkkitehtuurit kevät Uudelleenkäyttö. Johannes Koskinen.

Ohjelmistoarkkitehtuurit. Kevät

11. Tuoterunkoarkkitehtuurit

11. Tuoterunkoarkkitehtuurit

Harjoitustehtävät ja ratkaisut viikolle 48

Avoimet ohjelmistokehykset

Ohjelmistoarkkitehtuurit, syksy

9. Muunneltavuuden hallinta

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

3. Komponentit ja rajapinnat

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

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite

Ohjelmistoarkkitehtuurit Komponentit Kevät 2016

Oliosuunnittelu. Oliosuunnittelu

Ohjelmistoarkkitehtuurit kevät

Komponentit ja rajapinnat

OHJELMISTOKEHYSTEN ERIKOISTAMISTUTORIAALIT FRED- YMPÄRISTÖSSÄ

Muutamia peruskäsitteitä

Rajapinta (interface)

Ohjelmistoarkkitehtuurit harjoitustyö RobotWarGame RobotFW SimulationFW SimulationGUIFW SWT/Java Kuva 1: Esimerkki arkkitehtuurin kerroskuvasta

Ohjelmistoarkkitehtuurit Tuoterungot. Kevät 2016

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

Muunneltavuuden hallintaa Kevät 2016 Samuel Lahtinen. Ohjelmistoarkkitehtuurit 2016

Ohjelmistoarkkitehtuurit Komponentit Kevät 2014

Uudelleenkäytön jako kahteen

Ohjelmistojen suunnittelu

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

13/20: Kierrätys kannattaa koodaamisessakin

TIE Ohjelmistojen suunnittelu

TIE Ohjelmistojen suunnittelu

Johdanto Näkökulmat tuoterunkoihin perustuvaan ohjelmistokehitykseen: liiketoiminta, organisaatio, prosessi, tekninen Tuoterunkojen etuja ja ongelmia

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

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

Sisällys. Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2

Olio-ohjelmoinnissa luokat voidaan järjestää siten, että ne pystyvät jakamaan yhteisiä tietoja ja aliohjelmia.

Graafinen käyttöliittymä, osa 1

Mitä on periytyminen?

C++ Vol 1. Stanley B. Lippman Josée Lajoie. Copyright IT Press Tämän e-kirjan kopiointi, tulostaminen ja jakeleminen eteenpäin luvatta on kielletty.

TEPPO LAINIO KOMPONENTTIKEHYKSEN KEHITYS JA KÄYTTÖÖNOT- TO DYNAMICS CRM KEHITYSTYÖN TUEKSI. Diplomityö

T Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

JReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä

TIE Ohjelmistojen suunnittelu. Luento 8..9: moniperintä

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Muunneltavuuden hallinta (Variability management):

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

1. Olio-ohjelmointi 1.1

TIE Ohjelmistojen suunnittelu

Helsingin yliopisto Tietojenkäsittelytieteen laitos Ohjelmistotuotantoprojekti. Esimerkkituoteperhe

Aalto Yliopisto T Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

Plugin-pohjaiset sovellukset arkkitehtuurit

Graafinen käyttöliittymä, osa 3

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Ohjelmistoarkkitehtuuri

Ohjelmoinnin peruskurssien laaja oppimäärä

815338A Ohjelmointikielten periaatteet

10. Muunneltavuuden hallinta: variaatiopisteet

10. Muunneltavuuden hallinta: variaatiopisteet

6 Ohjelmistoarkkitehtuurit

Ohjelmistotekniikan menetelmät, suunnittelumalleja

Convergence of messaging

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Kontrollipolkujen määrä

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ilkka Veteläsuo. Ohjelmistokehysten hyödyntäminen verkkopalvelun kehitystyössä

Olio-ohjelmointi Syntaksikokoelma

Ohjelmistoarkkitehtuurit, syksy

Standardit tietoturvan arviointimenetelmät

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

KERROSARKKITEHTUURIN SUUNNITTELUMALLIT. Kuisma Lehtonen Joensuun yliopisto Tietojenkäsittelytiede Pro gradu -tutkielma

Suunnittelumallien käyttö ohjelmistosuunnittelussa

Viestinvälitysarkkitehtuurit

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

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

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

T Hypermediadokumentin laatiminen. Sisältö. Tavoitteet. Mitä on www-ohjelmointi? Arkkitehtuuri (yleisesti) Interaktiivisuuden keinot

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Transkriptio:

11. Kehysarkkitehtuurit Johdanto Kehystyypit Kehykset ja arkkitehtuuri Kehykset ja suunnittelumallit Kehyspohjainen ohjelmistokehitys Esimerkkikehys Kehysten toteutuksesta Kehysten etuja ja ongelmia Yhteenvetoa 1

Johdanto Mikä on (ohjelmisto)kehys? Ohjelmistokehys on standardi olioparadigman tapa toteuttaa tuotealusta. Kehys muodostuu kokoelmasta luokkia, jotka toteuttavat tuoteperheen yhteisen arkkitehtuurin ja toiminnallisuuden. Kehys erikoistetaan tuotteeksi. 2

Kehys erikoistetaan toimivaksi tuotteeksi Kehys Sovelluskohtainen koodi kontrolli Erikoistamisrajapinta 3

Sovelluskehys vs. perinteinen ohjelmakirjasto: Hollywood-periaate Aliluokkia, komponentteja Sovelluskohtainen Sovellus Uudelleenkäytettävä Sovelluskehys Aliohjelmia, luokkia, moduuleita Hollywood-periaate: Älä soita meille, me soitetaan teille 4

Sovellusalue: videopelit Perinteinen Liiketoimintanäkökulma kulma 1. peli 2. peli 3. peli työtuntia 0 100 200 300 400 500 600 700 800 900 Kehykseen perustuva Kehyksen rakentaminen + koulutus 1. peli 2. peli 3. peli Suorituskyky: aika +70% tila +200% 5

Erikoistamistekniikat kehyksissä rajapinnan toteutus periytyminen olioiden/komponenttien luonti, alustus ja konfigurointi geneeristen rakenteiden (esim. geneeriset luokat) instantiointi refleksiivisyys 6

Kehystyypit Erikoistamisen tulos Sovelluskehys: erikoistamisen tulos on sovellus Komponenttikehys (framelet): erikoistamisen tulos on komponentti Hierarkkinen kehys: erikoistamisen tulos on uusi kehys Erikoistamismekanismi Muunneltava kehys: erikoistaminen tehdään lähinnä periytymisellä Koottava kehys: erikoistaminen tehdään lähinnä instantioinnilla Plugin-kehys: erikoistaminen tehdään lähinnä rajapintojen toteutuksella 7

Muunneltavat kehykset A B 8

Koottavat kehykset A B <<create>> 9

Plugin-kehykset rajapintoja komponentteja 10

Kehykset ja arkkitehtuuri Kehyksen dekompositio: käsitemallipohjainen lähestymistapa Kehyksen dekompositio: komponenttipohjainen lähestymistapa Kehyksen kerrostaminen: hierarkkiset kehykset 11

Käsitemallipohjainen lähestymistapal OO-arkkitehtuurityyli : 1) Tee sovellusalueen käsitemalli 2) Hae ja lisää käsitemalliin yleistykset (kantaluokat) 3) Muunna käsitemalli luokkamalliksi 4) Tunnista variaatiopisteet luokkamallista 5) Suunnittele variaatiopisteiden toteutus (suunnittelumallit) 12

Esimerkki: Simulointikehys 13

<<framework>> SimulationFW Muunneltava (white-box) kehys <<interface>> Creature setmyworld(world) show() getx(): int gety(): int move() interact(creature) growold() die() * World getsize(): int add(creature) remove(creature) show() simulate(int, CreatureFactory) <<interface>> CreatureFactory 1 createcreature(): Creature DefaultCreature <<create>> DefaultCreatureFactory xcoord ycoord age setmyworld(world)... die() <<create>> createcreature(): Creature EatingCreature energy interact(creature) SimulationApp main() <<create>> <<create>> EatingCreatureFactory createcreature(): Creature 14

<<framework>> SimulationFW Koottava (black-box) box) kehys <<interface>> Creature setmyworld(world) show() getx(): int gety(): int move() interact(creature) growold() die() * World getsize(): int add(creature) remove(creature) show() simulate(int,creaturefactory) <<create>> <<interface>> CreatureFactory 1 createcreature(): Creature DefaultCreatureFactory DefaultCreature xcoord ycoord age setmyworld(world)... die() EatingCreature energy interact(creature) <<create>> <<create>> createcreature(): Creature EatingCreatureFactory createcreature(): Creature SimulationApp <<create>> main() 15

<<framework>> SimulationFW <<interface>> Creature setmyworld(world) show() getx(): int gety(): int move() interact(creature) growold() die() * World getsize(): int add(creature) remove(creature) show() simulate(int,creaturefactory) Plug-in kehys 1 PluginLoader <<interface>> CreatureFactory createcreature(): Creature load() <<load>> <<plugin>> EatingApplication EatingCreature SimulationApp energy main() interact(creature) <<create>> EatingCreatureFactory createcreature(): Creature 16

Komponenttipohjainen lähestymistapa: l Monoliittiset kehykset vs. frameletit Monoliittinen kehys Sovellus Kehys Framelet Framelet Komponentti Komponentti Erikoistus Erikoistus Erikoistus 17

Hierarkkinen kehys 18

Hierakkinen kehys kerrosrakenne Punamuurahaisten simulointisovellus Muurahaisten simulatointikehys Hyönteisten simulointikehys Eläinpopulaatioiden simulointikehys Yleinen simulointikehys 19

Hierakkinen kehys kerrosrakenne Verkonhallintasovellus Verkonhallintasovelluskehys Swing AWT 20