Ohjelmistoarkkitehtuurit Kevät 2014

Koko: px
Aloita esitys sivulta:

Download "Ohjelmistoarkkitehtuurit Kevät 2014"

Transkriptio

1 Ohjelmistoarkkitehtuurit Kevät 2014 Samuel Lahtinen (Johannes Koskinen)

2 5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Esimerkki: Rekursiokooste Antisuunnittelumallit Suunnittelumallit ja UML Mallikielet Suunnittelumallit eivät ole... Yhteenveto

3 Suunnittelumallin käsite: tausta Cristopher Alexander et al.: A Pattern Language, 1977 Cristopher Alexander: The Timeless Way of Building, 1979 Maailma koostuu toistuvista tiettyjen mallien ilmentymistä Esimerkki: Jokainen maanviljelijä osaa rakentaa ladon - miksi? Malli (pattern) on yleistä suunnitteluosaamista, joka olisi saatettava kaikkien tarvitsijoiden ulottuville Alexander: mallien käyttö johtaa hyvään laatuun Paljon käytetty eri muodoissa insinöörialoilla Erityisen hyödyllinen ajatus ohjelmistotekniikassa

4 Esimerkki: Ikkunat ja ovet hirsitalossa hirret painuvat kasaan Ongelma: ikkunat ja ovet ovat kiinteitä, vaikka hirsiseinä liikkuu ja painuu kasaan. Ratkaisu: ikkunoiden ja ovien karmeja ei kiinnitetä suoraan seinään, vaan "karaan", joka liikkuu vapaasti hirsiin tehdyssä urassa

5 Tukikaari (Flying buttress)

6 Mikä on suunnittelumalli? Suunnittelumalli Yleinen ratkaisu usein esiintyvään ohjelmistojen arkkitehtuuri- tai suunnitteluongelmaan tietyssä yhteydessä

7 Selitystä Yleinen ratkaisu... ei liity tiettyyn kieleen tai teknologiaan, kuvataan yleisellä tavalla... usein esiintyvään... täytyy olla käytännön validoima (esim. GoF: 3 esimerkkiä)... arkkitehtuuri- tai suunnitteluongelmaan... sovelletaan ohjelmistotekniikassa arkkitehtuurin ja yksityiskohtaisen suunnittelun tasolla... tietyssä yhteydessä. ongelma esiintyy yhteydessä, josta seuraa erilaisia vaatimuksia ja voimia

8 Suunnittelumallien hyötyjä Suunnittelumallit... tuovat piilossa olevaa suunnittelutietämystä kaikkien saataville; auttavat järjestelmän dokumentoinnissa; antavat uuden korkeamman tason toteutusvälineen; toimivat arkkitehtuurin rakennuspalikoina; antavat suunnittelijoille yhteisen sanaston

9 Suunnittelumallin kuvaus Keskeiset osat: Nimi Konteksti Ongelma Ratkaisu Seuraukset Kuvaava ytimekäs nimi, tulee osaksi yhteistä sanastoa Lähtötilanne Ongelman ja siihen vaikuttavien tekijöiden kuvaus, oletukset, esimerkki Luokkien ja olioiden organisointi ongelman ratkaisemiseksi (esim. käyttäen UML:ää) Lopputilanne, ratkaisun edut ja haitat

10 GoF:in kuvausformaatti "Gang of Four kirja, GoF: Gamma E., Helm R., Johnson R., Vlissides J.: Design Patterns - Elements of Reusable Object-Oriented Software. Addison-Wesley Name (and category) Intent Also known as Motivation Applicability Structure Participants Collaborations Consequences Implementation Sample code Known uses Related patterns

11 Esimerkki suunnittelumallista: Rekursiokooste Ongelma: Olioita käyttävä komponentti tee joku operaatio lehtiolioille

12 Rekursiokooste (Composite) suunnittelumalli Nimi: Rekursiokooste Konteksti: Hierarkkinen oliokokoelma, jonka (lehti)olioille halutaan tehdä jokin operaatio. Ongelma: Kuinka hallita hierarkkisesti järjestettyä oliokokoelmaa niin, että kokoelman käyttäjän ei tarvitse tuntea rakenteen organisointitapaa? Ratkaisu: Käyttäjä Item operation() * children Leaf operation() Composite operation() For all children c: c.operation()

13 Rekursiokooste (jatkuu) Seuraukset: Hierarkiarakenne ei näy käyttäjän koodissa Käyttäjän koodi yksinkertaistuu Rakenteeseen on helppo lisätä uusia kooste- ja lehtiluokkia (ei näy käyttäjälle) Pieni tehokkuusrasite kutsun siirtämisen takia (ei mahdollista rajoittaa lehtiluokkien tyyppiä tietyssä haarassa/vaiheessa)

14 Esimerkki soveltamisesta SourceManager <<interface>> Source delete() print() * children File delete() print() Folder delete() print() add(source) For all children c: c.delete(); Delete folder

15 Kysyttävää?

16 Antisuunnittelumallit Ongelma Suunnittelumalli Hyvä ratkaisu Seuraukset Antisuunnittelumalli Huono ratkaisu Oireet Muokkaus Antisuunnittelumalli = huono ratkaisu + hyvä ratkaisu Suunnittelumalli = ongelma + ratkaisu Brown W.J. et al.: Antipatterns - Refactoring Software, Architectures, and Projects in Crisis. Wiley

17 Dokumentoituja antisuunnittelumalleja The Blob Lava flow Golden Hammer Spaghetti Code Cut-and-Paste Programming

18 Antisuunnittelumallien oireita Huono ylläpidettävyys Huono uudelleenkäytettävyys Huono laajennettavuus Vaikeasti ymmärrettävä Tehottomuus

19 Mitä huonoja ratkaisutapoja olet tunnistanut oliojärjestelmissä?

20 Suunnittelumallit ja UML: Kollaboraatiosymboli Item Composite SourceManager Source delete() print() Leaf * children Composite File delete() print() Folder delete() print() add(source) For all children c: c.delete(); Delete folder

21 Esimerkki EventSource register(statemachine) * * informs StateMachine run(state) handle(event) 1 Singleton State Observer 1 Event source(): Object current.exit(); current = current.transit(e); current.entry(); uses 0..1 current State transit(event): State entry() exit() Event1 source(): Object Event2 source(): Object StateA transit(event): State entry() exit() StateB transit(event): State entry() exit()

22 Suunnittelumallit ja UML: Stereotyypit SourceManager <<Composite_Item>> Source delete() print() * children <<Composite_Leaf>> File delete() print() <<Composite_Composite>> Folder delete() print() add(source) For all children c: c.delete(); Delete folder

23 Suunnittelumallit eivät ole Eivät ole vain GOF-patternit, vaan paljon muutakin. Ei vain yksinkertaisia muutaman olion vuorovaikutusrakenteita yleinen lääke ohjelmiston laadun parantamiseen; ongelmattomia: arkkitehtuurin monimutkaistuminen mahdollinen ongelman yliratkaisu tehokkuushäviö: runsaasti dynaamista sidontaa ja kutsun siirtämistä olion identiteetti hämärtyy: olioskitsofrenia tarvitsevat hyvän dokumentoinnin järjestelmässä Perinteiset (GOF) suunnittelumallit usein toteuttajan ja alijärjestelmän suunnittelijan työkaluja Anti-Arkkitehtuuridokumentaatio: ylimalkainen kertomus järjestelmän toiminnasta ja iso lista suunnittelumalleja, joilla luvataan järjestelmän täyttävän kaikki mieleen tulevat laatuominaisuudet

24 Yhteenvetoa Suunnittelumallit antavat hyväksi havaittuja ratkaisuja yleisiin suunnitteluongelmiin Käytä suunnittelumallia vasta kun ongelma on selvästi ymmärretty Suunnittelumallit ovat kokemusperäistä tietoa, eivät innovaatioita Antisuunnittelumallit auttavat tunnistamaan ongelmakohtia

25 Kysyttävää?

26 Komponenttien vuorovaikutus Roolirajapinnat Välittäjät Fasaadit Kutsun siirtäminen Edustajat Takaisinkutsut Tapahtumat Viestit Sovittimet Tehtaat 26

27 Toteutusriippuvuuksien poistaminen rajapinnoilla A B A IB mitä A ei tunne B miten 27

28 Rooliperustaiset rajapinnat Client1 Services Server Client1 käyttää Server:iä eri roolissa ja siksi eri palveluja kuin Client2 Client2 Client1 Role1 Server Client2 Role2 28

29 Esimerkki VisualComponent Button EventSource 29

30 Hienojakoiset roolirajapinnat Asiakkaat X Y Z Roolit A B C D Palvelun tarjoajat P:n perinteinen rajapinta P Q Q:n perinteinen rajapinta 30

31 Komponenttien vuorovaikutuksen hallinta Joukko keskenään kommunikoivia komponentteja Ongelmia: komponenttien väliset riippuvuudet mutkikkaita ja vaikeita hallita jos jokin yhteistoiminta halutaan muuttaa, joudutaan jokaista osallistujaa muuttamaan komponentteja ei voi käyttää toisessa yhteydessä 31

32 Esimerkki ListBox TextField Button 32

33 Esimerkki Ilmanlaadun hallinta avaa ikkuna Ikkunoiden hallinta sulje ilmastointi Ilmastoinnin hallinta 33

34 Riippuvuuksien keskittäminen: Välittäjä (Mediator) Keskitetään vuorovaikutuksen kontrolli rajoittamalla komponenttien vastuut ja ottamalla käyttöön uusi komponentti, jonka vastuulla on vuorovaikutuksen hallinta Etuja: vuorovaikutus omana kokonaisuutena (välittäjä), voidaan muuttaa tai räätälöidä koskematta komponentteihin tekee komponentit riippumattomiksi toisistaan yksinkertaistaa kommunikaatiota (yksi-moneen, ei moni-moneen) Ongelma: keskitetty kontrolli voi kasvaa itsessään monimutkaiseksi 34

35 Esimerkki Coordinator widgetchange(widget) ListBox ListBoxI getselected(): str Dialog Coordinator Välittäjä TextField TextFieldI settext(str) Widget changed() Button ButtonI enable() 35

36 Tyypillinen vuorovaikutus ListBox DialogCoordinator TextField Button widgetchange getselected settext enable 36

37 Esimerkki Ilmanlaadun hallinta avaa ikkuna sulje ilmastointi Ikkunoiden hallinta Ilmastoinnin hallinta 37

38 Kysyttävää? 38

39 Kutsun siirtäminen (delegointi) Yleinen perusmekanismi monessa standardiratkaisussa B saa palvelupyynnön: palvelun varsinainen suorittaja Bimp opimp() imp op op() B op op() B Voi olla erilaisia syitä: - halutaan tehdä oheistoimintaa, joka ei näy palvelun pyytäjälle - halutaan pystyä helposti vaihtamaan toteutus dynaamisesti - halutaan muuttaa kutsumuotoa - halutaan piilottaa varsinainen suorittaja imp.opimp(); 39

40 Kutsun siirtäminen: esimerkki Chargable discount(int): int CustomerSupport discount(int): int Account Manager Customer KeyCustomer Support 40

41 Riippuvuuksien kuristaminen: Fasadi (Facade) Fasaadi alijärjestelmä alijärjestelmä 41

42 Fasadi (kulissi/julkisivu) suunnittelumalli Käytetään antamaan yksinkertainen, useimmille käyttäjille riittävä oletusliittymä monimutkaiseen alijärjestelmään Fasadi ei kuitenkaan täysin piilota alijärjestelmän komponentteja suoralta käytöltä Voidaan käyttää esimerkiksi kerrosarkkitehtuurissa antamaan kullekin kerrokselle yksinkertainen sisääntulokohta (ja rajapinta) Vrt. Välittäjä: yksisuuntainen palvelu, tyypillisesti fasaadi vain siirtää kutsun oikealle komponentille (tai mahdollisesti useille komponenteille) Fasadin käyttöä voidaan edelleen kaventaa roolirajapinnoilla 42

43 Esimerkki StudyRegister registerforsemester getstudentinfo StudentFacade StudentRegister regstudentforcourse unregstudentforcourse PaymentSystem 43

44 Komponenttiriippuvuuksien poistaminen edustajalla (Proxy) Edustaja: komponentti, joka edustaa toista komponenttia jossain yhteydessä ilman, että komponentin asiakkaat tietävät tätä. Tyypillisesti edustaja tekee palvelupyynnön yhteydessä jotain oheistoimintaa. Asiakas op op Palvelun Edustaja tarjoaja 44

45 Sovelluksia hajautetut järjestelmät (esim. EJB) viivästetty lataaminen (esim. oliokannat) älykkäät osoittimet... 45

46 Edustaja (Proxy) suunnittelumalli Client Services request()... actual.request() Proxy request() actual Server 46

47 Esimerkki: viivästetty lataaminen Navigator Map getname() getroute(from,to) varsinainen getroute palvelu return mapname; MapProxy CityMap if not loaded then map = loadfromfile(); loaded = true end; map->getroute() getname getroute getname getroute 47

48 Kysyttävää? 48

49 Riippuvuuksien poistaminen takaisinkutsuilla Takaisinkutsu Palvelun tarjoajalta sen pyytäjälle kesken palvelun tuleva kutsu. Tekniikka, jonka avulla palvelun pyytäjä voi saada kontrollin kesken palvelun suorituksen. Tavallisesti palvelu kuuluu johonkin yleiskäyttöiseen kirjastoon, joka ei saa tulla riippuvaksi kirjastoa käyttävistä sovelluksista. Takaisinkutsu mahdollistaa sovelluskohtaisen räätälöinnin yleiskäyttöisille palveluille ilman, että ne tulevat riippuviksi sovelluksista. 49

50 Takaisinkutsu (Callback) kirjasto sekvenssikaaviona: : Kirjasto : Sovellus palvelun kutsu palvelun kutsu paluu takaisinkutsu takaisinkutsu paluu palvelun paluu sovellus takaisinkutsu 50

51 Takaisinkutsurajapinta EngineUser warn(str) Takaisinkutsurajapinta run() Engine Yleiskäyttöinen if (oilpressure<limit) { user.warn();... myeng = new Engine(); myeng.setuser(this); myeng.start(); PowerSource start() stop() setuser(engineuser) Car setup() warn(str)... Sovelluskohtainen log.output("oil pressure low"); myeng.stop(); 51

52 Käytetään poikkeuksia? Voidaanko poikkeuksilla saada periaatteessa aikaan sama kuin takaisinkutsuilla? A Ei koskaan B Joskus C Aina 52

53 Poikkeuksilla Engine run() if (oilpressure<limit) {... throw new Oilpressure(); }... PowerSource start() throws Oilpressure stop() setuser(engineuser) setup():... myeng = new Engine(); myeng.setuser(this); try { myeng.start(); } catch (Oilpressure op) {warn("...");} Erot: Edut: Haitat: - ei takaisinkutsurajapintaa - käyttävän yksikön (Car) tulee varautua poikkeukseen - yksinkertaisempi - kirjastoyksikön ei tarvitse tietää mitään käyttävän yksikön operaatioista (edes takaisinkutsurajapintaa) - kirjastoyksikkö ei voi jatkaa tapahtuman käsittelyn jälkeen (tässä tosin ei ilmeisesti tarvitsekaan) -ohjelman suorituksen seuraus, poikkeusten mahdollinen väärinkäyttö normaalitilanteissakin(goto) Yleiskäyttöinen Car setup() warn(str)... Sovelluskohtainen log.output(str+": Oil pressure low"); myeng.stop(); 53

54 Kysyttävää? 54

55 Riippuvuuksien vähentäminen tapahtumien avulla Tapahtuma on ohjelman ajoaikainen tietoalkio, jonka synnyttää jokin komponentti, jonka syntymiseen reagoi yksi tai useampi komponentti ja joka häviää sen jälkeen kun ei ole olemassa enää komponenttia, jonka tulisi reagoida sen syntymiseen. Tapahtuman synnyttäjä ei tunne tapahtuman syntymään reagoivia yksiköitä 55

56 Perinteinen kutsu vs. tapahtuma Palvelun kutsuja Tapahtuman synnyttäjä Palvelun tarjoaja Tapahtuma Tapahtumaan reagoivat 56

57 Tapahtumat käyttöliittymissä GUI Käyttäjän komennot Tilamuutokset Sovelluslogiikka 57

58 Synkroninen takaisinkutsuihin perustuva tapahtumankäsittely rekisteröinti Synkroninen = tapahtuman aiheuttaja odottaa tapahtuman käsittelyä ennen kuin jatkaa. Reagoivat yksiköt Tapahtuman aiheuttaja ilmoitus tapahtumasta (takaisinkutsu) 58

59 Tarkkailija (Observer) suunnittelumalli Observer update(event) SourceComp obs src ObserverComp Source register(observer) unregister(observer) 59

60 Tapahtumien käsittely Javassa: Esimerkki ActionListener actionperformed(actionevent) JMenuItem obs src AppComp AbstractButton addactionlistener(actionlistener) 60

61 Viestipohjainen kommunikointi receive(message m) Viesti Komponentti 1 Komponentti 2 Komponentit toteuttavat geneerisen viestin vastaanottorajapinnan (ja käyttävät sitä suoraan tai viestinvälittäjän kautta) Komponentit kommunikoivat keskenään viestejä lähettämällä Viestien välittämisestä huolehtii usein erityinen komponentti (message dispatcher) 61

62 Rajapinnat vs. viestit Komponentit, Asiakas-palvelin, Web palvelut (SOA), C++, Java func A(X ) Rajapinta toteuttaa Palvelun tarjoaja Palvelun pyytäjä Viestinvälitysarkkitehtuurit, palveluväylät (ESB), Smalltalk Viesti ACTION = A PAR1 = X Viestin välittäjä lukee ja toteuttaa Palvelun tarjoaja Rajapinta kertoo mitä tehdään ja millä tiedolla, viesti voi kertoa mitä tahansa (mitä tehdään, kuka tekee, millä tiedolla). 62

63 Rajapintariippuvuuksien poistaminen sovittimilla Rajapinnan A mukainen palvelupyyntö Sovitin Rajapinnan B mukainen Komponentti 1 palvelupyyntö Komponentti 2 Sovitin: palvelun pyytäjän ja tarjoajan välillä oleva ohjelmayksikkö, joka tekee palvelun pyytäjän riippumattomaksi palvelun tarjoajan rajapinnasta. 63

64 Sovitin (Adapter) suunnittelumalli Client AbstractServices request() ConcreteServices concrequest()... adaptee.concrequest() Adapter request() adaptee Server 64

65 Sovitin ja tapahtumat Sovittimien käyttö riippumattomien komponenttien tapahtumapohjaisessa kommunikoinnissa rekisteröinti ilmoita tapahtumasta palvelukutsu Komponentti A Sovitin Komponentti B Ohjelmistoarkkitehtuurit

66 Luontiriippuvuuksien vähentäminen tehtaalla Ongelma: Miten ohjelmistoalusta tai yleiskäyttöiset komponentit voivat luoda sovelluskohtaisia olioita/komponenttiilmentymiä tulematta riippuvaisiksi sovelluskohtaisista luokista/komponenteista? Ohjelmistoarkkitehtuurit

67 Luontiriippuvuuksien vähentäminen tehtaalla FactoryRegistry register(factory) AppInit Factory create(): Product AppFactory <<create>> (alustus) Platform <<create>> (käyttö) Product service AppProduct Ohjelmistoarkkitehtuurit

68 Yksinkertainen tehdas: Tehdasmetodi (Factory Method) suunnittelumalli Product Creator factorymethod anoperation product = factorymethod();... AppProduct create ConcCreator factorymethod return new AppProduct(); Ohjelmistoarkkitehtuurit

69 Esimerkki Document open() close() use DocManager createdocument() newdocument() opendocument() doc = createdocument(); docs.add(doc); doc.open(); MyDocument open() close() create MyDocManager createdocument() return new MyDocument; Ohjelmistoarkkitehtuurit

70 Ongelma: Miten varmistaa yhdenmukaiset oliot? Alusta TAI MUTTA EI: Ohjelmistoarkkitehtuurit

71 Ratkaisu: yksi tehdasolio luo kaikki oliot yhdenmukaisesti ShapeFac tehdasluokka TwoDimFac ilmentymä tehdasolio käyttää Alusta luo ilmentymä ThreeDimFac factory class Ohjelmistoarkkitehtuurit

72 Abstrakti tehdas suunnittelumalli AbsFactory createproducta(): ProductA createproductb(): ProductB ProductA2 opera ProductA opera ProductA1 opera Alusta ProductB operb ProductB2 ProductB1 operb operb Factory1 <<create>> Factory2 <<create>> Ohjelmistoarkkitehtuurit

73 Abstrakti tehdas (Abstract Factory) suunnittelumalli: Esimerkki Sovellusalusta AbsFactory createbutton(): Button createmenu(): Menu WinFactory Button Menu <<create>> WinButton WinMenu Ohjelmistoarkkitehtuurit

74 Yhteenvetoa Roolirajapinnoilla täsmällisemmin tyypitetty arkkitehtuuri Välittäjän käyttö keskitettyyn vuorovaikutukseen Kutsun siirtäminen perusmekanismi monessa ratkaisussa Fasaadi keskittää alijärjestelmän käytön Edustajalla voidaan liittää palveluun oheistoimintaa Takaisinkutsulla kontrolli palautetaan väliaikaisesti kutsujalle Tarkkailija yleinen ratkaisu tapahtumapohjaiseen vuorovaikutukseen Viestipohjainen kommunikointi löyhentää sidoksia Tapahtumapohjaisuus (ja viestipohjaisuus): väärin käytettynä tekee ohjelman rakenteesta ja suorituksen seuraamisesta haastavaa vastuualueet sekaisin, päivittäminen vaatii meedion kykyjä kun asiat pilkottu sekaviksi pikkupätkiksi sinne tänne Ohjelmistoarkkitehtuurit

75 Kysyttävää? Ohjelmistoarkkitehtuurit

76 Periytymisen toteutus kutsun siirtämisellä täydellinen" Car olio printdescription-kutsu self Car parent Vehicle parent Commodity parent printdescription: {printname;... } 76

77 Periytymisen toteutus kutsun siirtämisellä Täydellinen" Car olio printdescription-kutsu self Car parent Vehicle parent Product parent Commodity parent printdescription: {printname;... } 77

http://www.enteract.com/~bradapp/docs/patterns-intro.html http://www.hillside.net/patterns/

http://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ätiedot

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit kevät Ohjelmistoarkkitehtuurit Kevät 2011-2012 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Esimerkki:

Lisätiedot

4. Komponenttien vuorovaikutus

4. Komponenttien vuorovaikutus 4. Komponenttien vuorovaikutus Roolirajapinnat Välittäjät Kutsun siirtäminen Edustajat Takaisinkutsut Tapahtumat Sovittimet Tehtaat 1 Toteutusriippuvuuksien poistaminen rajapinnoilla A B A ei tunne A IB

Lisätiedot

4. Komponenttien vuorovaikutus

4. Komponenttien vuorovaikutus 4. Komponenttien vuorovaikutus Roolirajapinnat Välittäjät Kutsun siirtäminen Edustajat Takaisinkutsut Tapahtumat Sovittimet Tehtaat 1 Toteutusriippuvuuksien poistaminen rajapinnoilla A B A ei tunne A IB

Lisätiedot

Roolirajapinnat Välittäjät Fasaadit Kutsun siirtäminen Edustajat Takaisinkutsut Tapahtumat Viestit Sovittimet Tehtaat

Roolirajapinnat Välittäjät Fasaadit Kutsun siirtäminen Edustajat Takaisinkutsut Tapahtumat Viestit Sovittimet Tehtaat 4. Komponenttien vuorovaikutus Roolirajapinnat Välittäjät Fasaadit Kutsun siirtäminen Edustajat Takaisinkutsut Tapahtumat Viestit Sovittimet Tehtaat Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka

Lisätiedot

Ohjelmistoarkkitehtuurit Johannes Koskinen.

Ohjelmistoarkkitehtuurit Johannes Koskinen. Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 1 4. Komponenttien vuorovaikutus Roolirajapinnat Välittäjät Fasaadit Kutsun siirtäminen Edustajat Takaisinkutsut Tapahtumat

Lisätiedot

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit kevät Ohjelmistoarkkitehtuurit Kevät 2011-2012 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 4. Komponenttien vuorovaikutus Roolirajapinnat Välittäjät Fasaadit Kutsun siirtäminen Edustajat Takaisinkutsut Tapahtumat

Lisätiedot

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 1 4. Komponenttien vuorovaikutus Roolirajapinnat Välittäjät Fasaadit Kutsun siirtäminen Edustajat Takaisinkutsut Tapahtumat

Lisätiedot

5. Suunnittelumallit. TTY Ohjelmistotekniikka

5. Suunnittelumallit.     TTY Ohjelmistotekniikka 5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Antisuunnittelumallit Esimerkki: Rekursiokooste Suunnittelumallit ja kehykset Suunnittelumallit ja

Lisätiedot

5. Suunnittelumallit. TTY Ohjelmistotekniikka

5. Suunnittelumallit.   TTY Ohjelmistotekniikka 5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Antisuunnittelumallit Esimerkki: Rekursiokooste Suunnittelumallit ja kehykset Suunnittelumallit ja

Lisätiedot

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit Ohjelmistoarkkitehtuurit 2012-2013 22.1.2013 1 5. Suunnittelumallit Suunnittelumallin käsite Suunnittelumallien hyötyjä Suunnittelumallien kuvaaminen Esimerkki: Rekursiokooste Antisuunnittelumallit Suunnittelumallit

Lisätiedot

4 Managing component interactions

4 Managing component interactions 4 Managing component interactions Role interfaces Mediators Forwarding Proxies Callbacks Events Adapters Factories 1 Removing component dependencies with interfaces A B Unknown to A A IB B how what 2 Role-based

Lisätiedot

Ohjelmistoarkkitehtuurit Kevät 2016 Suunnittelumallit

Ohjelmistoarkkitehtuurit Kevät 2016 Suunnittelumallit Ohjelmistoarkkitehtuurit Kevät 2016 Suunnittelumallit Samuel Lahtinen http://www.cs.tut.fi/~ohar/ Ohjelmistoarkkitehtuurit 2016 1 Yleistä Visio ja UML 2.x: http://www.softwarestencils.com/uml/ Komponenteista

Lisätiedot

5. Design patterns. TTY Ohjelmistotekniikka

5. Design patterns.   TTY Ohjelmistotekniikka 5. Design patterns The concept of a design pattern Benefits of design patterns Description of design patterns Antipatterns Example: Composite Design patterns and frameworks Design patterns & UML Design

Lisätiedot

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

812347A 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ätiedot

12. Kehysarkkitehtuurit

12. Kehysarkkitehtuurit 12. Kehysarkkitehtuurit Johdanto Kehystyypit Kehysten osittaminen Kehykset ja suunnittelumallit Kehysten etuja ja ongelmia Yhteenvetoa Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1 Johdanto

Lisätiedot

Viestinvälitysarkkitehtuurit

Viestinvä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ätiedot

Viestinvälitysarkkitehtuurit Lähtökohta:

Viestinvä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ätiedot

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

812347A 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ätiedot

Ohjelmistotekniikan menetelmät, suunnittelumalleja

Ohjelmistotekniikan menetelmät, suunnittelumalleja 582101 - Ohjelmistotekniikan menetelmät, suunnittelumalleja 1 Suunnittelumallit (design patterns) Kuvaus sellaisesta luokkarakenteesta & olioiden vuorovaikutuksesta, joka ratkaisee tietyn yleisen ongelman

Lisätiedot

TIE-20200 Ohjelmistojen suunnittelu

TIE-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ätiedot

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit 6. Arkkitehtuurityylit Osittavat arkkitehtuurityylit Kerrosarkkitehtuurit Tietovuoarkkitehtuurit Palveluihin perustuvat arkkitehtuurityylit Asiakas-palvelin arkkitehtuurit Viestinvälitysarkkitehtuurit

Lisätiedot

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit kevät Ohjelmistoarkkitehtuurit Kevät 20-202 Johannes Koskinen http://www.cs.tut.fi/~ohar/ Viestinvälitysarkkitehtuurit Lähtökohta: Järjestelmä koostuu keskenään kommunikoivista komponenteista, mahdollisesti

Lisätiedot

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit 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ätiedot

Oliosuunnittelu. Oliosuunnittelu

Oliosuunnittelu. 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ätiedot

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit 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ätiedot

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

Sisällys. Ratkaisumallien historia. Ratkaisumalli. Ratkaisumalli [2] Esimerkki: Composite [2] Esimerkki: Composite. Jaakko Vuolasto 25.1. Sisällys Ratkaisumallien historia Jaakko Vuolasto 25.1.2001! Ratkaisumalli! Christopher Alexander! Ohjelmistotuotannosta arkkitehtuuriin! Henkilöhistoriaa! Ensimmäisiä käyttökokemuksia! Yhteenveto 25.1.2001

Lisätiedot

TIE-20200 Ohjelmistojen suunnittelu

TIE-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ätiedot

Tarjolla tänään: Sanastoa Koneenohjausjärjestelmien suunnittelumallit. Pattern Architecture Style. GoF. Design pattern

Tarjolla tänään: Sanastoa Koneenohjausjärjestelmien suunnittelumallit. Pattern Architecture Style. GoF. Design pattern Koneenjärjestelmien suunnittelumallit Ohjelmistoarkkitehtuurit 9.2. 2012 Veli-Pekka Eloranta Tarjolla tänään: Suunnittelumallit Sanastoa Taustaa Kuvaustavat Mallikielet Työkoneet sovellusalueena Miksi

Lisätiedot

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

Interaktiivisten 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ätiedot

Kehyspohjainen ohjelmistokehitys

Kehyspohjainen ohjelmistokehitys Kehyspohjainen ohjelmistokehitys Sovellusalueen käsitemalli, piirremalli Yhteiset vaatimukset Kehyksen suunnittelu Suunnittelumallit Vaatimusmäärittely Muunneltavuusvaatimukset Kehysarkkitehtuuri Erikoistamisrajapinta

Lisätiedot

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

T 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ätiedot

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit 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ätiedot

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

Olio-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ätiedot

Suunnittelumalleja, MVC. Juha Järvensivu 2008

Suunnittelumalleja, 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ätiedot

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

812347A 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ätiedot

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Oliosuunnitteluesimerkki: 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ätiedot

Ohjelmistoarkkitehtuurit Kevät 2014 Arkkitehtuurityylit vol 2

Ohjelmistoarkkitehtuurit Kevät 2014 Arkkitehtuurityylit vol 2 Ohjelmistoarkkitehtuurit Kevät 2014 Arkkitehtuurityylit vol 2 Samuel Lahtinen (Johannes Koskinen) http://www.cs.tut.fi/~ohar/ 1 Yleisesti Huomenna ei luentoa, tapaaminen TC103:ssa Muistakaa harkkavälinäyttöilmo

Lisätiedot

Ohjelmistoarkkitehtuurit. Kevät 2012-2013

Ohjelmistoarkkitehtuurit. 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ätiedot

T Henkilökohtainen harjoitus: FASTAXON

T 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ätiedot

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit. 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ätiedot

6. Arkkitehtuurityylit

6. Arkkitehtuurityylit 6. Arkkitehtuurityylit Osittavat arkkitehtuurityylit - Kerrosarkkitehtuurit - Tietovuoarkkitehtuurit Palveluihin perustuvat arkkitehtuurityylit - Asiakas-palvelin arkkitehtuurit - Viestinvälitysarkkitehtuurit

Lisätiedot

Tapahtumapohjainen ohjelmointi. Juha Järvensivu juha.jarvensivu@tut.fi 2007

Tapahtumapohjainen ohjelmointi. Juha Järvensivu juha.jarvensivu@tut.fi 2007 Tapahtumapohjainen ohjelmointi Juha Järvensivu juha.jarvensivu@tut.fi 2007 Sisältö Tapahtumapohjainen ohjelmointi Käyttöliittymän rakenne Pääikkuna (top-level window) Lapsi-ikkuna (child window) Dialogit

Lisätiedot

Olio-ohjelmointi Suunnittelumallit Adapter ja Composite. 1. Adapter

Olio-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ätiedot

TIE-20200 Ohjelmistojen suunnittelu

TIE-20200 Ohjelmistojen suunnittelu TIE-20200 Ohjelmistojen suunnittelu Luento 7: SOLID ja olioiden rakentelumalleja TIE-20200 Samuel Lahtinen 1 Ajankohtaista Harjoitustyössä suunnittelusessioiden ajanvaraus auki Viikkoharjoituksissa tehtaaseen/rakennuttajiin

Lisätiedot

3. Komponentit ja rajapinnat

3. 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ätiedot

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

Interaktiivisten 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ätiedot

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

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. VI Johdanto suunnittelumalleihin 2015 syksy 2. vsk VI Johdanto suunnittelumalleihin Sisältö 1. Taustaa 2. Model View - Controller 3. Suunnittelumallin kuvaamisesta 4. Tavoitteita 5. Suunnitteluongelmien suhde malleihin 6. Suunnittelumallien

Lisätiedot

7 Viestipohjaisten yritysjärjestelmien suunnittelumallit

7 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ätiedot

Olio-ohjelmointi Johdanto suunnittelumalleihin. 1. Yleistä

Olio-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ätiedot

Ohjelmistojen mallintaminen, suunnittelumalleja

Ohjelmistojen mallintaminen, suunnittelumalleja 582104 Ohjelmistojen mallintaminen, suunnittelumalleja 1 Suunnittelumallit (design patterns) Kuvaus sellaisesta luokkarakenteesta & olioiden vuorovaikutuksesta, joka ratkaisee tietyn yleisen ongelman tiettyjen

Lisätiedot

6. Arkkitehtuurityylit

6. Arkkitehtuurityylit 6. Arkkitehtuurityylit Osittavat arkkitehtuurityylit Kerrosarkkitehtuurit (rakenteen ositus) Tietovuoarkkitehtuurit (toiminnan ositus) Palveluihin perustuvat arkkitehtuurityylit Asiakas-palvelin arkkitehtuurit

Lisätiedot

Hirviö. Design Patterns

Hirviö. Design Patterns Hirviö SEPA-päiväkirja Design Patterns Anssi Kalliolahti Liia Sarjakoski 15. maaliskuuta 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ätiedot

Osio 4: Graafinen käyttöliittymä

Osio 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ätiedot

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit kevät Ohjelmistoarkkitehtuurit Kevät 2011-2012 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 6. Arkkitehtuurityylit Osittavat arkkitehtuurityylit Kerrosarkkitehtuurit (rakenteen ositus) Tietovuoarkkitehtuurit

Lisätiedot

Ohjelmistoarkkitehtuurit. Syksy 2008

Ohjelmistoarkkitehtuurit. Syksy 2008 Ohjelmistoarkkitehtuurit Syksy 2008 Kai Koskimies 1 Tervetuloa Kuopion yliopisto, Oulun yliopisto, Tampereen yliopisto, Teknillinen korkeakoulu, Turun yliopisto, Vaasan yliopisto, Tampereen teknillinen

Lisätiedot

Web Services tietokantaohjelmoinnin perusteet

Web 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ätiedot

Ohjelmistojen mallintaminen, sekvenssikaaviot

Ohjelmistojen mallintaminen, sekvenssikaaviot 582104 - Ohjelmistojen mallintaminen, sekvenssikaaviot 1 Vuorovaikutussuunnittelu Oliojärjestelmän toiminta perustuu olioiden vuorovaikutukseen ja yhteistyöhön Olioiden yhteistyö toteutuu operaatioiden

Lisätiedot

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

T 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ätiedot

Ohjelmistoarkkitehtuurit. Syksy 2010

Ohjelmistoarkkitehtuurit. Syksy 2010 Ohjelmistoarkkitehtuurit Syksy 2010 Kai Koskimies Tervetuloa Oulun yliopisto, Tampereen yliopisto, Turun yliopisto, Tampereen teknillinen yliopisto, Vaasan yliopisto Kurssin tavoitteet Arkkitehtuurin roolin

Lisätiedot

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Graafisen 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ätiedot

Ohjelmistoarkkitehtuurit 2016. Kevät 2016 -käytäntöjä

Ohjelmistoarkkitehtuurit 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ätiedot

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja 582104 Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja 1 Arkkitehtuurisuunnittelu Ohjelmistoarkkitehtuurin määritelmä & arkkitehtuurisuunnittelun lähtökohta ja tavoitteet Kerrosarkkitehtuuri

Lisätiedot

Integrointi. Ohjelmistotekniikka kevät 2003

Integrointi. 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ätiedot

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 1 Arkkitehtuurityylit Osittavat arkkitehtuurityylit Kerrosarkkitehtuurit (rakenteen ositus) Tietovuoarkkitehtuurit

Lisätiedot

Ohjelmistoarkkitehtuurit Johannes Koskinen. Osittavat arkkitehtuurityylit

Ohjelmistoarkkitehtuurit Johannes Koskinen.  Osittavat arkkitehtuurityylit Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 1 Arkkitehtuurityylit Osittavat arkkitehtuurityylit Kerrosarkkitehtuurit (rakenteen ositus) Tietovuoarkkitehtuurit

Lisätiedot

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit Ohjelmistoarkkitehtuurit Konnektorit ohjelmistoarkkitehtuurissa 18.9.2012 1 Konnektorit (connectors) Konnektori (connector) (liitos) Arkkitehtuurielementti, jonka tehtävänä on mahdollistaa ja hallita komponenttien

Lisätiedot

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Tenttikysymykset. + 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ätiedot

Ohjelmistojen mallintaminen Olioiden yhteistyö. 18.11.2008 Harri Laine 1

Ohjelmistojen 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ätiedot

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit 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ätiedot

Suunnittelumallit (design patterns)

Suunnittelumallit (design patterns) Suunnittelumallit (design patterns) Ohjelmoinnissa Rakennusarkkitehtuurissa Käyttöliittymäsuunnittelussa Sear ch Ohjelmointi Suunnittelumallit Usein toistuvia ohjelmointiongelmia ja niiden ratkaisuja:

Lisätiedot

Hirviö. Design Patterns

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ätiedot

Ohjelmistoarkkitehtuurit. Kevät

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ätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 11: Olioiden toteuttaminen Riku Saikkonen 28. 11. 2011 Sisältö 1 Miten oliot ja metodikutsut toimivat? 2 Oliot Minkä luokan metodia kutsutaan? Python-esimerkki

Lisätiedot

Ohjelmistoarkkitehtuurit. Syksy 2007

Ohjelmistoarkkitehtuurit. 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ätiedot

HOJ J2EE & EJB & SOAP &...

HOJ J2EE & EJB & SOAP &... HOJ J2EE & EJB & SOAP &... Ville Leppänen HOJ, c Ville Leppänen, IT, Turun yliopisto, 2012 p.1/18 Missä mennään... 1. Johdanto (1h) 2. Säikeet (2h) 3. Samanaikaisuudesta (2h) 4. Hajautetuista sovelluksista

Lisätiedot

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

TIE-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ätiedot

UML- mallinnus: Tilakaavio

UML- mallinnus: Tilakaavio UML- mallinnus: Tilakaavio Karkea kuvaus UML- kaavioiden käytöstä ohjelmistonkehityksen eri vaiheissa ja tehtävissä. Mallinnus tilakaavioilla Tilakaaviolla kuvataan yhden luokan olioiden tilan muuttumista

Lisätiedot

Veto-visualisointityökalu

Veto-visualisointityökalu Ohjelmoinnin suunnittelumallit (design patterns) käyttöliittymissä Vanhin ja keskeisin lähde Gamma E., Helm R., Johnson R., Vlissides J., Design Patterns. Addison-Wesley, USA, 1994. Ajatus ohjelmoinnin

Lisätiedot

Graafisen käyttöliittymän ohjelmointi

Graafisen käyttöliittymän ohjelmointi TIE-11300 Tietotekniikan vaihtuva-alainen kurssi Graafisen käyttöliittymän ohjelmointi Luento 2 Tapahtumapohjainen ohjelmointi Juha-Matti Vanhatupa Sisältö Tapahtumapohjainen ohjelmointi Tapahtumakuuntelijoiden

Lisätiedot

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1 Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri 2 28.11.2008 Harri Laine 1 Ohjelmistoarkkitehtuuri Rajapinta UML:ssä piirteiden (attribuuttien ja operaatioiden) kokoelma, josta ei voi suoraan luoda ilmentymiä

Lisätiedot

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

4.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ätiedot

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit kevät Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 1 3. Komponentit ja rajapinnat 3.1 Komponenttien idea: ohjelmistotuotannon rationalisointi 3.2 Mikä on ohjelmistokomponentti?

Lisätiedot

Komponentit ja rajapinnat

Komponentit ja rajapinnat Ohjelmistoarkkitehtuurit Kevät 2012-2013 Johannes Koskinen http://www.cs.tut.fi/~ohar/ 1 Komponentit ja rajapinnat 3.1 Komponenttien idea: ohjelmistotuotannon rationalisointi 3.2 Mikä on ohjelmistokomponentti?

Lisätiedot

Java-API, rajapinnat, poikkeukset, UML,...

Java-API, rajapinnat, poikkeukset, UML,... Java-API, rajapinnat, r poikkeukset, UML,... Janne Käki 12.10.2006 Keskeisimmät Java-API:n pakkaukset API = Application Programming Interface eli sovellusohjelmointirajapinta (!) pakkaus (engl. package)

Lisätiedot

SEPA 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 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ätiedot

Ohjelmistotuotanto, s

Ohjelmistotuotanto, s Ohjelmistotuotanto Suunnittelu 3 Kuvion piirtotavan erottaminen omaksi piirtoalgoritmin toteuttavaksi olioksi on esimerkki (strategy) suunnittelutason ratkaisumallista, joka lisää joustavuutta ja muunnettavuutta

Lisätiedot

Ohjelmistotekniikan menetelmät, arkkitehtuuria ja rajapintoja

Ohjelmistotekniikan menetelmät, arkkitehtuuria ja rajapintoja 582101 - Ohjelmistotekniikan menetelmät, arkkitehtuuria ja rajapintoja 1 Arkkitehtuurisuunnittelu Ohjelmistoarkkitehtuurin määritelmä & arkkitehtuurisuunnittelun lähtökohta ja tavoitteet Kerrosarkkitehtuuri

Lisätiedot

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2008

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2008 Tapahtumapohjainen ohjelmointi Juha Järvensivu juha.jarvensivu@tut.fi 2008 Sisältö Tapahtumapohjainen ohjelmointi Käyttöliittymän rakenne Pääikkuna (top-level window) Lapsi-ikkuna (child window) Dialogit

Lisätiedot

Tapahtumat. Johdanto Ikkunointi Ikkunatapahtumat Päätapahtumasilmukka Tapahtumien käsittely Olioiden välinen kommunikointi.

Tapahtumat. Johdanto Ikkunointi Ikkunatapahtumat Päätapahtumasilmukka Tapahtumien käsittely Olioiden välinen kommunikointi. Tapahtumat Johdanto Ikkunointi Ikkunatapahtumat Päätapahtumasilmukka Tapahtumien käsittely Olioiden välinen kommunikointi Petri Vuorimaa 1 Johdanto Tapahtumien käsittely muodostaa vuorovaikutteisen käyttöliittymän

Lisätiedot

Lab SBS3.FARM_Hyper-V - Navigating a SharePoint site

Lab SBS3.FARM_Hyper-V - Navigating a SharePoint site Lab SBS3.FARM_Hyper-V - Navigating a SharePoint site Note! Before starting download and install a fresh version of OfficeProfessionalPlus_x64_en-us. The instructions are in the beginning of the exercise.

Lisätiedot

HSMT J2EE & EJB & SOAP &...

HSMT 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ätiedot

UML -mallinnus TILAKAAVIO

UML -mallinnus TILAKAAVIO UML -mallinnus TILAKAAVIO SISÄLLYS 3. Tilakaavio 3.1 Tilakaavion alku- ja lopputilat 3.2 Tilan nimi, muuttujat ja toiminnot 3.3 Tilasiirtymä 3.4 Tilasiirtymän vai tilan toiminnot 3.5 Tilasiirtymän tapahtumat

Lisätiedot

Ohjelmistojen mallintaminen, mallintaminen ja UML

Ohjelmistojen mallintaminen, mallintaminen ja UML 582104 Ohjelmistojen mallintaminen, mallintaminen ja UML 1 Mallintaminen ja UML Ohjelmistojen mallintamisesta ja kuvaamisesta Oliomallinnus ja UML Käyttötapauskaaviot Luokkakaaviot Sekvenssikaaviot 2 Yleisesti

Lisätiedot

Kertaus: yleistys-erikoistus ja perintä

Kertaus: yleistys-erikoistus ja perintä Kertaus: yleistys-erikoistus ja perintä Nauta, Lehmä ja Kuttu ovat Kotieläimiä, Kotieläimet Eläimiä Kotieläimillä (siis myös Naudoilla, Lehmillä ja Kutuilla) on Omistaja Kuttu ja Lehmä toteuttavat rajapinnan

Lisätiedot

15. Ohjelmoinnin tekniikkaa 15.1

15. Ohjelmoinnin tekniikkaa 15.1 15. Ohjelmoinnin tekniikkaa 15.1 Sisällys For-each-rakenne. Geneerinen ohjelmointi. Lueteltu tyyppi enum. 15.2 For-each-rakenne For-rakenteen variaatio taulukoiden ja muiden kokoelmien silmukoimiseen:

Lisätiedot

VisualStudio Pikaopas, osa 1: WEB sivujen suunnittelu

VisualStudio 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ätiedot

Ohjelmistoarkkitehtuurit Kevät käytäntöjä

Ohjelmistoarkkitehtuurit 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ätiedot

Java ja grafiikka. Ville Sundberg 12.12.2007

Java ja grafiikka. Ville Sundberg 12.12.2007 Java ja grafiikka Ville Sundberg 12.12.2007 What happen Viritetty JPanel Graphics ja Graphics2D ImageIO ja BufferedImage Animaatio ja ajastus Optimoinnista Kehykset import javax.swing.jframe; public class

Lisätiedot

Ohjelmoinnin peruskurssien laaja oppimäärä

Ohjelmoinnin peruskurssien laaja oppimäärä Ohjelmoinnin peruskurssien laaja oppimäärä Luento 7: Olio-ohjelmointia: UML ja suunnittelumallit Riku Saikkonen (osa kalvoista on suoraan ei-laajan kurssin luennoista) 14. 3. 2012 Sisältö 1 UML-luokkakaaviot

Lisätiedot