Ohjelmistoarkkitehtuurit Refaktorointia, ohjelmien ylläpitoa ja evoluutiota. Kevät 2016
|
|
- Raimo Saarinen
- 7 vuotta sitten
- Katselukertoja:
Transkriptio
1 Ohjelmistoarkkitehtuurit Refaktorointia, ohjelmien ylläpitoa ja evoluutiota Kevät 2016 Samuel Lahtinen Ohjelmistoarkkitehtuurit
2 Aiheita Refaktorointi (N4S-projekti, ~15 firmaa) Määritystä, esimerkkejä Pienempi vai suurempi? Refaktorointi ja ohjelmistotyö Ohjelmien ylläpitoa ja evoluutiota Perinnekoodit (legacy) Yritystietojärjestelmistä pikaisesti
3 Mitä on refaktorointi?
4 Mitä on refaktorointi? Ohjelman rakenteen muuttamista ilman että toiminnallisuus muuttuu is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external behavior. Martin Fowler Its heart is a series of small behavior preserving transformations. Each transformation (called a refactoring ) does little, but a sequence of transformations can produce a significant restructuring. Since each refactoring is small, it s less likely to go wrong. The system is kept fully working after each small refactoring, reducing the chances that a system can get seriously broken during the restructuring.
5 Mitä erilaisia refaktorointitoimia on?
6 Mitä erilaisia refaktorointitoimia on? Karkea jako pienet jokapäiväisen työn lomassa tehtävät ylläpito- ja siivoustoimet Funktiotason siivoilut Pilkkominen, yhdistely, selkeyttäminen, parametrit, delegoinnit/niiden poisto Isommat refaktoroinnit, vaatii selkeän päätöksen refaktoroinnista Isompi operaatio koostuu sarjasta pieniä (no shit!?!) Ei tehtävissä normaalin ominaisuuksien tekemisen/bugikorjauksien ohessa Refactoring or redesign? (termistömasturbaattoreille)
7 Refaktorointi ja työkalut IDE:t, modernit koodieditorit (refaktorointitoimien tuki, uudelleennimeäminen, funktion parametrien muutokset) Erilaiset lisätyökalut, esim.
8 Esimerkkejä refaktorointitoimenpiteistä class CircleArea { const double PI = ; double CalculatePaintNeeded( double paintperunit,double radius ) { } double area = PI * radius * radius; return area / paintperunit; } bool paintarea( double paintamount, Color paintcolor ) {... } Extract method class CircleArea { public const double PI = ; private double radius; } CircleArea(... ){} double CalculatePaintNeeded( double paintperunit ) { return area() / paintperunit; } double area() { return PI * radius*radius; } bool paintarea( double paintamount, Color paintcolor ) {... } void setradius( double newradius );
9 Esimerkkejä refaktorointitoimenpiteistä Replace Parameter with Explicit Methods void SetValue(string name, int value) { if (name.equals("height")) { height = value; return; } if (name.equals("width")) { width = value; return; } Assert.Fail(); } void SetHeight(int arg) { height = arg; } void SetWidth(int arg) { width = arg; } Koodin luettavuus paranee asetamoottorintila( kaynnissa, true ); kaynnistamoottori();
10 Esimerkkejä refaktorointitoimenpiteistä Hierarkian litistäminen (collapse hierarchy) Kantaluokan lisääminen (extract superclass)
11 Esimerkkejä refaktorointitoimenpiteistä Korvataan saman asian eri tietotyypeille tekevät funktiot / tai luokkahierarkia Template-funktiolla (tai luokalla)
12 Näitähän riittää eivät mitään rakettitiedettä, vaan peruskoodausjuttuja Kuitenkin hyödyllisiä vilkaista, sisältää paljon hyvän koodin periaatteita Lisää esimerkkejä:
13 Esimerkkejä isommista refaktoroinneista Luokka turvonnut ajansaatossa, ahminut vastuualueita palastelu osiin, aloitettiin vaiheittain, luotiin rajapinnat roolien mukaan, sama toteuttaja, testit rajapintojen suhteen, luotiin uusi toteutus Palvelusta tullut huomattavasti ennakoitua suositumpi ja samalla suorituskykytarpeet kasvaneet, nykyinen toteutus skaalautuu huonosti Jaetaan sovellus useampaan mikropalveluun, helpompi antaa suorituskykyä sitä eniten tarvitsevalle osalle, joka vaatii eniten suorituskykyä. Toteutustyö ja pilkkominen tehdään rinnalla, kun vanha toteutusversio käynnissä
14 Esimerkkejä isommista refaktoroinneista Sovelluksen toteutuspuolen edetessä huomataan, että osa tiedoista erittäin hankalaa esittää käyttöliittymässä (tietojen sidonta valitulla tekniikalla haastavaa). Käyttöliittymä kirjoitetaan kokonaan alusta käyttäen uutta kehystä (.js framework vaihtuu) Laajasti kolmannen osapuolen käytössä olevan palvelun rajapintoja halutaan päivittää ja uudistaa. Tehdään uusi versio uudella nimellä vanhan rinnalle, pidetään vanha hengissä, kunnes kaikki käyttäjät on saatu siirtymään uuteen. (tässä auttaa reititys, seuranta, jne.) Vanhaan joudutaan tekemään pakolliset päivitykset niin pitkään kun sillä on käyttöä.
15 Miksi refaktoroida?
16 Miksi refaktoroida? Uusien ominaisuuksien lisääminen vaatii sitä Bugien korjaaminen vaatii myös refaktorointia Testattavuus, testien tekeminen vaikeaa tai mahdotonta Nopeutetaan tulevien ominaisuuksien toteuttamista Monimutkaisuuden/vaikeaselkoisuuden (complexity) vähentäminen Ylläpidettävyyden helpottaminen Oma/työkavereiden mielenterveys Refaktorointi voi olla mukavaa
17 Syitä refaktorointitarpeeseen Teknisen velan kertyminen Kiire toteuttaa ominaisuuksia Toteuttajat pihalla Alussa ei tiedetä riittävästi (puutteellinen tieto asiakkaalta, oma osaaminen ei vielä täydellistä jne.) Järjestelmän käyttötarkoitus voi muuttua sen elinaikana Järjestelmän vaatimukset muuttuvat, esimerkiksi suorituskyky, käyttäjämäärät jne. Kehittyminen ihmisenä ja koodarina, uusien asioiden oppiminen Legacy-järjestelmän ylläpitäminen
18 Jotain koodihajuista (code smells) Yleinen tunne, tää ei oo oikein kunnossa, tän katselu ja päivittäminen on ruotoista touhua Koodista suoraan, pitkiä metodeja/luokkia, duplikoitua koodia, vaikeaselkoisuus, todo-henkisiä kommentteja koodissa, vastuualueiden epäselvyys, uudet ominaisuudet vaativat muutoksia moneen paikkaan, jne. Muita merkkejä, kommentit versiohallinnassa, taskien venyminen
19 Vinkkejä 1. Turvaverkko kuntoon: versiohallinta ja automaattitestit lähes pakollisia 2. Käytä versiohallintaa refaktorointien kirjaamiseen. Tee ensin refaktorointi, sitten ominaisuuden lisääminen, molemmista commit. 3. Tarkista ja tarvittaessa päivitä testit ennen refaktoroinnin aloittamista 4. Koodikatselmoinnit käyttöön isompien refaktorointien kanssa 5. Hajota & korjaa: riko/poista koodi, jota olet uudelleenkirjoittamassa kunnolla ja kirjoita uudelleen, testaa uusi käyttäen testipatteria
20 Vinkkejä 1. Tee pieniä refaktorointitoimia aina kun näet tarvetta sellaiselle. Voit tehdä näitä bugikorjauksien ja ominaisuuksien lisäämisen kanssa samaan aikaan. Näin huollat koodia ja se ei happane vaan jopa paranee. 2. Liitä pikkurefaktorointi mukaan aika-arvioihin, niin pystyt siistimään koodia työn ohessa. 3. Ajoita isommat refaktoroinnit järkevästi: älä tee isoja refaktorointeja juuri ennen julkaisua. Jos käytössä CI & CD-putket, niin älä tee isoja refaktorointeja loppuviikosta tai kriittisten bugikorjausten kera. 4. Omista yksi päivä viikossa refaktoroinnille 5. Pyri saamaan asiakkaan puolelle tekniikoista ymmärtävä henkilö. Näin refaktorointitarpeet ovat helpompia kommunikoida. 6. Pienet tiimit samassa huoneessa, niin refaktorointi on helppoa. ( mää kirjoitan tän uusiks, älkää koskeko tähän pariin tuntiin ) Refactoring-a Shot in the Dark? IEEE Software Marko Leppanen Simo Makinen Samuel Lahtinen Outi Sievi-Korte Antti-Pekka Tuovinen Tomi Mannisto
21 Refaktorointipatterneja?
22 Refaktorointi on turhaa? ei kovinkaan häävisti tehty tutkimus, mutta saanut julkisuutta Metriikat vs. refaktorointi (hatusta repäistyt metriikat) opiskelijat refaktoroimassa (itselleen outoa koodia, koodin koko 4500 riviä) Lisätään olioita, testataan onko koodi tehokkaampaa
23 Metriikat? Metriikat eivät välttämättä anna mitään sellaista tietoa joka ei olisi jo selvillä järkevälle ja kokeneelle kehittäjälle Tutkimuksessa vain yhdessä paikassa käytössä & hyödylliseksi koettu Ei kuitenkaan tyrmätty, todettiin että koodarin ja metriikan kertomat ongelmakohdat samoja Metriikoista voi olla haittaa, voi ohjata vain muuttamaan asioita jotka näkyvät metriikoiden avulla Koodirivit (LOC/NonCommentinLOC), luokkien koko, ylläpidettävyysindeksit, syklomaattinen kompleksisuus (cyclomatic complexity), perintähierarkioiden syvyys, jäsenmuuttujien määrä, parameterien määrä, funktioiden määrä Hyödyllisin metriikoista LOC (kun mietitään projektin kompleksisuutta Metriikoiden käyttö ja refaktorointitarpeen myyminen johdon suuntaan
24 Historiaa opetuskursseilta C++:n tyylianalysaattori Style++ oli käytössä kursseilla Automaattisesti tarkastetut työt (merkkijonovertailua tuloksille) Tyylianalysaattori ja minimipistemäärä, jolla palautus menee tarkastettavaksi Tutki mm. (kopio)rakentajien, alustuslistojen, funktioiden ja kooditiedostojen pituutta, sisennysten, muuttujien alustamisen, tyhjien rivien määrää jne. Sinällään järkeviä kohteita, mutta johti usein typeryyksiin tekemiseen
25 Työkaluja Refaktoroinnin aputyökalut, versiohallinta ja testiympäristöt Koodin muokkauspuolella editorit tarjoavat jonkin verran refaktorointitukea (uudelleen nimeämiset, parametrien muokkaaminen, funktioiden luonti koodipätkästä, osassa funktioiden siirtäminen luokkaan/pois luokasta) Metriikkatyökalut ennakkovaroittimena Metriikkatyökalut, esim. yleinen SonarQube ( )
26 Refaktorointipäätösten tekeminen Refaktoroinnin aputyökalut, versiohallinta ja testiympäristöt Koodin muokkauspuolella editorit tarjoavat jonkin verran refaktorointitukea (uudelleen nimeämiset, parametrien muokkaaminen, funktioiden luonti koodipätkästä, osassa funktioiden siirtäminen luokkaan/pois luokasta) Metriikkatyökalut ennakkovaroittimena Metriikkatyökalut, esim. yleinen SonarQube ( )
27 Refaktorointipäätösten tekeminen Decision-Making Framework for Refactoring, IEEE MTD 2015, Marko Leppänen Samuel Lahtinen Kati Kuusinen Simo Mäkinen Tomi Männistö Juha Itkonen Jesse Yli-Huumo Timo Lehtonen
28 Refaktorointi versiohallinnassa
29 Koodin rapautumisen estäminen Refaktoroinnilla, huolehditaan lähdekoodin ja rakenteen siisteydestä Koodin pitäminen siistinä Tyylisäännöt, ohjelmointikielen käyttösäännöt ja nimeämiskäytännöt: Esimerkiksi: Ohjelmalle sovittu korkean tason arkkitehtuuri, usein kokoelma sääntöjä siitä, miten asiat tehdään, missä saa tehdä mitäkin Ei rikota, tai ohjelmasta tulee nopeasti ylläpitokelvoton
30 Oheismateriaalia
31 Yhteenveto Perusrefaktorointi osa päivittäistä työtä Isompien toimien tekeminen vaatii yleensä suunnittelua (ja asiakkaan suostumuksenkin) Metriikoiden käyttö harvinaista Työkalutuki lähinnä koodieditorien perusrefaktorointitoiminnot, muuten refaktorointi vaatii omien aivojen käyttöä, vaikeaa keksiä järkevää työkalua tähän Versiohallinta, testiympäristöt, (CI, CD)
32 Perintönä saatua koodia (legacy code)
33 Miksi legacy-koodi on hankalaa? Ohjelmistoarkkitehtuurit
34 Miksi legacy-koodi on hankalaa? Ei testejä Järkevien testien tekeminen lähes mahdotonta Koodia vailla rakennetta Toteutustavat kummallisia Vanhat kääntäjät ja niiden kanssa tehdyt optimoinnit Vanhat kääntäjät ja niiden puuttellinen tuki kielen ominaisuuksille ja omat viritykset Ohjelmointityylit ja sopimukset puuttuvat Dokumentaatio puuttuu Arkkitehtuuria ei ole Ohjelmistoarkkitehtuurit
35 Legacyn kanssa puljaaminen Tunnista vaatimukset Pyri ymmärtämään koodia Muokkaa koodia Kirjoita testit (tämä voi olla myös toisena kohtana) Ohjelmistoarkkitehtuurit
36 Jotain vinkkejä Kääntäjän hyväksikäyttö Kääntäjä löytää projektista riippuvuuksia (esim. muuta nimeä jne tutki käännösvirheet) Funktioiden muodostaminen/metsästys Uusi rajapinta ja toteutus, jossa käytetään vanhaa Yksikkötestit uudelle rajapinnalle ja sen tarjoamalle toiminnallisuudelle Pariohjelmointi Ohjelmistoarkkitehtuurit
37 Ohjelmien ylläpito & evoluutio Ylläpito ja evoluutio voi olla refaktorointia, jos järjestelmänlähdekoodi saatavilla ja järkevästi muokattavissa Eritasoisia ylläpitotehtäviä / refaktorointia: Yksinkertaiset bugikorjaukset, lähdekoodi saatavilla, rajoittuvat muutettaviin koodilohkoihin (ehkä ) Testien saatavuus? Laajentaminen Mukauttaminen (vaihtuvat komponentit, osakokonaisuudet) Rakenteen uusiminen Ohjelmistoarkkitehtuurit
38 Ohjelmien ylläpidosta / muuntelusta Arkkitehtuuritason muutokset usein kalliita Yksittäisten toteutusosien muuntelu helpompaa Yhteistoiminta ja isommat muutokset Tarve ymmärtää ohjelman rakenne, arkkitehtuuri Muutostarpeita: Korjaukset, päivitykset Järjestelmän uudistaminen (pala palalta) Rautatason muutokset Ohjelmistoarkkitehtuurit
39 Muutoksen koon ja hinnan arviointia Yksi mahdollinen tapa selvittää: arkkitehtuuriarviointi, jossa keskitytään muutostarpeeseen ja päätösten selvittämiseen Hiljaisen tiedon dokumentointi + muutoksen suuruuden arviointi Toimii, jos mukana alkuperäisen järjestelmän suunnittelijoita/toteuttaneita Ohjelmistoarkkitehtuurit
40 Kurssilla opittuja työkaluja Muunneltavuuden hallinta ja ylläpito/päivitykset Päivitykset, muutokset helpompi Ei-suunnitellut muutokset, enemmän työtä/rakenteeseen koskemista esim. pattern-henkinen lähestymistapa: millä tämän ongelman saisi ratkaistua? Dokumentaatiota arkkitehtuuriratkaisuista, helpompi ymmärtää mitä ollaan tekemässä Tämä päätös on tehty näistä syistä ovatko edelleen valideja, mitä muita vaikutuksia muutoksesta seuraa? Ohjelmistoarkkitehtuurit
41 Käärimistä (wrapping) Kääriminen, rajapintojen uudistamista =Black-box re-engineering (riittää kun tietää mitä mokkula tekee, ei tarvi tietää toteutusta) Toteutusten tai tiedon/tietoesitysten kääriminen mukauttavaa ylläpitoa: käärittävien toimintojen ja tietoalkioiden tunnistamista Uudistava ylläpito: lähdetään rakentamaan järjestelmää uudestaan (toteutetaan järjestelmä uuden mallin mukaisesti) Ohjelmistoarkkitehtuurit
42 Käärintälähestymistapoja Hajoita ja hallitse (divide-and-conquer) vähittäinen uudistaminen rajapinnan tarjoaminen uudistettujen ja uudistamattomien osien välille Hajoita ja kääri (divide-and-wrap) kaikkien (uudistamattomien) osien kääriminen käärittyjen osien vähittäinen uudistaminen Yhdistä ja hallitse ohjelmistokehyksen rakentaminen uusien ja vanhojen osien välille kehys mallintaa järjestelmän sovellustoiminnallisuutta Ohjelmistoarkkitehtuurit
43 Toiminnallisuuden vaihto Ohjelmistoarkkitehtuurit
44 Uudelleenkäyttö Ohjelmistoarkkitehtuurit
45 Tehtävä Olet töissä Sköldpaddor ABB:ssä. Aikaisempi hittituote oli SSVN versiohallinta (komentoriviltä), mutta nyt ollaan siirtymässä kohti uusia tuulia. Komentorivin rinnalle luodaan myös graafinen maailma, jossa on helpompi tarkastella versiohallinan käyttöä ja tehdä vertailuja eri versioiden välillä. Vanhaan versiohallintaan halutaan pääsy myös uudessa graafisessa ympäristössä. Valitettavasti alkuperäisohjelma on toteutettu huumeiden vaikutuksen alaisena Cobolilla ja Perlin tanskalaisella murteella. Versiohallinta kyllä toimii moitteettomasti, mutta toteutuksen muuttaminen on mahdotonta. Minkälaisilla ratkaisuilla saisit hyödynnettyä vanhan komentorivihärpäkkeen toiminnallisuutta omassa toteutuksessasi? Ohjelmistoarkkitehtuurit
46 Yhteenvetoa Ylläpito ja evoluutio, pitkälti refaktorointia, mutta hieman eri näkökulmasta Usein legacy-järjestelmien tukemista tai niiden osien liittämistä uuteen järjestelmään Ohjelmistoarkkitehtuurit
47 Referenssejä, luettavaa Kirja: Working Effectively with Legacy Code, Michael Feathers Ohjelmistoarkkitehtuurit
48 Viestipohjaisten yritysjärjestelmien suunnittelumallit
49 Yritystietojärjestelmiä Erilaisia tapoja yhdistellä bisnes, kehitystyö, lopputuote ja toisaalta kuvata järjestelmän osia, kommunikaatiota Aholan vierailuluennon käsittelivät asiaa hyvin, täällä hieman samaa asiaa ja esimerkkejä suunnittelumalleista Yritystietojärjestelmät/muutokset niihin, joku tekee esim. business process management tyyppistä tutkailua Enterprise messaging systems, strukturoidut viestit, yhtenäiset protokollat, huomioalueita (turvallisuus, reititys, metadata, tilaajamalli, oikeudet (policy) viestisisältö ja otsikkotiedot eriytettyinä Ohjelmistoarkkitehtuurit
50 Yritystietojärjestelmiä Taustamateriaalia, perusperiaatteet valideja, uusimmat alustat/tekniikat puuttuvat esimerkeistä: Enterprise Integration Patterns: Patterns of Enterprise Application Architecture by (Martin Fowler with Dave Rice, Matthew Foemmel, Edward Hieatt, Robert Mee, and Randy Stafford) Mallintaminen jne. työkaluja ja mallinnustekniikoita tarjolla, esimerkki Enterprise systems architect: Ohjelmistoarkkitehtuurit
51 Viestinvälitykseen perustuvat yritysjärjestelmät Peruselementit: Viesti Kanava Reititys Muunnos Sovellus Sovellus Sovitin Sovitin Hallinta ja monitorointi (Hohpe & Woolf: Enterprise Integration Patterns. Addison-Wesley 2004) Ohjelmistoarkkitehtuurit
52 Esimerkki: Tilausten käsittely Asiakkaat Varasto Vaatimuksia: Jälleenmyyjä TKS Valmistajat Kuljetusliike - Asiakkaat voivat lähettää tilauksia webin kautta tai sähköpostiilla - Tilaus käsitellään monessa vaiheessa: varastotarkistus, toimitus, laskutus - Integrointi olemassaoleviin sovelluksiin: web-client, sähköpostiijärjestelmä, laskutus-, toimitus-, ja varastojärjestelmät Ohjelmistoarkkitehtuurit
53 Tilausten vastaanotto Viesti Kanava Reititys Muunnos Sovellus Sovellus Sovitin Sovitin Hallinta ja monitorointi Ohjelmistoarkkitehtuurit
54 Tilausten vastaanotto: useita lähteitä Web- GUI Viestiportti Kahdenvälinen kanava Viestimuuntaja Web -> Kanoninen sähköposti Kanavasovitin Julkaisija-tilaaja kanava Viestimuuntaja sähköposti-> Kanoninen Ohjelmistoarkkitehtuurit
55 Viestiportti (Messaging Gateway) Synkroninen, blokkaava: Sovellus Viestiportti Viestijärjestelmä - erottaa sovelluslogiikan viestinvälityksestä - tarjoaa sovellusaluekohtaisen API:n sovelluksen käyttöön - helposti vaihdettavissa - asynkroninen tapa: esim. sovellus jatkaa ja pollaa viestiportin tulosviestejä palvelupyyntö viestin lähetys tuloksen vastaanotto prosessointi Ohjelmistoarkkitehtuurit
56 Tilausten vastaanotto: useita lähteitä Web- GUI Viestiportti Kahdenvälinen kanava Viestimuuntaja Web -> Kanoninen sähköpostin vastaanottaja Kanavasovitin Julkaisija-tilaaja kanava Viestimuuntaja sähköposti-> Kanoninen Ohjelmistoarkkitehtuurit
57 Kanavasovitin (Channel Adapter) Löyhä sovitinliitos: Sovitin ei integroidu suoraan sovellukseen vaan välillisesti esim. - sovelluksen yleisen API:n kautta - tarkkailemalla sovelluksen aiheuttamia tapahtumia - tarkkailemalla sovelluksen tuottamia tiedostoja tai tietokantoja (esim. tietokantatriggeri) Ohjelmistoarkkitehtuurit
58 Tilausten vastaanotto: useita lähteitä Web- GUI Viestiportti Kahdenvälinen kanava Viestimuuntaja Web -> Kanoninen sähköpostin vastaanottaja Kanavasovitin Julkaisija-tilaaja kanava Viestimuuntaja sähköposti -> Kanoninen Ohjelmistoarkkitehtuurit
59 Kahdenvälinen kanava (Point-to-Point Channel) Voi olla useita potentiaalisia vastaanottajia, mutta kanava itse takaa, että vain yksi vastaanottaja saa kunkin viestin Mahdollisesta vastaanottajan valinnasta huolehtii kanava, vastaanottajien ei tarvitse koordinoida keskenään Ohjelmistoarkkitehtuurit
60 Tilausten vastaanotto: useita lähteitä Web- GUI Viestiportti Kahdenvälinen kanava Viestimuuntaja Web -> Kanoninen sähköpostin vastaanottaja Kanavasovitin Julkaisija-tilaaja kanava Viestimuuntaja sähköposti -> Kanoninen Ohjelmistoarkkitehtuurit
61 Kanoninen tietomalli (Canonical Data Model) tiedon esitys, joka on riippumaton sovelluksista sovellusriippuvat esitykset muunnetaan kanoniseen jos sovelluksen esitysmuoto muuttuu, riittää muuttaa muuntaja X kanoninen tai kanoninen X Ohjelmistoarkkitehtuurit
62 Viestimuuntaja (Message Translator) Muuttaa formaatin tai rakenteen muuttamatta informaatiota Erillinen komponentti Viestimaailman Sovitin (Adapter): muuttaa viestiformaatin XML-pohjaisten viestien muuntaminen keskenään: XSLT XML <-> jokin muu formaatti: XML jäsentäjät ym. Ohjelmistoarkkitehtuurit
63 Tilausten vastaanotto: useita lähteitä Web- GUI Viestiportti Kahdenvälinen kanava Viestimuuntaja Web -> Kanoninen sähköposti vastaanottaja Kanavasovitin Julkaisija-tilaaja kanava Viestimuuntaja sähköposti -> Kanoninen Ohjelmistoarkkitehtuurit
64 Julkaisija-tilaaja kanava (Publisher-Subscriber Channel) Viesti Tilaaja Julkaisija Julkaisijalta tuleva viesti kopioidaan kaikille tilaajille Kukin tilaaja saa jokaisen viestin kerran Tilaajat eivät tunne toisiaan eivätkä julkaisijaa Julkaisija ei tunne tilaajia Tarkkailija-suunnittelumallin idea viestimaailmassa (tapahtumaviestejä) Voi olla myös monta julkaisíjaa Tilaaja Tilaaja Ohjelmistoarkkitehtuurit
65 Kysyttävää?
66 Reititys Viesti Kanava Reititys Muunnos Sovellus Sovellus Sovitin Sovitin Hallinta ja monitorointi Ohjelmistoarkkitehtuurit
67 Tilausten käsittely tarkista varasto tarkista asiakas [OK] Poikkeusten käsittely toimita tavara lähetä lasku Ohjelmistoarkkitehtuurit
68 Tilausten käsittely Asiakashallinta Sisältöperustainen reititin kelvollinen tilaus Julkaisijatilaaja Julkaisijatilaaja Laskutus Toimitus Varastohallinta Yhdistäjä epäkelpo tilaus Ohjelmistoarkkitehtuurit
69 Yhdistäjä (Aggregator) Tilallinen komponentti Kerää koosteita sisääntulevista viesteistä Pitää yllä vaillinaisia koosteita Jos uusi viesti tekee jostakin vaillinaisesta koosteesta täydellisen, koosteviesti lähetetään eteenpäin Kooste ei ole välttämättä unioni (esim. valitaan paras tai ensimmäinen sopiva, muut unohdetaan) Ohjelmistoarkkitehtuurit
70 Tilausten käsittely Asiakashallinta Sisältöperustainen reititin kelvollinen tilaus Laskutus Varastohallinta Yhdistäjä Toimitus alihankkija/muu toimittaja epäkelpo tilaus Ohjelmistoarkkitehtuurit
71 Sisältöperustainen reititin (Content-based Router) Vastaanottaja/kanava määrätään viestin sisällön perusteella (esim. jonkin kentän arvo tai esiintyminen) Ongelma: reititin tuntee vastaanottajat ja riippuu niistä Mahdollinen ratkaisu: vastaanottajat informoivat (dynaamisesti) reititintä millaisia viestejä haluavat (Dynamic Router) Ohjelmistoarkkitehtuurit
72 Hallinta ja monitorointi Viesti Kanava Reititys Muunnos Sovellus Sovellus Sovitin Sovitin Hallinta ja monitorointi Ohjelmistoarkkitehtuurit
73 Älykäs Edustaja (Smart Proxy) Sovellus1 Pyyntö Vastaus1 Älykäs Edustaja Pyyntö Palvelun tarjoaja Sovellus2 Vastaus2 Vastaus Sovellukset lähettävät palvelupyyntöjä Smart Proxy toimii palvelun pyytäjien ja tarjoajan välissä SP pitää kirjaa pyytäjistä ja ohjaa vastauksen oikealle sovellukselle (Correlation Identifier antaa tunnisteen pyynnölle) SP voi kerätä metatietoa viesteistä (esim. käsittelyaika) ja lähettää sen valvontayksikölle Kontrolli Metatieto Ohjelmistoarkkitehtuurit
74 Yhteenveto Erillisiä osajärjestelmiä, niiden integrointia Tiedon välitys, tiedon käsittely ja vaiheet olennaisia Missä muodossa tietoa käsitellään, tietomalli? Ohjelmistoarkkitehtuurit
75 Ekosysteemijuttuja
76 Mikä ekosysteemi? Ohjelmistoalusta ja yhteisö, joka tuottaa sovelluksia alustalle Laajentavat alustaa, tekevät alustalla toimivia sovelluksia, voivat olla avoimia/suljettuja Alunperin käyttöjärjestelmä ja sen palvelut Siihen päälle ajureita, apupalveluita Sovelluksia, niitä hyödyntäviä muita sovelluksia jne. Ei tehdä enää pelkästään oman firman sisällä, laajentuminen organisaation ulkopuolelle mukana sosiaalinen ekosysteemipuoli (community) From Software Product Lines to Software Ecosystems LC09-SoftwareEcosystems-Accepted.pdf Ohjelmistoarkkitehtuurit
77 Määritelmää David G. Messerschmitt and Clemens Szyperski (Software ecosystems kirja): A set of businesses functioning as a unit and interacting with a shared market for software and services, together with relationships among them. These relationships are frequently underpinned by a common technological platform and operate through the exchange of information, resources, and artifacts. Lungu : A collection of systems, which are developed and co-evolve in the same environment (company/social/technical) Jan Bosch: Software ecosystems take various forms but typically consist of a company providing a software platform and a community of external developers providing functionality that extends the basic platform. Ohjelmistoarkkitehtuurit
78 Ekosysteemiajatelma, muutakin kuin käyttöjärjestelmätaso Ekosysteemiajattelua Tarjotaan kehitystyökalut (+rajataan asioita) Tarjotaan valmiita ratkaisumalleja, näin ohjelma jaetaan esim. MVC:n, MVVM:n mukaisesti/active record, näin käsittelet asian x Sovelluskauppa/sovellusten keskitetty haku & hallinta Vaatimukset, mitä sovellus saa/ei saa tehdä Käyttöliittymävaatimuksia ja toiminnallisia vaatimuksia (mitä tapahtuu mistäkin napista, mitä tapahtuu, kun ohjelmasta poistutaan jne.) Mahdollinen ohjelmistojen verifiointi Ohjelmistoarkkitehtuurit
79 Käyttöjärjestelmä ja sen vaatimuksia Ohjelmistoarkkitehtuurit
80 Esimerkkejä ekosysteemeistä Facebook, Google, Windows 8, Android, Linux eri versioineen, i- tuotteet, konsolit Raspberryt, Arduinot (alusta ja fyysisiä & ohjelmistokomponentteja, yhteisöä) Pilvimaailman tuotteet Ohjelmistoarkkitehtuurit
81 Pilvinen ekosysteemi esimerkki Ohjelmistoarkkitehtuurit
82 Taksonomiaa Entä nykyaikaistettuna? Software Ecosystem Taxonomy (Bosch, 2009) Ohjelmistoarkkitehtuurit
83 Alusta ja ekosysteemi ohjaavat arkkitehtuuria Sovellusten kehittämisessä ajateltu käytettävän tiettyjä ratkaisutapoja ohjaa toteutettavan ohjelman arkkitehtuurin tähän suuntaan. Helpottaa suunnittelua, mutta jos yritetään tehdä jotain ajatellun muotin ulkopuolelle ulottuvaa, asiat monimutkaisempia Ekosysteemin valintaa, tuki, stabiilius, jatkokehitys, soveltuvuus Useat ekosysteemit ja niiden yhteensovittaminen Ohjelmistoarkkitehtuurit
84 Sopimuksia, vaatimuksia Vaatimuksia: valmiina annettu arkkitehtuuri, työkalujen mahdollisuudet, aihealuerajoitteet, UI, toiminnallisuus, sisältö, teknologia/laitteiston käyttö ( mitä sovellus voi tehdä) Ohjelmistoarkkitehtuurit
85 Oma ekosysteemi? Esimerkki: Tehdään universaali kalenterisovellus, jossa voi ripustella muistilappuja jne. Kalenterioikeuksien jako, Facebook-yhteydet jne. Tietojen säilöntä palvelinpäässä (pilvessä tms.) Alustat: puhelimet (i-sellaiset, Win, Android), tabletit, läppärit/pöytäkoneet Samoja toimintoja, ilmettä, mutta noudatettava kohdealustan sääntöjä Mitä huomiota, mistä osasta tulisi järjestelmän ekosysteemiosio? Ohjelmistoarkkitehtuurit
86 Oman ekosysteemin osia Varsinaiset sovellukset, front-end, käyttöliittymäpuoli Yhteinen osa, tiedon käsittely, tallennus, haku jne. Tämä osa voidaan toteuttaa & suunnitella omien halujen mukaan Käytetyt tekniikat, kielet, toimintatavat, arkkitehtuuriratkaisut Ohjelmistoarkkitehtuurit
87 Sovelluskohtaiset osat, vaatimuksia? Mitä erilaisia vaatimuksia/mahdollisuuksia erikoistettujen osien toteuttamisessa tulee vastaan? Käyttöliittymä ja sujuvuus myyntivaltteina, erikoistetut versiot joka alustalle Tekniikka- ja kieli (millä kielellä käyttäjän osa toteutetaan osaaminen (HTML5, JavaScript, Obj-C, Java, C#, C++ ) Käyttöliittymäpuoli: yhtenäisyys vs. eri alustojen omat vaatimukset Ulkopuoliset kehittäjät/community: rajapintojen dokumentointi, esimerkit, tietoturvallisuus, varmennetaanko ulkopuolinen ohjelmisto jne. Voidaanko tehdä jotain geneeristä yhteistä osaa, jota kaikissa järjestelmissä voitaisiin hyödyntää? esim. Tiedonsiirto, käsittely, paketointi Ohjelmistoarkkitehtuurit
88 Yhteenvetoa Ekosysteemi ajatusmalli (muutakin kuin kasa tarjottua koodia) yhteisö Ekosysteemit ja sovelluskehitys, vaatimukset & hyödyt, ekosysteemi ja oletusarkkitehtuuri Ekosysteemiajattelu omissa projekteissa? Ohjelmistoarkkitehtuurit
Ohjelmistoarkkitehtuurit. Kevät
Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 1 Viestipohjaisten yritysjärjestelmien suunnittelumallit Viestinvälitykseen perustuvat yritysjärjestelmät Peruselementit:
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ä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ätiedotOhjelmistoarkkitehtuurit. Kevät 2014
Ohjelmistoarkkitehtuurit Kevät 2014 Samuel Lahtinen http://www.cs.tut.fi/~ohar/ 1 Infoa Vierailuluentojen korviketehtävä kotisivuilla Viikkoharkkojen bonustehtävä julkaistu Tarvittaessa voit myös tehdä
LisätiedotAbstraktiotason nostoa, mallipohjainen ohjelmistokehitys. Samuel Lahtinen Ohjelmistoarkkitehtuurit
Abstraktiotason nostoa, mallipohjainen ohjelmistokehitys Samuel Lahtinen Ohjelmistoarkkitehtuurit 20.4.2016 Viimeinen oikea luento Erilaisia mallipohjaisuuteen viittaavia juttuja Low code platforms, vähäisen
LisätiedotViestinvälitysarkkitehtuurit
Viestinvälitysarkkitehtuurit Lähtökohta: Järjestelmä koostuu keskenään kommunikoivista komponenteista, mahdollisesti hajautettuja Komponenttien palveluja ei tiedetä tarkasti etukäteen, komponentit ovat
LisätiedotT Refaktorointi
T-76.115 SEPA päiväkirja Refaktorointi Jani Heikkinen Kim Nylund 15. maaliskuuta 2005 1 Sisältö 1 Esittely 3 2 Menetelmä projektikäytössä 3 3 Kokemukset ja muutokset suunnitelmaan 4 3.1 Suunnitteluvaihe...........................
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ätiedotRefaktorointi teknisen velan hallintavälineenä Simo Mäkinen Tietojenkäsittelytieteen laitos Helsingin yliopisto
Refaktorointi teknisen velan hallintavälineenä Simo Mäkinen Tietojenkäsittelytieteen laitos Helsingin yliopisto Mäkinen / Refaktorointi teknisen velan hallintavälineenä, FISMA ry kevätseminaari, 6.4.2016
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ä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ätiedotohjelman arkkitehtuurista.
1 Legacy-järjestelmällä tarkoitetaan (mahdollisesti) vanhaa, olemassa olevaa ja käyttökelpoista ohjelmistoa, joka on toteutettu käyttäen vanhoja menetelmiä ja/tai ohjelmointikieliä, joiden tuntemus yrityksessä
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ätiedotOhjelmistoarkkitehtuurit 2014. Muunneltavuuden hallintaa, Ylläpidosta kevyesti, Vähän rääppeitä aiemmilta kerroilta
Ohjelmistoarkkitehtuurit Muunneltavuuden hallintaa, Ylläpidosta kevyesti, Vähän rääppeitä aiemmilta kerroilta Kevät 2014 Samuel Lahtinen (Johannes Koskinen) http://www.cs.tut.fi/~ohar/ 1 Yleisiä asioita
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ätiedotOhjelmistoarkkitehtuurit Kevät käytäntöjä
Ohjelmistoarkkitehtuurit Kevät 2014 -käytäntöjä Samuel Lahtinen http://www.cs.tut.fi/~ohar/ 8.1.2014 1 Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto
LisätiedotOhjelmistojen laadun parantaminen refaktoroinnilla Simo Mäkinen Tietojenkäsittelytieteen laitos Helsingin yliopisto
Ohjelmistojen laadun parantaminen refaktoroinnilla Simo Mäkinen Tietojenkäsittelytieteen laitos Helsingin yliopisto Mäkinen / Ohjelmistojen laadun parantaminen / Ohjelmistoprosessit ja ohjelmistojen laatu
LisätiedotYlläpito. Ylläpidon lajeja
Ylläpito Kaikki ohjelmistoon sen julkistamisen jälkeen kohdistuvat muutostoimenpiteet jopa 70-80% ohjelmiston elinkaarenaikaisista kehityskustannuksista Ylläpidon lajeja korjaava ylläpito (corrective)
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ätiedotYlläpito. Ylläpito. Ylläpidon lajeja Ohjelmistotuotanto, syksy 1998 Ylläpito
Kaikki ohjelmistoon sen julkistamisen jälkeen kohdistuvat muutostoimenpiteet jopa 70-80% ohjelmiston elinkaarenaikaisista kehityskustannuksista Ylläpidon lajeja korjaava ylläpito (corrective) testausvaiheessa
LisätiedotOhjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1
Ohjelmistoarkkitehtuurit Syksy 2009 Kai Koskimies Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1 Tervetuloa Kuopion yliopisto, Oulun yliopisto (Kajaani), Tampereen yliopisto, Turun yliopisto,
LisätiedotOhjelmistoarkkitehtuurit 2016. Kevät 2016 -käytäntöjä
Ohjelmistoarkkitehtuurit Kevät 2016 -käytäntöjä Samuel Lahtinen http://www.cs.tut.fi/~ohar/ 13.1.2016 1 Tervetuloa Tampereen teknillinen yliopisto, Oulun yliopisto, Turun yliopisto 13.1.2016 2 Tiedonvälitys
LisätiedotSisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki
Sisällys JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta Abstrakti luokka ja metodi Rajapintamäärittely (interface) Eero Hyvönen Tietojenkäsittelytieteen laitos Helsingin yliopisto 13.10.2000 E.
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ätiedotin condition monitoring
Etäteknologioiden automaatiosovellukset Using e-speak e in condition monitoring tutkija professori Hannu Koivisto Sisältö Tausta Globaali kunnonvalvontajärjestelmä E-speak globaalissa kunnonvalvontajärjestelmässä
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ätiedotOsittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit
6. Arkkitehtuurityylit Osittavat arkkitehtuurityylit Kerrosarkkitehtuurit Tietovuoarkkitehtuurit Palveluihin perustuvat arkkitehtuurityylit Asiakas-palvelin arkkitehtuurit Viestinvälitysarkkitehtuurit
LisätiedotOhjelmistoarkkitehtuurit. Kevät
Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto 2 Kurssin tavoitteet
LisätiedotTT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD)
TT00AA12-2016 - Ohjelmoinnin jatko (TT10S1ECD) Ohjelmointikäytännöt 21/3/11 Mikko Vuorinen Metropolia Ammattikorkeakoulu 1 Sisältö 1) Mitä on hyvä koodi? 2) Ohjelmointikäytäntöjen merkitys? 3) Koodin asettelu
LisätiedotApuja ohjelmointiin» Yleisiä virheitä
Apuja ohjelmointiin» Yleisiä virheitä Ohjelmaa kirjoittaessasi saattaa Visual Studio ilmoittaa monenlaisista virheistä "punakynällä". Usein tämä johtuu vain siitä, että virheitä näytetään vaikket olisi
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ätiedotOhjelmistoarkkitehtuurit. Syksy 2010
Ohjelmistoarkkitehtuurit Syksy 2010 Kai Koskimies Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto, Vaasan yliopisto Kurssin tavoitteet Arkkitehtuurin roolin
LisätiedotIntegrointi. Ohjelmistotekniikka kevät 2003
Integrointi Ohjelmistotekniikka kevät 2003 ERP (Toiminnanohjausjärjestelmä) Myynti Henkilöstö, palkanlaskenta Kirjanpito Myynti Myyjät Extranet Tietovarasto Laskutus, reskontrat Asiakas ERP Asiakasrekisteri
LisätiedotLiite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu
Liite 1: skenaariot ja PoC tulokset 1. Palvelun kehittäjän näkökulma Tilanne Vaatimus Ongelma jos vaatimus ei toteudu Palvelun uusi versio on Palveluiden kehittäminen voitava asentaa tuotantoon vaikeutuu
LisätiedotJärjestelmäarkkitehtuuri (TK081702)
Järjestelmäarkkitehtuuri (TK081702) yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,
LisätiedotJWT 2016 luento 11. to 21.4.2016 klo 14-15. Aulikki Hyrskykari. PinniB 1097. Aulikki Hyrskykari
JWT 2016 luento 11 to 21.4.2016 klo 14-15 Aulikki Hyrskykari PinniB 1097 1 Viime luennolla o AJAX ja JSON, harjoitustyön tehtävänanto, vierailuluento avoimesta datasta Tänään o APIt rajapinnoista yleisesti
Lisätiedot13/20: Kierrätys kannattaa koodaamisessakin
Ohjelmointi 1 / syksy 2007 13/20: Kierrätys kannattaa koodaamisessakin Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy
LisätiedotSOA SIG SOA Tuotetoimittajan näkökulma
SOA SIG SOA Tuotetoimittajan näkökulma 12.11.2007 Kimmo Kaskikallio IT Architect Sisältö IBM SOA Palveluiden elinkaarimalli IBM Tuotteet elinkaarimallin tukena Palvelukeskeinen arkkitehtuuri (SOA) Eri
LisätiedotTIE-20200 Ohjelmistojen suunnittelu
TIE-20200 Ohjelmistojen suunnittelu Luento 14: Työkaluja Marko Leppänen, Samuel Lahtinen TIE-20200 Samuel Lahtinen 1 Ajankohtaista Harjoitustyön dedis 7.12. klo 06:00 Demoilusessiot samalla/seuraavalla
LisätiedotTIE-20200 Ohjelmistojen suunnittelu
TIE-20200 Ohjelmistojen suunnittelu Luento 1: Virtuaalifunktiot, Template method 1 Seuraavaksi tarjolla: Otekn-asiaa vähän pintaa syvemmältä Virtuaalifunktiot ja erikoistaminen, olioiden kopiointi ja elinaika
LisätiedotInterfacing Product Data Management System
Interfacing Product Data Management System Tekijä: Työn valvoja: Mats Kuivalainen Timo Korhonen Esitelmän sisältö Työn suorituspaikka - Ideal Product Data Oy Käsitteitä Työn tavoitteet Työn tulokset 1/5
LisätiedotMATINE-projekti 2500M-0069: Tietotekniset harhautukset (ICT Illusions)
MATINE-projekti 2500M-0069: Tietotekniset harhautukset (ICT Illusions) Sampsa Rauti Turun yliopisto, Tulevaisuuden teknologioiden laitos MATINE-tutkimusseminaari, 16.11.2017 Esityksen sisältö Tiimi Taustaa
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ätiedotTIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö
TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö Tekijät: Eemeli Honkonen Joni Metsälä Työ palautettu: SISÄLLYSLUETTELO: 1 SEMINAARITYÖN KUVAUS... 3 2 TIETOKANTA... 3 2.1 MITÄ TIETOKANNAT SITTEN OVAT?... 3
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ätiedot7. Product-line architectures
7. Product-line architectures 7.1 Introduction 7.2 Product-line basics 7.3 Layered style for product-lines 7.4 Variability management 7.5 Benefits and problems with product-lines 1 Short history of software
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ä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ätiedotKADA (Drupal 7) migraatio uuteen (versioon) webiin
KADA (Drupal 7) migraatio uuteen (versioon) webiin Hallittu elinkaaren siirto suoran migraation sijaan Mikko Malmgren & Antti Tuppurainen Mikko Malmgren / Kuntaliitto Antti Tuppurainen / Industry62 @mikko_malmgren
Lisätiedot3. Komponentit ja rajapinnat
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ätiedotJärjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat
Järjestelmäarkkitehtuuri (TK081702) SOA yleistyvät verkkopalveluissa Youtube Google... Avaavat pääsyn verkkopalvelun sisältöön. Rajapintojen tarjoamia tietolähteitä yhdistelemällä luodaan uusia palveluja,
LisätiedotOsio 4: Tietovirrat. Properties- eli ominaisuustiedostot Logger: lokitietojen käsittely
Properties- eli ominaisuustiedostot Logger: lokitietojen käsittely 1 Ominaisuudet Kun tutkimme työasemapohjaisia sovelluksiamme, tarvitaan joskus tietoa: mikä on käyttöjärjestelmä mikä on käytössä oleva
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ätiedotCOTOOL dokumentaatio SEPA: Refaktorointi
Table of Contents Refaktorointi................................................................................ 1 1 Tehtävänanto.............................................................................
Lisätiedot9. Periytyminen Javassa 9.1
9. Periytyminen Javassa 9.1 Sisällys Periytymismekanismi Java-kielessä. Piirteiden näkyvyys periytymisessä. Ilmentymämetodien korvaaminen. Luokkametodien peittäminen. Super-attribuutti. Override-annotaatio.
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ätiedotJärjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri
Järjestelmäarkkitehtuuri (TK081702) ja Järjestelmäarkkitehtuuri Sovellukset ovat olemassa Järjestelmien uudistaminen vie yleensä arvioitua enemmän resursseja ja kestää arvioitua kauemmin Migration (Migraatio
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ätiedotOhjelmointi 1 / syksy /20: IDE
Ohjelmointi 1 / syksy 2007 10/20: IDE Paavo Nieminen nieminen@jyu.fi Tietotekniikan laitos Informaatioteknologian tiedekunta Jyväskylän yliopisto Ohjelmointi 1 / syksy 2007 p.1/8 Tämän luennon rakenne
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ätiedotOhjelmistoarkkitehtuurit Kevät 2016 Johdantoa
Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa Samuel Lahtinen http://www.cs.tut.fi/~ohar/ 8.1.2014 1 1 Johdanto 1.1 Mikä on ohjelmistoarkkitehtuuri? 1.2 Ohjelmistoarkkitehtuuri ja laatuvaatimukset 1.3
LisätiedotMobiilimaailma murroksessa 2011 Tommi Teräsvirta, Tieturi
Business is evolving, you should too. MeeGo ulkona vai myöhässä? Mobiilimaailma murroksessa 2011 Tommi Teräsvirta, Tieturi Helsinki, Tampere, Turku, Stockholm, Göteborg www.tieturi.fi MeeGo YALMP (Yet
LisätiedotBlueJ ohjelman pitäisi löytyä Development valikon alta mikroluokkien koneista. Muissa koneissa BlueJ voi löytyä esim. omana ikonina työpöydältä
Pekka Ryhänen & Erkki Pesonen 2002 BlueJ:n käyttö Nämä ohjeet on tarkoitettu tkt-laitoksen mikroluokan koneilla tapahtuvaa käyttöä varten. Samat asiat pätevät myös muissa luokissa ja kotikäytössä, joskin
LisätiedotKehyspohjainen ohjelmistokehitys
Kehyspohjainen ohjelmistokehitys Sovellusalueen käsitemalli, piirremalli Yhteiset vaatimukset Kehyksen suunnittelu Suunnittelumallit Vaatimusmäärittely Muunneltavuusvaatimukset Kehysarkkitehtuuri Erikoistamisrajapinta
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ä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ätiedotJohdantoluento. Ohjelmien ylläpito
Johdantoluento Ylläpito-termin termin määrittely Ylläpito ohjelmistotuotannon vaiheena Evoluutio-termin määrittely Muita kurssin aiheeseen liittyviä termejä TTY Ohjelmistotekniikka 1 Ohjelmien ylläpito
LisätiedotTest-Driven Development
Test-Driven Development Ohjelmistotuotanto syksy 2006 Jyväskylän yliopisto Test-Driven Development Testilähtöinen ohjelmistojen kehitystapa. Tehdään ensin testi, sitten vasta koodi. Tarkoituksena ei ole
LisätiedotTest-Driven Development
Test-Driven Development Syksy 2006 Jyväskylän yliopisto Test-Driven Development Testilähtöinen ohjelmistojen kehitystapa. Tehdään ensin testi, sitten vasta koodi. Tarkoituksena ei ole keksiä kaikkia mahdollisia
LisätiedotOhjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja
582104 Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja 1 Arkkitehtuurisuunnittelu Ohjelmistoarkkitehtuurin määritelmä & arkkitehtuurisuunnittelun lähtökohta ja tavoitteet Kerrosarkkitehtuuri
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ätiedotRajapinta (interface)
1 Rajapinta (interface) Mikä rajapinta on? Rajapinta ja siitä toteutettu luokka Monimuotoisuus ja dynaaminen sidonta Rajapinta vs periytyminen 1 Mikä rajapinta on? Rajapintoja käytetään, kun halutaan määritellä
LisätiedotJärjestelmäarkkitehtuuri (TK081702) Web Services. Web Services
Järjestelmäarkkitehtuuri (TK081702) Standardoidutu tapa integroida sovelluksia Internetin kautta avointen protokollien ja rajapintojen avulla. tekniikka mahdollista ITjärjestelmien liittämiseen yrityskumppaneiden
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ätiedotUudelleenkäytön jako kahteen
Uudelleenkäyttö Yleistä On pyritty pääsemään vakiokomponenttien käyttöön Kuitenkin vakiokomponentit yleistyneet vain rajallisilla osa-alueilla (esim. windows-käyttöliittymä) On arvioitu, että 60-80% ohjelmistosta
LisätiedotOhjelmistojen mallintamisen ja tietokantojen perusteiden yhteys
Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys Tällä kurssilla on tutustuttu ohjelmistojen mallintamiseen oliomenetelmiä ja UML:ää käyttäen Samaan aikaan järjestetyllä kurssilla on käsitelty
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ätiedotHSMT J2EE & EJB & SOAP &...
HSMT J2EE & EJB & SOAP &... Ville Leppänen HSMT, c Ville Leppänen, IT, Turun yliopisto, 2011 p.1/15 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista
LisätiedotTietojärjestelmäarkkitehtuurit
Tietojärjestelmäarkkitehtuurit ITK130 Johdatus ohjelmistotekniikkaan Syksy 2003 Sami Kollanus 1 Aluksi Tietojärjestelmäarkkitehtuurit vs. ohjelmistoarkkitehtuurit Pohjana Tietojärjestelmäarkkitehtuurit
LisätiedotJypelin käyttöohjeet» Ruutukentän luominen
Jypelin käyttöohjeet» Ruutukentän luominen Pelissä kentän (Level) voi luoda tekstitiedostoon "piirretyn" mallin mukaisesti. Tällöin puhutaan, että tehdään ns. ruutukenttä, sillä tekstitiedostossa jokainen
LisätiedotTech Conference 28.-29.5.2015. Visual Studio 2015, C#6,.NET4.6. Heikki Raatikainen. #TechConfFI
Tech Conference 28.-29.5.2015 Visual Studio 2015, C#6,.NET4.6 Heikki Raatikainen #TechConfFI Yleistä Avoimuus Open Source ja tuki yleisesti käytetyille ei-ms työkaluille Kaikki alustat tuettuna:.net 5
LisätiedotOhjelmistoarkkitehtuurit kevät
Ohjelmistoarkkitehtuurit Kevät 2011-2012 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 3. Komponentit ja rajapinnat 3.1 Komponenttien idea: ohjelmistotuotannon rationalisointi 3.2 Mikä on ohjelmistokomponentti?
LisätiedotPedacode Pikaopas. Java-kehitysympäristön pystyttäminen
Pedacode Pikaopas Java-kehitysympäristön pystyttäminen Pikaoppaan sisältö Pikaoppaassa kuvataan, miten Windowstyöasemalle asennetaan Java-ohjelmoinnissa tarvittavat työkalut, minkälaisia konfigurointeja
LisätiedotVarmennepalvelu - testipenkki. Kansallisen tulorekisterin perustamishanke
Varmennepalvelu - testipenkki Kansallisen tulorekisterin perustamishanke 2 (9) SISÄLLYS 1 Johdanto... 3 2 Testimateriaali... 3 2.1 Testipenkin palveluissa käytettävät parametrit... 3 2.2 Testipenkin yhteysosoite...
LisätiedotOhjelmistojen suunnittelu
Ohjelmistojen suunnittelu 581259 Ohjelmistotuotanto 154 Ohjelmistojen suunnittelu Software design is a creative activity in which you identify software components and their relationships, based on a customer
LisätiedotTIE-20200 Samuel Lahtinen. Lyhyt UML-opas. UML -pikaesittely
Lyhyt UML-opas UML -pikaesittely UML, Unified Modeling Language Standardoitu, yleiskäyttöinen mallinnuskieli, jota ylläpitää/hallitsee (Object Management Group) OMG Historiaa: 90-luvulla oli paljon kilpailevia
LisätiedotTIE Principles of Programming Languages CEYLON
TIE-20306 Principles of Programming Languages CEYLON SISÄLLYSLUETTELO 1. YLEISTIETOA KIELESTÄ JA SEN KEHITTÄMISESTÄ... 1 2. CEYLONIN OMINAISUUKSIA... 2 2.1 Modulaarisuus... 2 2.2 Tyypit... 2 2.3 Muita
LisätiedotArkkitehtuuritietoisku. eli mitä aina olet halunnut tietää arkkitehtuureista, muttet ole uskaltanut kysyä
Arkkitehtuuritietoisku eli mitä aina olet halunnut tietää arkkitehtuureista, muttet ole uskaltanut kysyä Esikysymys Kuinka moni aikoo suunnitella projektityönsä arkkitehtuurin? Onko tämä arkkitehtuuria?
LisätiedotSisäänrakennettu tietosuoja ja ohjelmistokehitys
Sisäänrakennettu tietosuoja ja ohjelmistokehitys Petri Strandén 14. kesäkuuta, 2018 Petri Strandén Manager Cyber Security Services Application Technologies Petri.stranden@kpmg.fi Petri vastaa KPMG:n Technology
LisätiedotKäytännön haasteita ja ratkaisuja integraation toteutuksessa. Jukka Jääheimo Teknologiajohtaja Solita Oy
Käytännön haasteita ja ratkaisuja integraation toteutuksessa Jukka Jääheimo Teknologiajohtaja Solita Oy 13.03.2008 Sisältö 2 Alustus Integraation haasteet Integraatioarkkitehtuuri Hyvän integraatioarkkitehtuurin
LisätiedotDelegaatit ja tapahtumakäsittelijät
14 Delegaatit ja tapahtumakäsittelijät Toinen käyttökelpoinen keksintö C#-kielessä ovat delegaatit. Periaatteessa ne palvelevat samaa tarkoitusta kuin C++:n funktio-osoittimet. Delegaatit ovat kuitenkin
LisätiedotCase TUHTI. Projektin tunnuslukuja. ! Suuri perusjärjestelmäuudistus! Työt alkoivat kesällä 1999. ! Java luokkia n. 5000
Case TUHTI 17.12.2002 1 TietoEnator 2002 Projektin tunnuslukuja! Suuri perusjärjestelmäuudistus! Työt alkoivat kesällä 1999! Otettu tuotantokäyttöön syksyllä 2001! Proof of Concept (5 henkilöä 4 kk) ->
LisätiedotRakentamisen 3D-mallit hyötykäyttöön
Rakentamisen 3D-mallit hyötykäyttöön 1 BIM mallien tutkimuksen suunnat JAO, Jyväskylä, 22.05.2013 Prof. Jarmo Laitinen, TTY rakentamisen tietotekniikka Jarmo Laitinen 23.5.2013 Jarmo Laitinen 23.5.2013
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ätiedotTIE-20200 Ohjelmistojen suunnittelu. Luento 8..9: moniperintä
TIE-20200 Ohjelmistojen suunnittelu Luento 8..9: moniperintä 1 Ajankohtaista Harjoitustyön suunnittelusessiot pidetty, työt jatkuvat, välivaiheen esittely seuraavana Viimeinen viikkoharjoituskerta, palataan
LisätiedotOhjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit
Ohjelmiston testaus ja laatu Ohjelmistotekniikka elinkaarimallit Vesiputousmalli - 1 Esitutkimus Määrittely mikä on ongelma, onko valmista ratkaisua, kustannukset, reunaehdot millainen järjestelmä täyttää
LisätiedotHarjoitus 7. 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:
Harjoitus 7 1. Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti: class Lintu //Kentät private int _siivenpituus; protected double _aivojenkoko; private bool _osaakolentaa; //Ominaisuudet public int
LisätiedotJUnit ja EasyMock (TilaustenKäsittely)
OHJELMISTOJEN TESTAUS JA HALLINTA Syksy 2015 / Auvo Häkkinen JUnit ja EasyMock (TilaustenKäsittely) Tehtävässä tarvittava koodi löytyy osoitteella http://users.metropolia.fi/~hakka/oth/mockesimerkki.zip
LisätiedotOhjelmointi 2 / 2010 Välikoe / 26.3
Ohjelmointi 2 / 2010 Välikoe / 26.3 Välikoe / 26.3 Vastaa neljään (4) tehtävään ja halutessa bonustehtäviin B1 ja/tai B2, (tuovat lisäpisteitä). Bonustehtävät saa tehdä vaikkei olisi tehnyt siihen tehtävään
LisätiedotTekninen suunnitelma - StatbeatMOBILE
Tekninen suunnitelma - StatbeatMOBILE Versio Päivämäärä Henkilö Kuvaus 1.0 13.12.2013 Pöyry Alustava rakenne ja sisältö 1.1 22.12.2013 Pöyry Lisätty tekstiä ilmoituksiin, turvallisuuteen ja sisäiseen API:in
Lisätiedot