T SEPA - päiväkirja: Design Patterns. ETL työkalu

Samankaltaiset tiedostot
T SEPA - päiväkirja: Design Patterns. ETL työkalu

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

Ohjelmistotekniikan menetelmät, suunnittelumalleja

Hirviö. Design Patterns

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VI Johdanto suunnittelumalleihin

T Henkilökohtainen harjoitus: FASTAXON

Hirviö. Design Patterns

Sunnittelumallit Harjoitustehtävät syksy 2015 / Simo Silander

SEPA - Design Patterns

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

Olio-ohjelmointi Johdanto suunnittelumalleihin. 1. Yleistä

Ohjelmistojen mallintaminen, suunnittelumalleja

Kehitysohje. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy

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

Olio-ohjelmointi Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton. 1. Proxy (Edustaja)

SEPA päiväkirja. Aihe: Suunnittelumallit Tekijät: Tuukka Laakso ja Antti Kettunen

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

Suunnittelumallit (design patterns)

Veto-visualisointityökalu

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

SEPA päiväkirja. Aihe: Suunnittelumallit Tekijät: Tuukka Laakso ja Antti Kettunen Ryhmä: Neptune T Ohjelmistoprojekti I

SEPA päiväkirja. BetaTeam. Juho Mäkinen, 57796V, Jari Leppä, 42710V, Versio Pvm Tekijä Kuvaus

SEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3

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

8/20: Luokat, oliot ja APIt

T Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Arkkitehtuuri- ja suunnittelumalli

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

Ohjelmistojen suunnittelu

Tarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen

Solidity älysopimus ohjelmointi. Sopimus suuntautunut ohjelmointi

Tämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:

Ylläpitodokumentti. Boa Open Access. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Muusta kuin vesisioista

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

T Testitapaukset TC-1

Suunnittelumallien käyttö ohjelmistosuunnittelussa

12. Kehysarkkitehtuurit

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Käyttöliittymät II. Käyttöliittymät I Kertaus peruskurssilta. Keskeisin kälikurssilla opittu asia?

Tekninen määrittely. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy

Ohjelmoinnin jatkokurssi, kurssikoe

ohjelman arkkitehtuurista.

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Projektinhallintaa paikkatiedon avulla

15. Ohjelmoinnin tekniikkaa 15.1

Ohjelmistotuotanto. Luento

Kehyspohjainen ohjelmistokehitys

Ohjelmistoarkkitehtuurit. Syksy 2010

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä

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

Oliosuunnittelu. Oliosuunnittelu

Santeri Saarinen Korjattu testaustasoja ja tehty tarkennuksia I1-testaukseen

Koodimalli Code Model

Tekninen määrittely. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

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

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

11/20: Konepelti auki

Uudet maksupalvelut valvojan ajankohtaiskatsaus

Laadunvarmistuksen suunnitelma. Ryhmä ExtraTerrestriaLs Aureolis Oy


I1 Iteraatiosuunnitelma. CoSCA-simulaattorin jatkokehitysprojekti. TeamDC

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

Suunnitteluvaihe prosessissa

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

Ohjelmistoarkkitehtuurit kevät

Sokkelon sisältö säilötään linkitetyille listalle ja tekstitiedostoon. Työ tehdään itsenäisesti yhden hengen ryhmissä. Ideoita voi vaihtaa koodia ei.

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistotuotanto. Luento

Good Minton Sulkapalloliiton Kilpailujärjestelmä SEPA: Heuristinen arviointi

5. Suunnittelumallit. TTY Ohjelmistotekniikka

Luento 4. T Ohjelmoinnin jatkokurssi T1 & T Ohjelmoinnin jatkokurssi L1. Luennoitsija: Otto Seppälä

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

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Suunnittelumalleja, MVC. Juha Järvensivu 2008

Ohjelmoinnin peruskurssien laaja oppimäärä

T Edistymisraportti. ExtraTerrestriaLs I1 iteraatio

Plugin-pohjaiset sovellukset arkkitehtuurit

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

Ohjelmoinnin peruskurssien laaja oppimäärä

Avoimen lähdekoodin kehitysmallit

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Kehyksillä toteuttettujen tuotelinjojen rakenteellinen optimointi

15. Ohjelmoinnin tekniikkaa 15.1

5. Suunnittelumallit. TTY Ohjelmistotekniikka

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

T Projektisuunnitelma

T Tekninen spesifikaatio

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Object Framework - One. OF-1 is a high-productive Multi-UI OpenEdge data driven development framework. Veli-Matti Korhonen

Ohjelmoinnin peruskurssien laaja oppimäärä

Uutisjärjestelmä. Vaatimusmäärittely. Web-palvelujen kehittäminen. Versio 1.3

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä

Menetelmäraportti - Konfiguraationhallinta

Toteutusvaihe T3 Digi-tv: Edistymisraportti

T Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Analyysimalli

Kertaus: yleistys-erikoistus ja perintä

Transkriptio:

T-76.115 SEPA - päiväkirja: Design Patterns ETL työkalu Versio Päivämäärä Tekijä Kuvaus 1.0 25.10.2004 Jani Honkanen PP-vaiheen jälkeinen versio 1,1 26.11.2004 Mika Suvanto I1- vaiheen kokemuksia lisätty 1,2 26.11.2004 Jani Honkanen Lisää I1- vaiheen kokemuksia lisätty 1.3 29.11.2004 Mika Suvanto Pieniä muutoksia tekstiin Sisällysluettelo 1 Johdanto...2 2 Menetelmä... 2 3 Kokemukset...2 3.1 PP projektin suunnittelu...2 3.2 I1 ensimmäinen toteutusvaihe...2 3.2.1 Arviointi... 3 4 Viitteet... 3 Liite 1 Suunnittelumallien sovelluskohteita projektissamme...4 Creational...4 Structural...4 Behavioral...5 Sivu 1 / 6

1 Johdanto Valitsimme SEPA-aiheeksemme suunnittelumallit (design patterns [1]). Olemme kiinnostuneita suunnittelumenetelmistä ja päätimme kerätä kokemusta yleisesti tunnettujen suunnittelumallien soveltamisesta tämänkaltaisessa, paljon suunnittelua sisältävässä projektissa. Suunnittelumallit oppii myös varmasti paremmin muistamaan, kun niitä on hyödyntänyt käytännössä. Lisäksi Jani toimii ryhmässä arkkitehtina, mikä sopii hyvin suunnittelumallien soveltamista ajatellen. 2 Menetelmä Suunnittelumalleja käytetään sekä arkkitehtuurisuunnittelussa että ohjelmoinnissa. Tarkoitus on käydä itsenäisesti läpi ennen I1-iteraation alkua, millaisia suunnittelumalleja on olemassa ja hyödyntää niitä koko projektin ajan sopivissa paikoissa. Teknistä dokumentaatiota ja ohjelmakoodia kirjoitettaessa suunnittelumallit nimetään kirjan Design Patterns mukaan. Kunkin toteutusiteraation (I1, I2 ja FD) sekä teknisen spesifikaation valmistumisen jälkeen pohdimme seuraavia asioita: 3 Kokemukset Auttoivatko käytetyt suunnittelumallit hyvien suunnitteluratkaisujen löytämisessä? Helpottiko nimettyjen suunnittelumallien käyttö kommunikointia tai selkeyttikö se dokumentaatiota? Jäikö paikkoja, joissa olisi vielä voinut tehokkaasti hyödyntää jotakin suunnittelumallia? 3.1 PP projektin suunnittelu Suunnittelumalleja käytetään lähinnä matalamman tason toteutussuunnittelussa, joten emme hyödyntäneet niitä vielä PP-vaiheessa. 3.2 I1 ensimmäinen toteutusvaihe Projektissamme I1 -vaihe sisälsi pääasiassa toteutettavan järjestelmän suunnittelua. Varsinainen implementointi jäi suhteellisen vähäiseksi. Tämän vuoksi emme myöskään voineet käyttää suunnittelumalleja vielä täydessä laajuudessaan. Tähän mennessä käytetyt suunnittelumallit ja potentiaaliset käyttöpaikat on lueteltu liitteessä 1. Vaiheen aikana tutustuimme alueen perusteokseen Design Patterns [1] sekä lukuisiin www:stä löydettyihin esimerkkeihin ja tutoriaaleihin, kuten [2]. Arkkitehtuurisuunnittelun yhteydessä järjestelmä kuvattiin komponenttitasolla. Tämän kuvauksen yhteydessä pohdittiin myös suunnittelumalleja, joita kussakin komponentissa voisi soveltaa. Lista tästä on liitteessä 1. Sivu 2 / 6

Varsinaista koulutustilaisuutta emme aiheesta pidä suunnittelumallit ovat kuitenkin periaatteltaan ryhmälle tuttuja, joten ajan säästämiseksi koulutus järjestetään itseopiskeluna. Materiaalia tähän löytyy tästä dokumentista, teknisestä spesifikaatiosta sekä viitteistä [1, 2]. 3.2.1 Arviointi Suunnittelumallejen hyöty kommunikoinnissa ryhmän kesken on ollut vielä tässä vaiheessa projektia vähäistä. Todennäköisesti I2 vaiheen päätteeksi pystymme arvioimaan mahdollisen hyödyn paremmin, kun järjestelmän toteutus on edennyt pidemmälle ja saamme kerättyä kokemuksia koko ryhmältä. Itse suunnittelu/toteutustyössä ei suunnittelumalleista ole ollut vielä kovin suurta hyötyä muutamaa liitteessä 1 mainittua tapausta lukuunottamatta. Suunnittelumallien olemassaolo ei sinänsä auttanut suunnittelussa juuri lainkaan samankaltaiset suunnitteluratkaisut olisi luultavasti tehty myös ilman virallisiin suunnittelumalleihin tutustumista. 4 Viitteet [1] Gamma, Helm, Johnson, Vlissides: Design Patterns, Addison-Wesley Professional 1995. [2] Design Patterns in Java - Reference and Example Site, http://www.fluffycat.com/java/patterns.html Sivu 3 / 6

Liite 1 Suunnittelumallien sovelluskohteita projektissamme Suunnittelumallit on luokiteltu Gamma et al. -ryhmän käyttämän luokittelun mukaan. Creational Abstract factory: EtlOperationFactory: toimenpidekomponenttien instanssit luodaan EtlOperationFactory.create()- metodilla, jonka jokainen toimenpidekomponentti toteuttaa. Tarkoitus on, että prosessin lataajakomponentti luo factory-oliot, minkä jälkeen jokaista prosessiajoa varten voidaan luoda create()-metodin avulla EtlOperation-rajapinnan toteuttava olio. Tämän olion toteutuksessa ei tarvitse silloin varautua siihen, että samaa oliota käytettäisiin useissa prosessiajoissa (helpotetaan toimenpidekomponenttien ohjelmointia). Hyöty on silti kyseenalainen, koska ei ole näköpiirissä mitään syytä, miksi prosessia ei voitaisi ladata jokaisella ajokerralla uudestaan ja luoda suoraan EtlOperation-olioita laatajakomponentista käsin. Builder EtlProcessBuilder: prosessin latauskomponentti toimittaa prosessin kuvauksen moottorille käyttämällä tätä rajapintaa. Lataaja pystyy luomaan prosessin osissa sitä mukaa kun se lukee kuvaustiedostoa (yksinkertaistaan lataajan rakennetta). Lisäksi mahdollistaa kuvauskielen helpon vaihtamisen. Factory method EtlOperationFactory.create (ks. edellä) Prototype Singleton Voitaisiin käyttää DatabaseManager-luokassa, mutta ei ole nähtävissä, että tätä luokkaa käytettäisiin kovinkaan monessa paikassa (suurin osa tietokantaa käsittelevästä koodista käyttää vain java.sql.connection:a tai Database-luokkaa). Structural Adapter Bridge EngineServices/OperationExecutor -> WorkingTableManager: Toimenpidekomponenteille tarjottavat väliaikaisvarastopalvelut on koottu EngineServices-rajapintaan, joka välittää metodikutsut edelleen väliaikaisvarastojen hallintakomponenteille. Mahdollistaa toimenpidekomponenteille tarjottavan rajapinnan tekemisen helppokäyttöiseksi ja käytännölliseksi ilman että väliaikaisvarastojen hallinnan rajapintaa tarvitsee monimutkaistaa. Composite Sivu 4 / 6

Decorator Facade EngineServices, ProcessBuilder, ProcessRun, EtlProcess: moottori tarjoaa joukon rajapintoja eri suuntiin, joiden kautta sitä käytettään. Moottorissa on rajapintoja niin monta, että on parempi erottaa ne selkeästi toteutusluokista. Flyweight Proxy WorkingTableManager DatabaseManager: "smart reference"-mielessä Behavioral Chain of responsibility Command Jos myöhemmin toteutetaan moottoriin monimutkaisempi aikataulutus toimenpiteille, niin command-patternista (eventeistä) voisi olla apua viestiliikenteen selkeyttämisessä. Interpreter Iterator Javan perusiteraattoreita käytetään runsaasti. Mediator ProcessRun-olio toimii koordinaattorina prosessiajon aikana, eli ohjaa keskitetysti useiden muiden olioiden toimintaa. Näitä olioita ovat OperationExecutor, WorkingDatabaseManager/WorkingTableManager, DatabaseManager sekä myöhemmässä vaiheessa tietovaraston lookup-taulujen käsittelyyn liittyvät komponentit. Tämä tuntuu helpottavan prosessin toimintalogiikan suunnittelua, kun se voidaan tehdä yhteen paikkaan (ProcessRun-olion sisälle). Memento Prosessin aikana tallennetaan välituloksia, joihin voidaan palata, jos prosessi keskeytyy Observer ProcessRun-olio tarkkailee toimenpidekomponenttien tilaa niiden ollessa käynnissä (OperationExecutor-olioiden kautta). State Jos toteutetaan monimutkaisempi prosessin aikataulutus, voisi olla hyötyä mallintaa se tilakoneena Strategy Sivu 5 / 6

Template method Visitor Sivu 6 / 6