11. Kehysarkkitehtuurit

Samankaltaiset tiedostot
Ohjelmistoarkkitehtuurit

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

Kehyspohjainen ohjelmistokehitys

11. Kehysarkkitehtuurit

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

Ohjelmistokehykset (software frameworks)

Ohjelmistokehykset (software frameworks)

Luento 8. Ohjelmistokehykset Tuoteperheet CSM14101 Ohjelmistoarkkitehtuurit

10. Tuoterunkoarkkitehtuurit

7. Tuoterunkoarkkitehtuurit

Tuoterunko hajautetussa ympäristössä

Ohjelmistoarkkitehtuurit. Kevät 2014

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

Harjoitustehtävät ja ratkaisut viikolle 48

Avoimet ohjelmistokehykset

Ohjelmistoarkkitehtuurit, syksy

9. Muunneltavuuden hallinta

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

3. Komponentit ja rajapinnat

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

Komponentit ja rajapinnat

Muutamia peruskäsitteitä

Rajapinta (interface)

Ohjelmistoarkkitehtuurit Tuoterungot. Kevät 2016

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

Ohjelmistojen suunnittelu

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

TIE Ohjelmistojen suunnittelu

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

1. Olio-ohjelmointi 1.1

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

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

Ohjelmistojen mallintaminen. Luento 11, 7.12.

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

Ohjelmistoarkkitehtuurit, syksy

Standardit tietoturvan arviointimenetelmät

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

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