Hirviö. Design Patterns
|
|
- Esko Järvinen
- 8 vuotta sitten
- Katselukertoja:
Transkriptio
1 Hirviö SEPA-päiväkirja Design Patterns Anssi Kalliolahti Liia Sarjakoski 15. maaliskuuta
2 Sisältö 1 Johdanto 3 2 Menetelmän käytäntöön soveltaminen 3 3 Kokemuksia ja muutoksia PP I Model View Controller Command Chain of Responsibility Visitor Singleton / Factory Composite Strategy Decorator I Viimeistely ja toimitus Analyysi Model View Controller Command Chain of Responsibility Visitor Singleton / Factory Composite Strategy Decorator Yhteenveto 8 2
3 1 Johdanto Tämä dokumentti on suunnittelumallien (Design Patterns) käytöstä kertova SEPA-päiväkirja, jonka tarkoituksena on esitellä, kuinka kirjoittajat ovat käyttäneet suunnittelumalleja Hirviöprojektissa. Suunnittelumallit ovat dokumentoituja ja toimiviksi todettuja ratkaisuja yleisiin suunnitteluongelmiin olio-ohjelmoinnissa. Toisin sanottuna suunnittelumallit ovat uudelleenkäytettävän suunnittelun rakennuspalikoita. Järjestelmäarkkitehti Liia Sarjakoski valitsi SEPA-aiheekseen suunnittelumallit, sillä hän oletti niiden olevan hyödyllisiä järjestelmän arkkitehtuurin suunnittelussa ja oli aikonut muutenkin tutkia niitä tarkemmin. Myös Anssi Kalliolahti on mukana Hirviön arkkitehtuurin suunnittelussa ja kokee suunnittelumallit hyödyllisiksi ja mielenkiintoisiksi. Tärkeimpänä lähteenä suunnittelumallien soveltamiseen on käytetty teosta Design Patterns: elements of reusable object-oriented software / Erich Gamma et al. Tämä teos on suunnittelumallien raamattu, katalogi, jota käytetään lähteenä useissa muissa suunnittelumalleja käsittelevissä teoksissa ja artikkeleissa. 2 Menetelmän käytäntöön soveltaminen Suunnittelumalleja käytetään Hirviön arkkitehtuurin suunnittelussa siten, että suunnittelun aikana mietitään valmiiden suunnittelumallien soveltuvuutta käsillä oleviin ongelmiin sen sijaan, että yritettäisiin keksiä kaikkiin ongelmiin ratkaisut itse. Suunnittelumalleja käytetään soveltuvilta osin, eikä arkkitehtuuria yritetä väkisin pakottaa suunnittelumallin mukaiseksi. Hirviö on jaoteltu osiin, joiden sisäinen kohensio on suuri. Nämä ovat järjestelmän moduleita (AAA, DataManagement, GUI ja sovelluslogiikka). Järjestelmä halutaan toteuttaa siten että moduleiden väliset sidokset ovat järkeviä, ja toisaalta itse moduleiden rakenteen tulee olla laajennuskelpoinen. Näiden ehtojen toteuttamiseksi tutkitaan rakenteellisia suunnittelumalleja, joiden toivotaan auttavan sekä kokonaisarkkitehtuurin että modulien sisäisen rakenteen suunnitellussa. Hirviö on sovellus, joka koostuu selkeästi HTML-käyttöliittymästä, tietokannasta ja sovelluslogiikasta. Arkkitehtuurisuunnitelijoilla on tarkoitus hyödyntää Hirviössä Model-View- Controller suunnittelumallia, jolla on ensisijaisesti tarkoitus eriyttää näkymä varsinaisesta sovelluslogiikasta. Tämä on tärkeää, koska perinteistä käyttöliittymäkoodin (XHTML) ja sovelluskoodin (PHP) sekoitusta on hankala lukea, se on heikosti ylläpidettävää ja virhealtista. Jotta MVC-mallin mukainen arkkitehtuuri olisi mahdollinen, on suunniteltava tätä tukeva alusta. Tämän suunnittelussa käytetään apuna sisäiseen käyttäytymiseen keskittyviä malleja (behavioral patterns) ja rakentamiseen keskittyviä malleja (creational patterns). Suunnittelumalleja käytetään ensisijaisesti iteraation I1 alussa, sillä järjestelmän perusarkkitehtuuri suunnitellaan silloin. Suunnittelumalleja pyritään soveltamaan myös iteraation I2 alussa arkkitehtuuriin tulevien tarkennusten osalta. On kuitenkin todennäköistä, että suunnittelumallien merkitys silloin on jo varsin pieni, ja suunnittelu keskittyy enemmän järjestelmän yksityiskohtiin. 3 Kokemuksia ja muutoksia 3.1 PP Suunnittelumalleja ei käytetty PP-iteraation aikana. 3
4 3.2 I1 Iteraation I1 aikana suunnittelumalleja käytettiin arkkitehtuurisuunnittelun apuna. Arkkitehtuurissa voitiin useissa kohdissa hyödyntää valmiita suunnittelumalleja ja toisaalta osan tehdyistä ratkaisuista huomattiin toteuttavan jo jonkin suunnittelumallin perusajatuksen. Suunnittelumalleihin liittyviä UML-kaavioita löytyy Hirviön teknisestä spesifikaatiosta Model View Controller Model-View-Controller -mallissa eriytetään näkymä, malli ja kontrolli. Hirviössä tämä toteutetaan siten että sovelluslogiikka toimii kontrollina, joka ottaa vastaan näkymältä saatuja käyttäjän aiheuttamia tapahtumia. Tapahtuman saatuaan Hirviö voi hakea, päivittää tai muokata mallia, joka käsittää tietokannan, sen käsittelyyn tarkoitetut luokat sekä muut väliaikaisdatan säilytykseen tarkoitetut luokat. Vastoin perinteistä MVC-mallia, Hirviössä näkymä ei suoraan hae muutoksia mallilta, vaan kontrolli välittää mahdolliset muutokset mallilta näkymälle. Tämä johtuu osittain siitä, että mallin ja näkymän välille ei haluttu suoria sidoksia, ja toisaalta siitä, että käyttöliittymän XHTML- ja PHP-kielien sekoitus haluttiin minimoida Command Hirviössä käytetään tapahtumapohjaista WWW-käyttöliittymää. Tämä on toteutettu yksinkertaisesti siten, että jokainen sovelluksen toimia vaativa input-elementti (linkit ja painikkeet) saavat automaattisesti generoidun uniikin ja satunnaisen tunnisteen, jota käytetään varsinaisessa käyttäjän selaimelle välitettävässä XHTML-sivussa. Sivun luontivaiheessa näitä uniikkeja tunnisteita vastaamaan luodaan tapahtumia, jotka enkapsuloidaan luokkaan Event, ja säilötään odottamaan käyttäjän toimia. Tälläinen toiminnon, tai komennon säilöminen luokkaan toteuttaa Command-suunnittelumallin Chain of Responsibility Jotta tapahtumilla olisi jokin merkitys on ne käsiteltävä. Kun käyttäjä painaa linkkiä tai painiketta, lähettää hän käytännössä palvelimelle vastaavan tapahtuman tunnisteen joko POST- tai GET-muuttujassa. Tämän tunnisteen perusteella säilötty tapahtuma voidaan ottaa käsiteltäväksi. Tätä varten järjestelmä tarjoaa abstraktin luokan, joka toimii tapahtumakuuntelijana. Tapahtumakuuntelijat voivat sisältää muita tapahtumakuuntelijoita, jolloin niistä muodostuu käytännössä puu. Lähetettävä tapahtuma ei tiedä suoraan mikä tapahtumankäsittelijä sen hoitaa, vaan se lähetetään etenemään puun juuresta, jolloin tapahtuma läpikäy kaikki tietyn haaran tapahtumakäsittelijät, kunnes se käsitellään. Tällainen käsittelijöiden ketjuttaminen toteuttaa Chain of Responsibility -suunnittelumallin Visitor Linkki- ja painike-elementtien lisäksi on XHTML:ssä tarjolla erilaisia syötteenantomahdollisuuksia kuten tekstikentät, checkboxit ja pudotusvalikot. Näiden käsittely ei aiheuta tapahtumia, mutta niiden sisältöön halutaan päästä käsiksi, ja niitä pitää pystyä päivittämään. Hirviössä tällaisten komponenttien käyttö on toteutettu siten, että niissä näkyvä data syötetään suoraan niitä esittäviin olioihin, ja vastaavasti käyttäjän antama syöte halutaan lukea suoraan niitä esittävistä olioista. Linkkien ja nappien tapaan jokainen syöte-elementti saa uniikin tunnisteen, joka välitetään käyttäjälle XHTML-sivussa. Kun käyttäjä operoi syöte-elementeillä, niihin syötetty data toimitetaan pavelimelle POST-muuttujissa, jotka on nimetty annetulla tunnisteella. 4
5 Jotta syöte saadaan takaisin haluttuihin olioihin, on niihin lisätty joukko visitor -metodeja joilla dataa voidaan operoida. Kun elementti luodaan ruudulle, se kutsuu alustan syötteenhallintaoliota saadakseen uniikin tunnisteen. Kutsuessaan tätä olioita, jokainen inputelementti antaa syötteenhallintaoliolle viittauksen itseensä, jolloin syötteenhallintaolio voi tätä viittausta ja visitor -metodeja hyväksikäyttäen operoida elementin datalla Singleton / Factory Jotta kaikkien syöte-elementtien tunnisteet olisivat yksilöllisiä ja niitä voitaisiin järkevästi hallita, tarvitaan keskitetty palvelu. Koska tämä keskitetty palvelu sijaitsee abstraktisti ajateltuna puun juuressa ja palvelua käyttävät elementit lehdissä, ei viittausta palveluun haluta välittää läpi puun haarojen. Hirviössä tämä palvelu toteutetaan staattisena luokkana, jonka ainoaa suorituksenaikaista instanssia voi käsitellä luokan staattisten metodien välityksellä. Luokan konstruktorista on tehty privaatti, jolloin sitä ei voida luoda, vaan luokka luo itse ainoan instanninsa, kun sen staattisia metodeja ensi kerran kutsutaan. Tällainen yhden instanssin luokka toteuttaa Singleton-suunnittelumallin. Tämä palvelu toimii samalla myös luokkana, joka luo jokaista toiminnon aiheuttavaa syöteelementtiä vastaavan tapahtumaolion, ja säilöö sitä niin pitkään kuin elementti on olemassa (kahden sivupyynnön välisen ajan). Tällainen toisia olioita tuottava luokka toteuttaa suunnittelumallin Factory Composite Hirviön käyttöliittymä on luonteeltaan sellainen, josta löytyy paljon uudelleenkäytettäviä elementtejä, kuten esimerkikis päävalikko. Näistä elementeista luodaan omia luokkia, joita voi yhdistellä. Hirviön käyttöliittymä koostuukin sisäkkäisistä elementeistä, joista muodostuu puumainen rakenne. Puussa olevia elementtejä voidaan hallita tarvittaessa isäelementtiensä avulla. Tälläinen yhdistely toteuttaa Composite-suunnittelumallin Strategy Strategy-mallia on käytetty mahdollistamaan erilaisten todennusmenetelmien ja tietokantojen käyttö järjestelmässä. Eri todennusmenetelmillä on yhteinen rajapinta siten, että mitä tahansa menetelmää voidaa käyttää sen kautta. Eri todennusmenetelmät ovat siis vaihdettavissa keskenään. Käytettävä menetelmä valitaan käyttäjän asetuksien mukaan. Järjestelmä voi käyttää myös erilaisia SQL-tietokantaohjelmistoja vastaavalla menettelyllä, mutta luonnollisesti vain yhtä kerrallaan ja vain niin kauan kuin SQL-lauseet tuottavat kaikilla tietokannoilla saman lopputuloksen. Ratkaisu eroaa puhtaasta Strategy-mallista siten, että Context käyttämisen lisäksi myös luo tarvitsemansa Strategyn. Context ja Strategy ovat Strategy-mallin käsitteitä Decorator Decorator on suunnittelumalli, jolla täydennetään jo olemassaolevaa luokkaa. Hirviössä tietokantayhteydet hoidetaan DatabaseConnection -rajapinnan toteuttavien luokkien avulla. Sovelluslogiikan tasolla ei kuitenkaan haluta käyttää suoraan SQL:ää, joten DatabaseConnection -luokkaa luodaan täydentämään DataManager-luokka, joka abstraktoi SQL:n pois sovelluslogiikan näkyvistä. 3.3 I2 Suunnittelumalleja ei käytetty I2-iteraation aikana. 5
6 Järjestelmän arkkitehtuuri suunniteltiin kokonaisuudessaan iteraation I1-aikana. Iteraatiolla I2 arkkitehtuuriin ei tehty mitään muutoksia, jolloin myös käytetyt suunnittelumallit pysyivät muuttumattomina. Kierroksen aikana oli tarkoitus implementoida varsinainen sovellus, käyttäen hyväksi kierroksella I1 valittuja ratkaisuja. Näiden ratkaisujen soveltuvuus havaittiin hyväksi, eikä alustaan kaivattu mitään muutoksia. SEPA-pari on tyytyväinen tekemiinsä valintoihin. Käytettyjen suunnittelumallien soveltuvuutta pyritään tarkemmin analysoimaan vasta viimeisellä iteraatiolla, jolloin sovellus on valmis, sekä kaikki mahdolliset kokemukset (tämän projektin puitteissa) ovat käytössä. 3.4 Viimeistely ja toimitus Suunnittelumalleja ei käytetty FD-iteraation aikana. Käytettyjen suunnittelumallien soveltuvuutta on analysoitu seuraavassa kappaleessa 4 Analyysi Alla on arvoitu käytettyjen mallien soveltuvuutta sovelluksen valmistuttua. Suunnittelumallien varsinainen käyttö on esitetty kappaleessa Model View Controller PHP ei sellaisenaan pakota sovelluksia mihinkään tiettyyn malliin, eikä sille ole mitään vakiintunutta kirjastoa / runkoa, jota käyttäen sovelluksia voisi toteuttaa. Tämä antaa toteuttajalle vapaat kädet luoda mieleisensä runkoarkkitehtuurin. Ryhmän koon, sekä iteratiivisen toteutuksen vuoksi yhtenäinen tapa toteuttaa ja lisätä toiminnallisuutta kuitenkin nähtiin välttämättömyytenä. Arkkitehtuurin suunnittelussa pyörää ei haluttu lähteä keksimään uudelleen, vaan lähtökohdaksi otettiin tapahtumapohjainen MVCmalli, jollainen esimerkiksi Javan Swing on. MVC-malli oli ehkä kaikkein tärkein käytetyistä suunnittelumalleista. Yksittäisten komponettien luonti käyttäen tätä arkkitehtuuria oli perinteistä HTML:n skriptailua hitaampaa, mutta kokonaisuudessa sen edut olivat huomattavasti tätä haittaa suuremmat. Malli mahdollisti useiden käyttöliittymäkomponenttien ja käyttöliittymäkokonaisuuksien uudelleenkäytön sovelluksen eri osissa (nopeuttaen kehitystä kokonaisuudessaan). Ehkä kaikkein tärkeimpänä, se helpotti toiminnallisuuden lisäämistä iteratiivisesti, sekä teki siitä huomattavasti vähemmän virhealttiimpaa. (Vertailukohteena on käytetty muita vastaavanlaisia, mutta perinteisin tavoin tehtyjä työ- ja kouluprojekteja). Sovelluksen rungon arkkitehtuuri noudatti siis MVC-mallia. PHP ei kuitenkaan tarjonnut suoraan mahdollistuutta toteuttaa sovellusta käyttäen tätä suunnittelumallia, joten ensin oli luotava tämän mahdollistava runko. Rungon oli hoidettava tapahtumien käsittely, sekä samalla piiloitettava sovellustason ohjelmoijilta kaikki heille tarpeeton toiminnallisuus. Loput käytetyistä suunnittelumalleista mahdollistivat tämän. 4.2 Command Tämä oli erittain käyttökelpoinen ratkaisu. Alla on esimerkkinä yksittäisen linkin luominen, sekä tälle määriteltävä tapahtumankäsittelijä, jota runko kutsuu sovellusohjelmoijalle näkymättömästi kun linkkiä on painettu. Sovellusohjelmoija luo linkin ja määrittelee kutsuttavan käsittelijän nimen: 6
7 $do_something_link = new Link( DoSomethingPressed, Press this to do foo ); Sekä määrittelee varsinaisen tapahtumakäsittelijän sovelluslogiikkaluokkaan: public function ondosomethingpressed(event $event) { } dofoo(); dobar(); Malli mahdollisti käyttäjän syötteen keskitetyn käsittelyn. Tämä oli eräs eniten sovellusohjelmoijiin vaikuttaneista suunnittelumalleista, palaute ohjelmoijilta oli myönteinen. 4.3 Chain of Responsibility Tämän mallin tarkoituksena oli mahdollistaa tapahtumia kuuntelevien olioiden ketjutus puuksi siten, että sovelluslogiikka olisi voitu pilkkoa useisiin osiin. Kaikki sovelluslogiikka kuitenkin keskittyi yksittäiseen luokkaan, jolloin tätä mahdollisuutta ei hyödynnetty. Jälkeenpäin kuinenkin huomattiin, että logiikka olisi ollut järkevää pilkkoa useampiin oliohin (jo päivityskonfliktien estämiseksi), mutta tässä vaiheessa koodia oli jo niin paljon, ettei sitä enää jälkikäteen tehty ongelmien välttämiseksi (tai refaktoroitu vastaavan SEPA-parin toimesta). 4.4 Visitor Erilaisten syöte-elementtien (tekstikenttien ja valikoiden) haluttiin toimivan mahdollisimman samankaltaisesti kuin muissa vastaavissa toteutuksissa (esimerkiksi Java Swing). Tavoitteena oli toteuttaa sellaisia syöte-elementtejä, joihin käyttäjän antama syöte siirrettiin sovellusohjelmoijalta näkymättömästi seuraavan sivulatauksen yhteydessä. Käytännössä tämä tarkoitti sovellusohjelmoijan kannalta sitä, että esimerkiksi tallennusnappia vastaavassa tapahtumakäsittelijässä ohjelmoija pystyi lukemaan käyttäjän antaman syötteen suoraan inputelementtiä kuvaavasta olioista: $search_field = new FormTextField(); Ja tallennuksen jälkeisessä tapahtumakäsittelijässä käyttäjän syöttämään arvoon päästiin käsiksi seuraavasti: $search_field->getvalue(); Tällä suunnittelumallilla toteutettu toiminnallisuus oli myös sovellusohjelmoijille näkyvä. Ohjeilmoijien palaute tästä oli myönteinen. 7
8 4.5 Singleton / Factory Tämän suunnittelumallin mukaisesti toteutettiin tapahtumien käsittelyn ydin (InputProcessor, joka ei ole sovellustasolla näkyvissä). Ratkaisu osoittautui toimivaksi ja sitä ei ollut tarve muttaa jälkikäteen. 4.6 Composite Käyttöliittymäoliot luotiin composite-mallia hyödyntäen. Mallin käyttö mahdollisti yksittäisten komponenttien, ja jopa suurempien kokonaisuuksien uusiokäytön eri sovelluksen osissa. Hyvä ratkaisu, joka omalta osaltaan vähensi työtä loppuvaiheessa. 4.7 Strategy Tämän suunnittelumallin tarkoituksena on mahdollistaa sovelluksen helppo siirrettävyys tietokantaympäristöstä toiseen (esimerkiksi PostgreSQL:stä MySQL:ään), sekä mahdollistaa useiden erilaisten autentikontimenetelmien käytön, siten että vaaditut muutokset keskittyisivät yksittäiseen sovelluksen osaan (ei varsinaiseen sovelluslogiikkaan). Projektin aikana sovellukseen ei kuitenkaan luotu kuin yksi autentikointimenetelmä sekä yksi kantayhteys (PostgreSQL), joten mallin toimivuuden toteaminen jää mahdollisille jatkokehittäjille. 4.8 Decorator Tätä suunnittelumallia käyttäen saatiin abstraktoitua sovellusohjelmoijilta tietty monimutkaisuus pois. Mallin hyödyntäminen keskittyi käytännössä tietokannan käsittelyyn: PostgreSQLConnection on varsinainen tietokantayhteysluokka, joka toteuttaa DatabaseConnectionrajapinnan. Tälle rajapinnalle on kuitenkin syötettävä SQL-lauseita, jotta niitä voi käyttää. Varsinaiseen sovelluslogiikkaan ei kuitenkaan haluttu SQL:ää, joten DatabaseConnectionia hyödyntämään luotiin DataManager-decorator luokka, joka käytti DatabaseConnectionin tarjoamaa toiminnallisuutta ja tarjosi samalla itsensä käyttäjälle hyvin yksinkertaisen rajapinnan haluttujen hakujen tekemiseen. Mallin käyttö oli hyödyllistä, koska näin kantariippuvainen SQL saatiin varsinaisesta sovelluslogiikasta täysin pois. 5 Yhteenveto Suunnittelumalleja käyttämällä saatiin aikaan normaali tapahtumapohjainen, MVC-mallin mukainen sovellus, ilman että pyörää olisi tarvinnut keksiä useassa paikassa uudelleen (tai oikeastaan pyörän muotoa, varsinainen pyörä oli käytännössä toteutettava). Toteutettu sovellus on näin myös tilallinen (palvelimen osalta), mikä poikkeaa yleisestä käytännöstä websovelluksien yhteydessä. Suunnittelumalleja hyödyntämällä varsinaisille sovellusohjelmoijille saatiin luotua ympäristö, joka oli tarpeeksi nopeasti opittavissa ja mahdollisti helpon iteratiivisen kehityksen, ilman suurempia sudenkuoppia. Arkkitehtuurista, käytetyistä suunnittelumalleista, sekä tilallisesta sovelluksesta johtuva suurin negatiivinen asia on näkyvissä loppukäyttäjälle oli se, että selaimen navigointinappeja ei voi käyttää (toisaalta nyt käyttäjä ei voi myöskään korruptoida sovellusta tai tietokantaa käyttämällä navigointinappeja). 8
Hirviö. Design Patterns
Hirviö SEPA-päiväkirja Design Patterns Anssi Kalliolahti Liia Sarjakoski 8. helmikuuta 2005 1 Sisältö 1 Johdanto 3 2 Menetelmän käytäntöön soveltaminen 3 3 Kokemuksia ja muutoksia 3 3.1 PP..........................................
LisätiedotT SEPA - päiväkirja: Design Patterns. ETL työkalu
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
LisätiedotT SEPA - päiväkirja: Design Patterns. ETL työkalu
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
LisätiedotSEPA - Design Patterns
SEPA - Design Patterns Kimmo Karlsson, 51066R & Antti Pirinen, 51406N 15. maaliskuuta 2005 1 Sisältö 1. Sisältö 2. Johdanto 3. Käyttöönotto 4. Käyttökokemukset 2 Johdanto Valitsemamme ohjelmistonkehityskäytäntö
LisätiedotOhjelmistotekniikan menetelmät, suunnittelumalleja
582101 - Ohjelmistotekniikan menetelmät, suunnittelumalleja 1 Suunnittelumallit (design patterns) Kuvaus sellaisesta luokkarakenteesta & olioiden vuorovaikutuksesta, joka ratkaisee tietyn yleisen ongelman
Lisätiedot812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton
2015 syksy 2. vsk IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton Sisältö 1. Johdanto luontimalleihin 2. Proxy 3. Factory Method 4. Prototype 5. Singleton Suunnittelumallit Proxy et.
LisätiedotOliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä
Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä Matti Luukkainen 10.12.2009 Tässä esitetty esimerkki on mukaelma ja lyhennelmä Robert Martinin kirjasta Agile and Iterative Development löytyvästä
LisätiedotT Henkilökohtainen harjoitus: FASTAXON
T-76.115 Henkilökohtainen harjoitus: FASTAXON Suunnittelumallit Group: Muuntaja Pentti Vänskä 52572W 2 1. Toteutus Tämä henkilökohtainen harjoitustyö käsitteli suunnittelumallien (Design Patterns) käyttöä
Lisätiedot4.12.2005. SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T
SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T SEPA: REFAKTOROINTI 2 (9) SEPA: REFAKTOROINTI 3 (9) VERSIOHISTORIA Version Date Author Description 0.1 2.12.2005 Erik Hakala Ensimmäinen
LisätiedotInteraktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.
Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen
LisätiedotMuusta kuin vesisioista
Muusta kuin vesisioista Janne Käki 8.12.2006 Metodin kuormittaminen (overloading) Samannimisestä metodista on määritelty samassa luokassa (tai samassa yli- ja aliluokkien jatkumossa) useita versioita,
Lisätiedot<e.g. must, essential, conditional>
Käyttötapaukset Kurssin malli käyttötapauksille: Tila < List of users and the other systems that interacts directly with a system>
LisätiedotOpintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Opintojakso TT00AA11 Ohjelmoinnin jatko (Java) Tavoite Opiskelija ymmärtää olio-ohjelmoinnin problematiikan. Opiskelija osaa määritellä ja käyttää itse
LisätiedotArkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14
Arkkitehtuurikuvaus Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy Ryhmä 14 Muutoshistoria Versio Pvm Päivittäjä Muutos 0.4 1.11.2007 Matti Eerola 0.3 18.10.2007 Matti Eerola 0.2
LisätiedotInteraktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.
Malli-näkym kymä-ohjain arkkitehtuurit (Model-View View-Controller, MVC) Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta. Lähtökohdat: Sovelluksen
LisätiedotHirviö Vertaistestausraportti
Hirviö Vertaistestausraportti Jani Heikkinen Anssi Kalliolahti Jukka Larja Kim Nylund Liia Sarjakoski Samuli Sorvakko Timo Toivanen 8. maaliskuuta 2005 1 Sisältö 1 Johdanto 3 2 Testauksen kattavuus 3 2.1
LisätiedotGraafinen käyttöliittymä, osa 1
Graafinen käyttöliittymä, osa 1 Idea, MVC-malli ja ensimmäinen ohjelma Graafinen käyttöliittymä Ensimmäisen kerran tavoitteena on oppia graafisen ohjelman perusidea sekä oppia laatimaan esimerkin mukaan
LisätiedotOhjelmistotuotanto. Luento 9 23.4.2012
Ohjelmistotuotanto Luento 9 23.4.2012 Lisää suunnittelumalleja Olion rikastaminen dekoraattorilla Joskus eteen tulee tarve lisätä olioon jotain ekstraominaisuuksia, pitäen kuitenkin olio sellaisena että
LisätiedotGraafisen käyttöliittymän ohjelmointi Syksy 2013
TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Syksy 2013 Luento 8 Suunnittelumallit käyttöliittymäohjelmoinnissa Juha-Matti Vanhatupa Yleistä Suunnittelumalli on
LisätiedotWWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa
WWW ja tietokannat WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa tekstiä, kuvia, hyperlinkkejä Staattiset sivut kirjoitettu kerran, muuttaminen käsin ongelmana pysyminen ajantasalla Ylläpito hankalaa,
LisätiedotOlio-ohjelmointi Johdanto suunnittelumalleihin. 1. Yleistä
Olio-ohjelmointi Johdanto suunnittelumalleihin Hyvin toimivan olio-ohjelmointiparadigmaa noudattavan ohjelman suunnitteleminen ei ole helppo tehtävä. On löydettävä sopiva luokkarakenne kuvaamaan ratkaistavaa
LisätiedotOliosuunnittelu. Oliosuunnittelu
Oliosuunnittelu Perinnän ja dynaamisen sidonnan hyödyntäminen Tarkastellaan ohjelmaa, jonka tehtävänä on tuottaa erilaisista kuvioista muodostuva kuvaesitys Ratkaisu 1: perinteinen malli - ei perintää
Lisätiedot812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VII Suunnittelumallit Adapter ja Composite
2015 syksy 2. vsk VII Suunnittelumallit Adapter ja Composite Sisältö 1. Johdanto rakennemalleihin 2. Adapter (Sovitin) 3. Composite (Rekursiokooste) Suunnittelumallit Adapter ja Composite 2 VII.1 Johdanto
Lisätiedot812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VIII Suunnittelumallit Observer ja State
2015 syksy 2. vsk VIII Suunnittelumallit Observer ja State Sisältö 1. Johdanto käyttäytymismalleihin 2. Observer 3. State Suunnittelumallit Observer ja State 2 VIII.1 Johdanto käyttäytymismalleihin Päätarkoitus
LisätiedotYksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }
Yksikkötestauksella tarkoitetaan lähdekoodiin kuuluvien yksittäisten osien testaamista. Termi yksikkö viittaa ohjelman pienimpiin mahdollisiin testattaviin toiminnallisuuksiin, kuten olion tarjoamiin metodeihin.
Lisätiedot582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus
582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus Sisältö Mikä on web-sovellus? Selaimen rooli web-sovelluksessa Palvelimen rooli web-sovelluksessa Aineistopyynnöt Tiedon välittäminen
LisätiedotXPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy
IBM Collaboration Forum ٨.٣.٢٠١١ XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy ٢٠١١ IBM Corporation Domino-sovelluskehitys Nopea kehitysympäristö (Rapid application development,
LisätiedotEsimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit
Liite E - Esimerkkiprojekti E Esimerkkiprojekti Olet lukenut koko kirjan. Olet sulattanut kaiken tekstin, Nyt on aika soveltaa oppimiasi uusia asioita pienen, mutta täydellisesti muotoiltuun, projektiin.
LisätiedotTestivetoinen ohjelmistokehitys
Testivetoinen ohjelmistokehitys Ohjelman luominen pienin askelin 1. Kirjoita testi, joka testaa ohjelmalle myöhemmin lisättävää toiminnallisuutta. 2. Suorita testi. Testin ei tule mennä läpi. Mikäli testi
Lisätiedothttp://www.enteract.com/~bradapp/docs/patterns-intro.html http://www.hillside.net/patterns/
5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Esimerkki: Rekursiokooste Antisuunnittelumallit Suunnittelumallit ja UML Mallikielet Suunnittelumallit
LisätiedotOhjelmointikielet ja -paradigmat 5op. Markus Norrena
Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja
LisätiedotOhjelmoinnin jatkokurssi, kurssikoe 28.4.2014
Ohjelmoinnin jatkokurssi, kurssikoe 28.4.2014 Kirjoita jokaiseen palauttamaasi konseptiin kurssin nimi, kokeen päivämäärä, oma nimi ja opiskelijanumero. Vastaa kaikkiin tehtäviin omille konsepteilleen.
LisätiedotELM GROUP 04. Teemu Laakso Henrik Talarmo
ELM GROUP 04 Teemu Laakso Henrik Talarmo 23. marraskuuta 2017 Sisältö 1 Johdanto 1 2 Ominaisuuksia 2 2.1 Muuttujat ja tietorakenteet...................... 2 2.2 Funktiot................................
LisätiedotKehitysohje. ETL-työkalu. ExtraTerrestriaLs / Aureolis Oy
Kehitysohje ETL-työkalu Versio Pvm Tekijä Kuvaus 0.1 15.1.2005 Timo Sallinen Ensimmäinen versio 0.2 26.1.2005 Timo Sallinen Täydenetty pohjaa 0.3 06.02.2005 Mika Suvanto Pieniä täydennyksiä ja oikolukua
LisätiedotRakennusten elinkaarimittareiden verkkotyökalun käyttöohje. www.360optimi.com/kiinteistopassi
Rakennusten elinkaarimittareiden verkkotyökalun käyttöohje www.360optimi.com/kiinteistopassi Bionova Consulting, luottamuksellinen Viimeksi päivitetty 9. syyskuuta 2014 Käyttöohjeen sisällysluettelo Luo
LisätiedotWeb Services tietokantaohjelmoinnin perusteet
ASP.NET Web Services Web Services tietokantaohjelmoinnin 2 (22) Sisällys Harjoitus 1: Tietokannat ja Web Services... 3 Harjoitus 2: Windows Client... 10 Harjoitus 3: Datan päivitys TableAdapterin avulla...
LisätiedotSuunnittelumallien käyttö ohjelmistosuunnittelussa
Suunnittelumallien käyttö ohjelmistosuunnittelussa Mika Rantakeisu Rovaniemen ammattikorkeakoulu Avoin ammattikorkeakoulu mika.rantakeisu@edu.ramk.fi Tiivistelmä Tämä on selvitys suunnittelumallien käytöstä
LisätiedotOhjelmoinnin perusteet Y Python
Ohjelmoinnin perusteet Y Python T-106.1208 12.4.2010 T-106.1208 Ohjelmoinnin perusteet Y 12.4.2010 1 / 34 Graafiset käyttöliittymät Tähän asti kirjoitetuissa ohjelmissa on ollut tekstipohjainen käyttöliittymä.
LisätiedotWritten by Administrator Monday, 05 September 2011 15:14 - Last Updated Thursday, 23 February 2012 13:36
!!!!! Relaatiotietokannat ovat vallanneet markkinat tietokantojen osalta. Flat file on jäänyt siinä kehityksessä jalkoihin. Mutta sillä on kuitenkin tiettyjä etuja, joten ei se ole täysin kuollut. Flat
LisätiedotOsio 4: Graafinen käyttöliittymä
Javan Swing-tekniikan perusteet: Muistutus: Tarvitset seuraavia komponentteja harjoituksissa: otsikkoteksti (label) muokkausruutu (text field) komentopainike (button) yhdistelmäruutu (combo box) paneeli
LisätiedotOhjelmistoarkkitehtuurit. Syksy 2008
Ohjelmistoarkkitehtuurit Syksy 2008 Kai Koskimies 1 Tervetuloa Kuopion yliopisto, Oulun yliopisto, Tampereen yliopisto, Teknillinen korkeakoulu, Turun yliopisto, Vaasan yliopisto, Tampereen teknillinen
LisätiedotSuunnittelumalleja, MVC. Juha Järvensivu 2008
Suunnittelumalleja, MVC Juha Järvensivu juha.jarvensivu@tut.fi 2008 Sisältö Tarkkailija Strategia Rekursiokooste Tehdas-metodi MVC Tarkkailija suunnittelumalli Tarkkailijamalli (Observer) Määrittelee olioiden
LisätiedotAJAX-konsepti AJAX. Asynkronisuus. Nykyisten web-ohjelmien ongelmia. Asynchronous JavaScript And XML
AJAX-konsepti AJAX Asynchronous JavaScript And XML Viimeisin muoti-ilmiö web-ohjelmoinissa, termi Ajax tuli käyttöön vuoden 2005 aikana Joukko teknologioita, joiden avulla voidaan toteuttaa uudenlaisen
LisätiedotOhjelmistoarkkitehtuurit. Kevät 2012-2013
Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 1 Viestipohjaisten yritysjärjestelmien suunnittelumallit 1 Viestinvälitykseen perustuvat yritysjärjestelmät Peruselementit:
Lisätiedot1 Tehtävän kuvaus ja analysointi
Olio-ohjelmoinnin harjoitustyön dokumentti Jyri Lehtonen (72039) Taneli Tuovinen (67160) 1 Tehtävän kuvaus ja analysointi 1.1 Tehtävänanto Tee luokka, jolla mallinnetaan sarjaan kytkettyjä kondensaattoreita.
LisätiedotKirkkopalvelut Office365, Opiskelijan ohje 1 / 17 IT Juha Nalli 22.12.2015
Kirkkopalvelut Office365, Opiskelijan ohje 1 / 17 Oppilaat saavat vuoden 2016 alusta käyttöönsä oppilaitoksen sähköpostin ja muita palveluita Microsoftin Office365:sta. Oppilaiden sähköposti on muotoa
LisätiedotOpintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat Rajapinnat Java-kieli ei tue luokkien moniperintää. Jokaisella luokalla voi olla vain yksi välitön yliluokka. Toisinaan olisi
Lisätiedotwww.solita.fi solita@solita.fi
www.solita.fi solita@solita.fi JAVA-SOVELLUSTEN RAKENTAMINEN INTEGROITUUN YMPÄRISTÖÖN Jarno Peltoniemi Solita Oy 10.5.2005 Aiheet Johdanto Portaalit, portletit Oracle Portal Java-sovelluksen rakentaminen
LisätiedotTIE-20200 Ohjelmistojen suunnittelu
TIE-20200 Ohjelmistojen suunnittelu Luento 6: MVC:t ja kumppanit Samuel Lahtinen TIE-20200 Samuel Lahtinen 1 Ajankohtaista Harjoitustyö Versiohallinnan salasanat jne. lähetetty, ota yhteyttä, jos on kadoksissa
LisätiedotSEPA päiväkirja. Aihe: Suunnittelumallit Tekijät: Tuukka Laakso ja Antti Kettunen
SEPA päiväkirja Aihe: Suunnittelumallit Tekijät: Tuukka Laakso ja Antti Kettunen 1. Johdanto...3 2. Menetelmän käyttö...4 3. Kokemukset ja muutokset...5 1. Johdanto SEPAn aiheenamme meillä on suunnittelumallit
LisätiedotTIE-20200 Ohjelmistojen suunnittelu
TIE-20200 Ohjelmistojen suunnittelu Luento 1: Virtuaalifunktiot, Template method 1 Yleistä asiaa Muistakaa harkkatyöilmoittautuminen 23 ryhmää (mm. lihansyöjäkirahvi), vajaita ryhmiäkin on 44 henkeä vielä
Lisätiedot1. Olio-ohjelmointi 1.1
1. Olio-ohjelmointi 1.1 Sisällys Olio-ohjelmointi on eräs ohjelmointiparadigma. Olio-ohjelmoinnin muotoja. Ohjelmiston analyysi ja suunnittelu. Olioparadigman etuja ja kritiikkiä. 1.2 Ohjelmointiparadigmoja
LisätiedotKehyspohjainen ohjelmistokehitys
Kehyspohjainen ohjelmistokehitys Sovellusalueen käsitemalli, piirremalli Yhteiset vaatimukset Kehyksen suunnittelu Suunnittelumallit Vaatimusmäärittely Muunneltavuusvaatimukset Kehysarkkitehtuuri Erikoistamisrajapinta
LisätiedotProjektisuunnitelma. Projektin tavoitteet
Projektisuunnitelma Projektin tavoitteet Projektin tarkoituksena on tunnistaa erilaisia esineitä Kinect-kameran avulla. Kinect-kamera on kytkettynä tietokoneeseen, johon projektissa tehdään tunnistuksen
LisätiedotOlio-ohjelmointi Suunnittelumallit Adapter ja Composite. 1. Adapter
Olio-ohjelmointi Suunnittelumallit Adapter ja Composite Rakennemalleissa päähuomio kohdistetaan siihen, miten luokkia ja olioita yhdistellään muodostamaan laajempia rakenteita. Rakenteelliset luokkamallit
LisätiedotOhjelmistojen mallintaminen. Luento 11, 7.12.
Ohjelmistojen mallintaminen Luento 11, 7.12. Viime viikolla... Oliosuunnittelun yleiset periaatteet Single responsibility eli luokilla vain yksi vastuu Program to an interface, not to concrete implementation,
LisätiedotSEPA diary. Dokumentti: SEPA_diary_PK_HS.doc Päiväys: Projekti: AgileElephant Versio: V0.3
AgilElephant SEPA Diary Petri Kalsi 55347A Heikki Salminen 51137K Tekijä: Petri Kalsi Omistaja: ElectricSeven Aihe: PK&HS Sivu 1 / 7 Dokumenttihistoria Revisiohistoria Revision päiväys: 29.11.2004 Seuraavan
LisätiedotYlläpitodokumentti. Boa Open Access. Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Ylläpitodokumentti Boa Open Access Helsinki 2.5.2006 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti (6 ov) Projektiryhmä Ilmari
LisätiedotOlio-ohjelmointi Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton. 1. Proxy (Edustaja)
Olio-ohjelmointi Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton Tässä osassa tutustutaan yhteen rakennemalliin (Proxy) ja kolmeen luontimalliin (Factory Method, ) teoksen [Gam] pohjalta.
LisätiedotMikä yhteyssuhde on?
1 Yhteyssuhde Mikä yhteyssuhde on? Yhteyssuhde Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma 1 Mikä yhteyssuhde on? Tili - : String - : double * 1 Asiakas - hetu: String - : String
Lisätiedot12. Kehysarkkitehtuurit
12. Kehysarkkitehtuurit Johdanto Kehystyypit Kehysten osittaminen Kehykset ja suunnittelumallit Kehysten etuja ja ongelmia Yhteenvetoa Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1 Johdanto
LisätiedotOhjelmistojen mallintaminen Olioiden yhteistyö. 18.11.2008 Harri Laine 1
Ohjelmistojen mallintaminen Olioiden yhteistyö 18.11.2008 Harri Laine 1 Olioiden yhteistyö Oliokeskeisen ohjelmistonäkemyksen mukaan ohjelmiston palvelut tuotetaan olioiden yhteistyön tuloksena. Ohjelmisto
LisätiedotJohdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC)
HAAGA-HELIA ICT1TA006: Ohjelmointi 1 /5 Johdanto Javaan ja tietokantojen käsittelyyn Java Database Connectivity (JDBC) (Lähteet: Oracle java jdbc Tutorial, Arvo Lipitsäinen: Tietokannan käsittely JDBC:n
LisätiedotMuutamia peruskäsitteitä
Muutamia peruskäsitteitä Huom. 1: nämä peruskäsitteet eivät muodosta hyvin määriteltyä keskenään yhteensopivien käsitteiden joukkoa, vaan käsitteet ovat osittain päällekkäisiä ja eri yhteyksissä niillä
LisätiedotSovellusarkkitehtuurit
HELIA TiKo-05 1 (9) Sovellusarkkitehtuurit ODBC (Open Database Connectivity)... 2 JDBC (Java Database Connectivity)... 5 Middleware... 6 Middleware luokittelu... 7 Tietokanta -middleware... 8 Tapahtumamonitorit
LisätiedotOhjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko
Ohjelmistokehykset Määritelmä & tavoitteet, taustaa & peruskäsitteitä, kehykset vs. suunnittelumallit, erikoistamisrajapinnat & kontrollinkulku, kehystyypit, kehysten rakenne ja evoluutio, esimerkki: JHotDraw,
LisätiedotJReleaser Yksikkötestaus ja JUnit. Mikko Mäkelä 6.11.2002
JReleaser Yksikkötestaus ja JUnit Mikko Mäkelä 6.11.2002 Sisältö Johdanto yksikkötestaukseen JUnit yleisesti JUnit Framework API (TestCase, TestSuite) Testien suorittaminen eri työkaluilla Teknisiä käytäntöjä
LisätiedotPerusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita.
Perusarkkitehtuurin ja vuorovaikutuksen mallintamisen perusteita. Arkkitehtuuriin vaikuttavat ympäristötekijät Jo kehittämisen alkuvaiheessa on tarpeellista hahmotella arkkitehtuurin perusratkaisu. Lähtökohdat
LisätiedotVertailulauseet. Ehtolausekkeet. Vertailulauseet. Vertailulauseet. if-lauseke. if-lauseke. Javan perusteet 2004
Vertailulauseet Ehtolausekkeet Ehdot, valintalausekkeet Boolean-algebra == yhtäsuuruus!= erisuuruus < pienempi suurempi >= suurempi tai yhtäsuuri Esimerkkejä: int i=7; int j=10;
LisätiedotINTINU13A6 Java sovellukset
Johdanto Kurssin tavoitteena oli luoda tietokantaa käyttävä websovellus Java EE ohjelmointikielellä, sekä hyödyntää muun muassa servlettejä sekä JSP sivuja ja muita tekniikoita monipuolisesti. Webserverinä
Lisätiedot2. Olio-ohjelmoinista lyhyesti 2.1
2. Olio-ohjelmoinista lyhyesti 2.1 Sisällys Yleistä. Oliot ja luokat. Attribuutit. Olioiden esittely ja alustus. Rakentajat. Olion operaation kutsuminen. 2.2 Yleistä Olio-ohjelmointia käsitellään hyvin
LisätiedotXHTML - harjoitus. Tehtävä1: Tee xhtml tiedosto käyttäen notepad (muistio) ohjelmaa. Tiedoston tallennus notepad (muistio) ohjelmassa:
XHTML - harjoitus Tehtävä1: Tee xhtml tiedosto käyttäen notepad (muistio) ohjelmaa Tiedoston tallennus notepad (muistio) ohjelmassa: Jokaisen XHTML-dokumentin tulisi alkaa XML-määrittelyllä(engl.XML-prologue),
LisätiedotBomgar etähuoltoohjelmisto
Bomgar etähuoltoohjelmisto Asiakasohje Tämän dokumentin tarkoituksena on kertoa Microksen asiakkaille, mitä asiakkaan tulee tehdä liittyäkseen Microksen asiakastuen lähettämään etähuoltoistuntokutsuun
LisätiedotTietorakenteet, laskuharjoitus 7,
Tietorakenteet, laskuharjoitus 7, 14.-19.3. 1. "Tira meets software engineering, osa 1" Lue luentomonisteen kalvot 233-236. Toteuta luokka Opiskelijarekisteri joka tarjoaa seuraavat palvelut: opiskelijoiden
LisätiedotOhjelmistoarkkitehtuurit. Syksy 2007
Ohjelmistoarkkitehtuurit Syksy 2007 Kai Koskimies 1 Tervetuloa Tampereen yliopisto, Teknillinen korkeakoulu, Turun yliopisto 2 Kurssin tavoitteet Arkkitehtuuritason peruskäsitteiden ymmärtäminen Arkkitehtuurien
LisätiedotTarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen
Tarjolla tänää: Ohjelmiston toteutuksesta JOT2007 CRC-kortit Testilähtöinen kehittäminen Uudelleenrakentaminen Voisiko ohjelmointi olla sittenkin suunnittelua? Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit
LisätiedotTenttikysymykset. + UML-kaavioiden mallintamistehtävät
Tenttikysymykset 1. Selitä mitä asioita kuuluu tietojärjestelmän käsitteeseen. 2. Selitä kapseloinnin ja tiedon suojauksen periaatteet oliolähestymistavassa ja mitä hyötyä näistä periaatteista on. 3. Selitä
LisätiedotMäärittelydokumentti NJC2. Helsinki 11.2.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
Määrittelydokumentti NJC2 Helsinki 11.2.2004 Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos Kurssi 581260 Ohjelmistotuotantoprojekti ( ov) Projektiryhmä Eero Anttila Olli
Lisätiedot7 Viestipohjaisten yritysjärjestelmien suunnittelumallit
7 Viestipohjaisten yritysjärjestelmien suunnittelumallit Hohpe G., Woolf B.: Enterprise Integration Patterns. Addison-Wesley 2004. Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1 Viestinvälitykseen
LisätiedotTietokannat II -kurssin harjoitustyö
Tietokannat II -kurssin harjoitustyö Olli Opiskelija (123), olli.opiskelija@foo.fi Maija Mallioppilas (321), maija.mallioppilas@foo.fi 13.3. 2007 1 Sisältö 1 Tietokannan kuvaus 3 1.1 Tietokannan rakenne..................................
LisätiedotT-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Arkkitehtuuri- ja suunnittelumalli
T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät Harjoitustyöraportti TNT - Tarkistetaan Ne Tentit Arkkitehtuuri- ja suunnittelumalli Lasse Lindqvist Lasse Lopperi llindqvi@cc.hut.fi lmlopper@cc.hut.fi
Lisätiedot812341A Olio-ohjelmointi Peruskäsitteet jatkoa
812341A Olio-ohjelmointi 2106 Peruskäsitteet jatkoa Luokkakohtaiset piirteet n Yhteisiä kaikille saman luokan olioille n Liittyvät luokkaan, eivät yksittäiseen olioon n Kaikki ko. luokan oliot voivat käyttää
LisätiedotOhjelmoinnin peruskurssien laaja oppimäärä, kevät
Ohjelmoinnin peruskurssien laaja oppimäärä, kevät Luento 2: Ohjelman suunnittelua, miten oliot toimivat Riku Saikkonen (osa kalvoista on suoraan ei-laajan kurssin luennoista) 21. 1. 2013 Sisältö 1 Suunnittelua:
Lisätiedot815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset
815338A Ohjelmointikielten periaatteet 2015-2016. Harjoitus 5 Vastaukset Harjoituksen aiheena ovat aliohjelmat ja abstraktit tietotyypit sekä olio-ohjelmointi. Tehtävät tehdään C-, C++- ja Java-kielillä.
LisätiedotP e d a c o d e ohjelmointikoulutus verkossa
P e d a c o d e ohjelmointikoulutus verkossa Java-kielen perusteet Teoria ja ohjelmointitehtävät Java-kielen perusteet 3 YLEISKATSAUS KURSSIN SISÄLTÖIHIN 10 JAVA-KIELEN PERUSTEET 10 OPISKELUN ALOITTAMINEN
LisätiedotVerkkosivut perinteisesti. Tanja Välisalo 11.2.2009
Verkkosivut perinteisesti Tanja Välisalo 11.2.2009 WWW-sivujen vieminen omaan kotisivutilaan yliopiston mikroverkossa https://salasana.jyu.fi Klikkaa painiketta Activate WWW Klikkaa painiketta Activate
LisätiedotJavan perusteita. Janne Käki
Javan perusteita Janne Käki 20.9.2006 Muutama perusasia Tietokone tekee juuri (ja vain) sen, mitä käsketään. Tietokone ymmärtää vain syntaksia (sanojen kirjoitusasua), ei semantiikkaa (sanojen merkitystä).
LisätiedotOpintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen
Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen Taulukot: Array Taulukko Javassa pitää aina perustaa (new) Yksinkertaisessa tilanteessa taulukon koko tiedetään etukäteen ja
LisätiedotVisualStudio Pikaopas, osa 1: WEB sivujen suunnittelu
HAAGA HELIA/IltaTiko ICT2TD005: Ohjelmisto suunnittelutaito 1 VisualStudio Pikaopas, osa 1: WEB sivujen suunnittelu Tämä pikaopas opastaa käyttämään VisualStudion web sivujen suunnittelu ja toteutusominaisuuksia.
LisätiedotViestinvälitysarkkitehtuurit Lähtökohta:
Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 1 Viestinvälitysarkkitehtuurit Lähtökohta: Järjestelmä koostuu keskenään kommunikoivista komponenteista, mahdollisesti
LisätiedotT 76.115 Tietojenkäsittelyopin ohjelmatyö Hirviöryhmä loppukatselmointi. Hirviö. Projektikatselmointi
Hirviö Projektikatselmointi Mikä Hirviö on? Hajautettu muistikirja Professoreille Muistiinpanoja keskusteluista opiskelijan kanssa Diplomitöiden ja jatko opintojen seuranta Raportointi Opetushenkilökunnalle
LisätiedotTämän lisäksi listataan ranskalaisin viivoin järjestelmän tarjoama toiminnallisuus:
Dokumentaatio, osa 1 Tehtävämäärittely Kirjoitetaan lyhyt kuvaus toteutettavasta ohjelmasta. Kuvaus tarkentuu myöhemmin, aluksi dokumentoidaan vain ideat, joiden pohjalta työtä lähdetään tekemään. Kuvaus
LisätiedotTaulukot. Jukka Harju, Jukka Juslin 2006 1
Taulukot Jukka Harju, Jukka Juslin 2006 1 Taulukot Taulukot ovat olioita, jotka auttavat organisoimaan suuria määriä tietoa. Käsittelylistalla on: Taulukon tekeminen ja käyttö Rajojen tarkastus ja kapasiteetti
LisätiedotOhjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1
3. Komponentit ja rajapinnat 3.1 Komponenttien idea: ohjelmistotuotannon rationalisointi 3.2 Mikä on ohjelmistokomponentti? 3.3 Komponentit ohjelmistoyksikköinä 3.4 Rajapinnat 3.6 Komponenttien räätälöinti
LisätiedotViestinvälitysarkkitehtuurit
Viestinvälitysarkkitehtuurit Lähtökohta: Järjestelmä koostuu keskenään kommunikoivista komponenteista, mahdollisesti hajautettuja Komponenttien palveluja ei tiedetä tarkasti etukäteen Komponentteja ja
LisätiedotJärjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä
Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta Hajautettu tietokanta Jokainen hajautettu tietokanta muodostaa oman kokonaisuutensa Loogisesti yhtenäinen data on hajautettu tietokantoihin (eri
LisätiedotSEPA päiväkirja. Aihe: Suunnittelumallit Tekijät: Tuukka Laakso ja Antti Kettunen Ryhmä: Neptune T Ohjelmistoprojekti I
SEPA päiväkirja Aihe: Suunnittelumallit Tekijät: Tuukka Laakso ja Antti Kettunen Ryhmä: Neptune T-76.4110 Ohjelmistoprojekti I 1. Johdanto...3 2. Menetelmän käyttö...4 3. Kokemukset ja muutokset...5 4
LisätiedotSunnittelumallit Harjoitustehtävät syksy 2015 / Simo Silander
Sunnittelumallit Harjoitustehtävät syksy 2015 / Simo Silander Ohjelmointitehtävät koodataan pääsääntöisesti Javalla. Netistä löytyviä vapaasti käytettäviä ratkaisuja voi esittää, kunhan ne osaa selittää.
LisätiedotPalveluperustaiset arkkitehtuurityylit
Palveluperustaiset arkkitehtuurityylit Mukana palvelun tarjoajia ja palvelun käyttäjiä Perusajatuksena tyypillisesti tarjota johonkin resurssiin liittyviä palveluita 1 Asiakas-palvelin -arkkitehtuurit
LisätiedotHirviö Tekninen spesifikaatio
Hirviö Tekninen spesifikaatio Jani Heikkinen Anssi Kalliolahti Jukka Larja Kim Nylund Liia Sarjakoski Samuli Sorvakko Timo Toivanen 15. maaliskuuta 2005 Tiivistelmä Tekninen spesifikaatio määrittelee Hirviö-järjestelmän
Lisätiedot