8. Kehysarkkitehtuurit

Samankaltaiset tiedostot
11. 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

8. Framework architectures

Kehyspohjainen ohjelmistokehitys

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

11. Kehysarkkitehtuurit

Ohjelmistokehykset (software frameworks)

Ohjelmistoarkkitehtuurit. Kevät Johannes Koskinen.

Ohjelmistoarkkitehtuurit, syksy

Ohjelmistokehykset (software frameworks)

Kehyksillä toteuttettujen tuotelinjojen rakenteellinen optimointi

Luento 8. Ohjelmistokehykset Tuoteperheet CSM14101 Ohjelmistoarkkitehtuurit

Tuoterunko hajautetussa ympäristössä

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

Avoimet ohjelmistokehykset

Harjoitustehtävät ja ratkaisut viikolle 48

Ohjelmistoarkkitehtuurit kevät

10. Tuoterunkoarkkitehtuurit

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

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

7. Tuoterunkoarkkitehtuurit

3. Komponentit ja rajapinnat

Ohjelmistoarkkitehtuurit kevät

Komponentit ja rajapinnat

OHJELMISTOKEHYSTEN ERIKOISTAMISTUTORIAALIT FRED- YMPÄRISTÖSSÄ

Ohjelmistoarkkitehtuurit, syksy

Ohjelmistoarkkitehtuurit Komponentit Kevät 2016

Oliosuunnittelu. Oliosuunnittelu

13/20: Kierrätys kannattaa koodaamisessakin

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

Rajapinta (interface)

Ohjelmistoarkkitehtuurit. Kevät 2014

Muutamia peruskäsitteitä

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

Helsingin yliopisto Tietojenkäsittelytieteen laitos Ohjelmistotuotantoprojekti. Esimerkkituoteperhe

Plugin-pohjaiset sovellukset arkkitehtuurit

Ohjelmistoarkkitehtuurit Komponentit Kevät 2014

TIE Ohjelmistojen suunnittelu

TIE Ohjelmistojen suunnittelu

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

Mitä on periytyminen?

Graafinen käyttöliittymä, osa 1

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

Standardit tietoturvan arviointimenetelmät

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

Graafinen käyttöliittymä, osa 3

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

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

Ohjelmistoarkkitehtuurit. Kevät

11. Tuoterunkoarkkitehtuurit

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

1. Olio-ohjelmointi 1.1

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

11. Tuoterunkoarkkitehtuurit

Muunneltavuuden hallintaa Kevät 2016 Samuel Lahtinen. Ohjelmistoarkkitehtuurit 2016


TIE Ohjelmistojen suunnittelu

Uudelleenkäytön jako kahteen

Kontrollipolkujen määrä

JULKAISUJÄRJESTELMÄN JA OHJELMISTOKEHYKSEN VÄLISSÄ - OHJELMA KEVYIDEN WEB-SOVELLUSTEN TOTEUTTAMISEEN

Suorituskyky ja ohjelmistokehitys Suorituskykymallit

SOA & Ajax Sanahelinää vai toimivaa käytäntöä sähköisessä asioinnissa? Fenix hankejohtaja Harri Juuti Projektipäällikkö Teemu Karvonen

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Pieniä tietojenkäsittelytieteellisiä. Kesä 2007

Järjestelmäarkkitehtuuri (TK081702) Web Services. Web Services

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

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

Ohjelmistotekniikan menetelmät, suunnittelumalleja

KADA (Drupal 7) migraatio uuteen (versioon) webiin

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

Ohjelmoinnin peruskurssien laaja oppimäärä

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

9. Muunneltavuuden hallinta

Ohjelmistojen suunnittelu

Testausdokumentti. Kivireki. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Valppaan asennus- ja käyttöohje

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

12. Monimuotoisuus 12.1

Convergence of messaging

Testaustyökalut. Luento 11 Antti-Pekka Tuovinen. Faculty of Science Department of Computer Science

Microsoft Visual J++ ohjelmointiympäristö

Tietojärjestelmien integroiminen hyödyntämällä palvelupohjaista arkkitehtuuria. CASE: Metropolia. Jaakko Rannila & Tuomas Orama 1

Esityksen sisältö Määrittelyjen mukaisuudesta varmistuminen - PlugIT-leima

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

Suunnittelumallien käyttö ohjelmistosuunnittelussa

Ohjelmistoarkkitehtuuri

HELIA 1 (17) Outi Virkki Käyttöliittymät ja ohjelmiston suunnittelu

Opetus- ja koulutusyhteistyöhön liittyvä korkeakoulujen tietojärjestelmien yhteentoimivuuden kehittäminen ja arkkitehtuurityö

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

Osio 4: Graafinen käyttöliittymä

Sisällys. Ratkaisumallien historia. Ratkaisumalli. Ratkaisumalli [2] Esimerkki: Composite [2] Esimerkki: Composite. Jaakko Vuolasto 25.1.

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

Ohjelmistoarkkitehtuurit, syksy

Transkriptio:

8. Kehysarkkitehtuurit Johdanto Kehystyypit Esimerkki: Simulointikehyksen malleja Kehyspohjainen ohjelmistokehitys Kehykset ja suunnittelumallit 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

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

Kehystyypit Sovelluskehys: erikoistamisen tulos on sovellus Komponenttikehys (framelet): erikoistamisen tulos on komponentti Hierarkkinen kehys: erikoistamisen tulos on uusi kehys 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 6

Muunneltavat kehykset A B 7

Koottavat kehykset A B 8

Plugin-kehykset rajapintoja komponentteja 9

Monoliittiset kehykset vs. frameletit Monoliittinen kehys Sovellus Kehys Framelet Framelet Erikoistus Komponentti Komponentti Erikoistus Erikoistus 10

Hierarkkinen kehys 11

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

Hierakkinen kehys sovellusten kerrosrakenne Verkonhallintasovellus Verkonhallintasovelluskehys Swing AWT 13

Esimerkki: Simulointikehyksen malleja 14

<<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 DefaultCreatureFactory xcoord ycoord age setmyworld(world)... die() createcreature(): Creature EatingCreature energy interact(creature) SimulationApp main() EatingCreatureFactory createcreature(): Creature 15

<<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) <<interface>> CreatureFactory 1 createcreature(): Creature DefaultCreatureFactory DefaultCreature xcoord ycoord age setmyworld(world)... die() EatingCreature energy interact(creature) createcreature(): Creature EatingCreatureFactory createcreature(): Creature SimulationApp main() 16

<<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) EatingCreatureFactory createcreature(): Creature 17