Ohjelmistoarkkitehtuurin suunnitteluperiaatteita

Koko: px
Aloita esitys sivulta:

Download "Ohjelmistoarkkitehtuurin suunnitteluperiaatteita"

Transkriptio

1 Ohjelmistoarkkitehtuurin suunnitteluperiaatteita Luento Ohjelmistoarkkitehtuurit 1

2 Oppimistavoitteet Arkkitehtuuritiedon lähteet Yleisiä suunnitteluperiaatteita Information hiding Single Responsibility Principle Coupling & Cohesion Järjestelmän osittaminen Component Coupling & Cohesion Dependency Inversion Arkkitehtuurityyli ja patterni Peruskäsitteet Ohjelmistoarkkitehtuurit 2

3 ARKKITEHTUURITIEDON LÄHTEET Ohjelmistoarkkitehtuurit 3

4 Ohjelmistoarkkitehtuuritiedon lähteillä Yhdellä (yliopisto-) kurssilla ei kenestäkään kouluteta ohjelmistoarkkitehtia Ohjelmistoarkkitehdiksi kasvetaan kokemuksen ja haastavien tehtävien kautta Muitten kokemuksesta voi kuitenkin ottaa oppia ja kehittää tietojaan ja suunnittelutaitojaan Yleiset ohjelmistojen suunnitteluperiaatteet Laatuominaisuuksien suunnittelutaktiikat Arkkitehtuurityylit ja -patternit Kokemusraportit ja kuvaukset onnistuneista ja epäonnistuneista kehitysprojekteista (blogit, kirjat) Ohjelmistoarkkitehtuurit 4

5 Kuningas näkee pelin toisin Ohjelmistoarkkitehtuurit 5

6 R.C. Martin Referenssejä D. Spinellis, G. Gousios: M. Fowler Prentice Hall, 2017 L. Bass, P. Clements, R. Kazman: I. Mistrik, A. W. Brown, M. Ali Babar O Reilly, 2009 Elsevier /Morgan Kaufmann, 2013 Pearson, 2003 Addison-Wesley Prof., Ohjelmistoarkkitehtuurit 6

7 Lisää referenssejä Microservices.io Patternikieli mikropalveluarkkitehtuurin käyttöön High Scalability sivusto Real Life Architectures tarinoita ja kokemuksia Erityisesti web-sovellusten ja palvelujen rakentajille Pilvessä tapahtuvan tietojenkäsittelyn perusteet patternien muodossa Kirjan voi lukea SpringerLink e-kirjastossa ja ladata sieltä pdf:nä (kuuluu yliopiston tilaukseen) Ohjelmistoarkkitehtuurit 7

8 YLEISET SUUNNITTELUPERIAATTEET Ohjelmistoarkkitehtuurit 8

9 Yleiset suunnitteluperiaatteet Abstraction, Encapsulation, Inofrmation Hiding, Modularization, Separation of Concerns, Coupling and Cohesion, Sufficiency-Completeness-Primitiveness, Separation of Policy and Implementation, Single Point of Reference, Divide-and-Conquer, SOLID Principles, Katso esimerkiksi Luku 6.3 Enabling techniques for software architecture teoksessa Buschmann F. & al.: Pattern-Oriented Software Architecture, vol. 1. Wiley, 2001 Wikipedia nt_philosophies Ohjelmistoarkkitehtuurit 9

10 Information Hiding Parnas, D.: On the Criteria to Be Used in Decomposing Systems Into Modules. Comm. ACM 15(12), 1972 Ohjelmisto jaetaan moduuleihin siten, että kukin moduuli kätkee jonkin todennäköisesti muuttuvan teknisen tai sovellusalueen piirteen toteutuksen (= suunnittelupäätökset) Moduuli tarjoaa palveluihinsa vakaan abstraktin rajapinnan, joka ei paljasta toteutuksen yksityiskohtia (~abstrakti tietotyyppi) Moduuli = ohjelman (erillinen) osa, joka sisältää yhteen kuuluvia elementtejä, esim. Java-pakkaus ja sen luokat; vaihdettava/uudelleen käytettävä (staattinen) rakenneosa (koodia, konf. tiedostoja tms.) Käytännössä Komponentti sisältää 1 n Moduulia Komponentti on sellaisenaan käyttövalmis järjestelmän osa Ohjelmistoarkkitehtuurit 10

11 Information Hiding Kun moduulin kätkemiä suunnittelupäätöksiä muutetaan, moduulia käyttäviä muita ohjelmiston osia ei tarvitse muuttaa, koska ne riippuvat vain samana pysyvästä rajapinnasta Useimmat ohjelmistokehittäjät pitävät itsestäänselvyytenä, että rajapinta (esim. Java-olion) ei paljasta olion toteutuksen yksityiskohtia Kentät merkitään yksityisiksi (private), mutta määritellään näkyviksi tarkoitetuille kentille (property) julkiset get() ja set() metodit Harvempi kuitenkaan tulee ajatelleeksi odotettavissa olevia muutoksia ja muutosten heijastusvaikutusten ennalta ehkäisemistä ohjelmiston modularisoininnin avulla Arkkitehdin työn kuvaan tällaisen ajatteleminen kuitenkin kuuluu Muutostarpeita voi tosin olla vaikea arvata etukäteen Tähän ongelmaan tepsii, paitsi oikein tehty olioperustainen suunnittelu, seuraavaksi esiteltävä periaate Ohjelmistoarkkitehtuurit 11

12 Separation of Concerns Erilaiset tai yhteenkuulumattomat vastuut (responsibilities) on erotettava toisistaan ohjelmistossa Jaettava eri rakenneosille (luokka, moduuli); jokaisella on selkeä tehtävä Vastuu: jotakin mitä osa tekee tai tietää tai piilottaa muilta (toiminto, riippuvuus, data, ) Tietyn tehtävän yhteistyössä suorittavat osat on pidettävä erillään osista, jotka suorittavat muita tehtäviä Jos esimerkiksi komponentilla on useita rooleja (rajapintoja) eri tilanteita ja käyttöyhteyksiä varten, roolit on pidettävä itsenäisinä ja erillään komponentin sisällä Ohjelmistoarkkitehtuurit 12

13 SRP Esimerkiksi Single Responsibility Principle, eli A class should have one and only One Reason to Change (ORC) kokoaa edellä mainitut periaatteet yhteen olioluokkien suunnitteluperiaatteeksi Yksi SOLID periaatteista Usein väärin ymmärretty tarkoittavan, että luokka saisi tehdä vain yhden asian - yhden asian periaate koskee luokan metodeja Vastuu on tässä laajempi käsite, joka liittyy ohjelmiston toiminnallisuuteen (laajasti ymmärrettynä) Ohjelmistoarkkitehtuurit 13

14 SRP Luokka on vastuusta vain tietystä ohjelmiston toiminnallisuudesta Vastuu on kokonaisuudessaan kapseloitu (encapsulated) luokkaan Luokan tarjoamat palvelut (rajapinta) rajoittuvat tiukasti vain tähän vastuuseen Ohjelmistoarkkitehtuurit 14

15 SRP-esimerkki Ajatellaan luokkaa, joka koostaa sovelluksen käsittelemästä datasta tulostettavan raportin Kuinka monesta syystä luokkaa voidaan joutua muuttamaan? Raportin sisältöä halutaan muuttaa (uutta dataa tai uusia laskelmia) Tulosteen ulkoasua halutaan muuttaa tai halutaan kokonaan uudentyyppisiä tulosteita (pdf, cvs) Nämä ovat eri vastuita ja ne pitäisi erottaa omiin luokkiinsa Ohjelmistoarkkitehtuurit 15

16 Coupling Kytkentä (coupling) on ohjelmiston osien välisen assosiaation voimakkuuden mittari Voimakas kytkentä tekee erilliset osat vaikeammin ymmärrettäväksi, muutettavaksi ja korjattaviksi toisistaan riippumatta Esimerkiksi jos moduulin A luokka A.A pääsee suoraan käsiksi moduulin B luokan B.B toteutukseen (sen kenttiin), syntyy hyvin voimakas kytkentä, koska B.B:n toteutukseen tehtävä muutos todennäköisesti heijastuu välittömästi muutostarpeena A.A:n koodin, joka käsittelee suoraan B.B:n kenttiä Mittarille on tekninen määritelm(i)ä, mutta asian ydin on miettiä, millaisia heijastusvaikutuksia jonkin moduulin sisäisillä muutoksilla on muihin moduuleihin ja pyrkiä minimoimaan ne Ohjelmistoarkkitehtuurit 16

17 Ominaisuuksien ortogonaalisuus Suoralla y = a voi x:n valita vapaasti Jos x:n valinta ei vaikuta y:n arvoon ja päinvastoin, niin ominaisuudet (x ja y) ovat toisistaan riippumattomia Suunnittelussa ja arkkitehtuurissa: Moduulien / komponenttien välisen keskinäisen riippumattomuuden mitta Ohjelmistoarkkitehtuurit 17 Y (0,a) (b,0) x=b y = a X

18 Cohesion Rakenneosan sisältämien elementtien yhteenkuuluvuuden (cohesion) mittari Yhteenkuuluvuuden eri asteita Toiminnallinen (hyvä!): kaikki rakenneosan elementit toimivat yhdessä jonkin tietyn, rajallisen tehtävän toteuttamiseksi (well-bounded behavior) Sattumanvarainen (huono!): osa on satunnainen kokoelma yhteenkuulumattomia abstraktioita ja toimintoja Asteita on muitakin, mutta oleellista on miettiä, (1) mikä on osan päätehtävä ja (2) miten sen elementit liittyvät tuon tehtävän suorittamiseen Voiko jotkut elementit siirtää pois päätehtävän kärsimättä? Ohjelmistoarkkitehtuurit 18

19 JÄRJESTELMÄN JAKAMINEN OSIIN Ohjelmistoarkkitehtuurit 19

20 By NASA (Stardust Launch Press Kit [1]) [Public domain], via Wikimedia Commons Ohjelmistoarkkitehtuurit 20

21 "Legpuzzel" by Piero from nl. Licensed under CC BY-SA 3.0 via Wikimedia Commons Ohjelmistoarkkitehtuurit 21

22 Kokonaisuus koostuu osista Yleiset suunnitteluperiaatteet auttavat arvioimaan osituksen onnistumista (laatua), mutta eivät kerro, miten ositus käytännössä löydetään Oletusarkkitehtuuri (esim. ohjelmistokehys, framework) antaa valmiin kaavan, joka jakaa rakennettavan järjestelmän loogisesti ja fyysisesti erillisiin, tietyn rajatun tehtävän tai tarkoituksen täyttäviin rakenneosiin (moduulit, komponentit jne.) Arkkitehtuurityylit ja patternit tarjoavat suoraan lähtökohtia järjestelmän suunnittelulle ja ositukselle Mitä muita yleisiä tapoja on osittaa järjestelmä ja sen arkkitehtuuri? Ohjelmistoarkkitehtuurit 22

23 Ositusstrategiat Kurssikirja esittelee joukon ositustapoja luvussa Jotkut niistä ovat hieman abstrakteja Jako toiminnallisuuden mukaan on yleinen tapa Tarkastellaan, mitä kaikkea järjestelmän pitää tehdä (toiminnallisuus) Määritellään perusjako (yleensä jonkinlainen hierarkia), jossa toiminnallisuudet jaotellaan joko teknisen luonteen tai toiminnan tarkoituksen (sovellusalueen prosessien) perusteella Yhteenkuuluva toiminnallisuus yhteen elementtiin tai samalla hierarkian tasolla läheisessä yhteistoiminnassa oleviin elementteihin Myöhemmin kurssilla käsitellään R. C. Martinin Clean Architecture, joka esittelee erään perusosituksen mallin Ohjelmistoarkkitehtuurit 23

24 Component Cohesion Millä perusteella yksittäiset luokat pitäisi koota moduuleiksi ja edelleen komponenteiksi (eli valmiiksi sellaisenaan käyttöön otettaviksi rakennuspalikoiksi)? REP (Release Equivalence Principle): samaan komponenttiin kootut elementit ovat sellaisia, että ne on järkeä julkaista yhtenä yksikkönä CCP (Common Closure Principle): kokoa samaan komponenttiin samasta syystä ja samaan aikaan muuttuvat elementit (= SRP komponenteille) CRP (Common Reuse Principle): komponentin elementtien (luokkien) pitäisi olla sellaisia, että niitä välttämättä tarvitaan aina yhdessä - eli komponentin käyttäjää ei saa pakottaa riippuvaiseksi elementeistä, joita se ei tarvitse Huom REP ja CCP kertovat, mitä komponenttiin kannattaa ottaa mukaan, mutta CRP kertoo, mitä kannattaa jättää pois Ohjelmistoarkkitehtuurit 24

25 Component Coupling Komponenttien väliset lähdekoodiriippuvuudet eivät saa olla syklisiä Riippuvuuksien muodostama suunnattu verkko ei saa sisältää syklejä (mistään verkon solmusta ei pääsee takaisin siihen itseensä kaaria pitkin kulkien) Komponenttien muodostama rakenne ja siihen kuuluvat staattiset (koodi-) riippuvuudet ovat tärkeitä ohjelmiston ylläpidettävyydelle ja koostettavuudelle (buildability), joiden pitäisi ohjata rakenteen kehitystä Herkästi muuttuvat epävakaat (volatile) komponentit voivat riippua vakaiksi tarkoitetuista (harvoin ja vaikeasti muutettavista) komponenteista mutta ei päinvastoin: riippuvuus vakaaseen komponenttiin ei lisää herkän komponentin epävakautta, mutta riippuvuus epävakaaseen komponenttiin heikentää vakaan komponentin vakautta Hankalasti muutettavat komponentit eivät saa riippua herkistä epävakaista komponenteista myöskään siksi, että herkkyys katoaa: hankalasti muutettavaa komponenttia ei yleensä haluta muuttaa, joten herkkääkään komponenttia ei voida enää muuttaa (ainakaan riippuvuuksien osalta) Ohjelmistoarkkitehtuurit 25

26 Dependency Inversion SOLID-periaate Dependency Inversion liittyy edelliseen Korkean tason moduulit ('business-logiikka') eivät saa riippua matalan tason moduuleista (tietokanta-ajurit) Molempien tulisi riippua abstraktioista, jotka määrittävät korkean tason moduulille näkymän alemman tason palveluihin (piilottaen niiden toteutuksen) Abstraktioiden ei pitäisi riippua detaljeista; detaljien pitäisi riippua abstraktioista Ohjelmistoarkkitehtuurit 26

27 ARKITEHTUURITYYLIT JA - PATTERNIT Ohjelmistoarkkitehtuurit 27

28 Arkkitehtuurityyli Architectural style Nimetty kokoelma tiettyyn käyttöyhteyteen soveltuvia yleisiä suunnitteluperiaatteita ja sääntöjä, jotka tuovat mukanaan hyödyllisiä ominaisuuksia rakennettavaan järjestelmään Esim. asiakas palvelin tyyli (Client-Server): Erottele palvelua pyytävä ja palvelun tarjoava ohjelmistokomponentti Piilota palvelua pyytävien komponenttien identiteetti palvelun tarjoajalta ja mahdollista useiden pyytäjien mahdollisesti vaihtelevan joukon palveleminen Eristä pyytäjät toisistaan Mahdollista useita palvelun tarjoajia; ja mahdollista tarjoajien määrän dynaaminen (käytön aikainen) lisääminen asiakkaiden määrän vaihtelun mukaan Ei ota kantaa käytettäviin kommunikaatiomekanismeihin (tietoliikenneprotokolla) Ohjelmistoarkkitehtuurit 28

29 Arkkitehtuuripatterni (tai malli) Architectural pattern Nimetty kokoelma johonkin toistuvaan suunnitteluongelmaan soveltuvia suunnitteluratkaisuja, jotka on parametrisoitu ottamaan huomioon käyttöyhteys, jossa ongelma esiintyy Miten tyyli eroaa patternista? Tyylin käyttötilanne on yleisempi, patternin spesifimpi Tyylit ovat enemmän periaatesääntöjä ja patternit konkreettisia ratkaisuja Patternit soveltavat tyyliä (tyylejä) Patterniin voidaan yhdistää tyylejä. Tietty tyyliä noudattava ratkaisu voi sisältää useita patterneja. Huom - Kaikki lähteet eivät erottele näitä käsitteitä! Ohjelmistoarkkitehtuurit 29

30 Kolmitasoarkkitehtuuri Käli-elementin sisältö Service requests Olio Data requests Tietokantataulun rivi Display (Presentation) business' logic Persistent state (Datastore) Values to display data values Käyttäjän näkymä J:n dataan ja toimintoihin -datan katselu -datan muokkaus Operaatiot, joita käyttäjä haluaa järjestelmän tekevän datan perusteella (liiketoimintaprosessit ja entiteetit) Datan pysyvä talletus ja jakaminen eri sovellusten kesken Ohjelmistoarkkitehtuurit 30

31 Kolmitasoarkkitehtuuri -patterni Asiakaskone Tilauskäyttöliittymä Asiakaskone Tilauskäyttöliittymä Asiakaskerros reply request Asiakas palvelin tyyli Web- ja sovelluspalvelin Web-palvelin Sovelluspalvelin Sovelluskerros Tilausjärjestelmä request reply Tietokantapalvelin Tilaustietokanta Datakerros Ohjelmistoarkkitehtuurit 31

32 Tyylien käytöstä Muitten jäljittely ja suunnittelun uudelleenkäyttö on hyvä oppimismenetelmä Kun käyttää tyylejä ja patterneja, on kuitenkin syytä ymmärtää miksi ja missä tilanteissa ne toimivat ja verrata tätä omaan käsillä olevaan suunnitteluongelmaan Joukko tyylejä ja patterneja käydään läpi seuraavilla luennoilla Ohjelmistoarkkitehtuurit 32

33 Miten yleiset suunnitteluperiaatteet ilmenevät tässä arkkitehtuurissa? Asiakaskone Tilauskäyttöliittymä Asiakaskone Tilauskäyttöliittymä Asiakaskerros Web- ja sovelluspalvelin Web-palvelin Sovelluspalvelin Sovelluskerros Tilausjärjestelmä Tietokantapalvelin Tilaustietokanta Datakerros Ohjelmistoarkkitehtuurit 33

Ohjelmistoarkkitehtuurin suunnittelu

Ohjelmistoarkkitehtuurin suunnittelu Ohjelmistoarkkitehtuurin suunnittelu Luento 3 10.9.2014 581358 Ohjelmistoarkkitehtuurit 1 Oppimistavoitteet Arkkitehtuuritietämyksen lähteet Yleisiä suunnitteluperiaatteita Kaunis arkkitehtuuri 10.9.2014

Lisätiedot

Oppimistavoitteet. Ohjelmistoarkkitehtuurin suunnittelu. Referenssejä L. Bass, P. Clements, R. Kazman: I. Mistrik, A. W. Brown, M. Ali Babar 8.9.

Oppimistavoitteet. Ohjelmistoarkkitehtuurin suunnittelu. Referenssejä L. Bass, P. Clements, R. Kazman: I. Mistrik, A. W. Brown, M. Ali Babar 8.9. Oppimistavoitteet Ohjelmistoarkkitehtuurin suunnittelu Luento 3 Arkkitehtuuritietämyksen lähteet Yleisiä suunnitteluperiaatteita Kaunis arkkitehtuuri 8.9.2015 581358 Ohjelmistoarkkitehtuurit 1 8.9.2015

Lisätiedot

Ohjelmistoarkkitehtuurit, syksy 2012 4.9.2010

Ohjelmistoarkkitehtuurit, syksy 2012 4.9.2010 Ohjelmistotutkimuksen painopisteitä Ohjelmistoarkkitehtuurit Johdanto ja peruskäsitteitä 2000 1995 1990 1985 1980 1970 Tuoteperhearkkitehtuurit, MDA, väliohjelmistot, aspektit CASE-välineet: uudelleenkäyttö,

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

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

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

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

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

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

Huonon suunnittelun oireita. Hajuja ja sääntöjä. Hyvän suunnittelun periaatteet. Paha haju

Huonon suunnittelun oireita. Hajuja ja sääntöjä. Hyvän suunnittelun periaatteet. Paha haju Hajuja ja sääntöjä OA2005 Huonon suunnittelun oireita Kankeus suunnitelmaa on vaikea muokata. Hauraus suunnitelma on helppo rikkoa. Liikkumattomuus suunnitelmaa on hankala uudelleenkäyttää. Viskositeetti

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

Sisä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. 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ä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

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Ohjelmistojen mallintaminen kertausta Harri Laine 1 kertausta 5.12.2008 Harri Laine 1 Ohjelmiston elinkaari, elinkaarimallit Yleinen puitemalli (reference model) - abstrakti kokonaiskuva ei etenemiskontrollia, ei yksityiskohtia Ohjelmistoprosessimallit

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

Muutamia peruskäsitteitä

Muutamia peruskäsitteitä Muutamia peruskäsitteitä Huom. 1: nämä peruskäsitteet eivät muodosta hyvin määriteltyä keskenään yhteensopivien käsitteiden joukkoa, vaan käsitteet ovat osittain päällekkäisiä ja eri yhteyksissä niillä

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

Ohjelmistoarkkitehtuurit Komponentit Kevät 2014

Ohjelmistoarkkitehtuurit Komponentit Kevät 2014 Ohjelmistoarkkitehtuurit Komponentit Kevät 2014 (Samuel Lahtinen Johannes Koskinen) http://www.cs.tut.fi/~ohar/ 1 Yleistä Harkkaryhmien viimeistely tapahtuu tänään 2 Aikataulua... 22.1. 23.1. 29.1. 30.1.

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 suunnittelu

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

Ohjelmistojen mallintamisen ja tietokantojen perusteiden yhteys

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

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

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

Suunnitteluvaihe prosessissa

Suunnitteluvaihe prosessissa Suunnittelu Suunnitteluvaihe prosessissa Silta analyysin ja toteutuksen välillä (raja usein hämärä kumpaankin suuntaan) Asteittain tarkentuva Analyysi -Korkea abstraktiotaso -Sovellusläheiset käsitteet

Lisätiedot

2. Olio-ohjelmoinnin perusteita 2.1

2. Olio-ohjelmoinnin perusteita 2.1 2. Olio-ohjelmoinnin perusteita 2.1 Sisällys Esitellään peruskäsitteitä yleisellä tasolla: Luokat ja oliot. Käsitteet, luokat ja oliot. Attribuutit, olion tila ja identiteetti. Metodit ja viestit. Olioperustainen

Lisätiedot

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu HELIA 1 (14) Luento 7 Käyttöliittymäolio... 2 Olioajattelun perusteet... 3 Tavoitteet... 3 Peruskäsitteet... 4 Olio / Olioinstanssi / Olion esiintymä... 4 Ominaisuudet... 4 Toiminnot... 4 Olioluokka /

Lisätiedot

Järjestelmäarkkitehtuuri (TK081702)

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

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Tekninen määrittely: Editori Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset Sisällysluettelo 1. Johdanto...4 1.1. Tarkoitus ja kattavuus...4 1.2. Tuote ja ympäristö...4 1.3. Määritelmät,

Lisätiedot

Linux rakenne. Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat

Linux rakenne. Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat Linux rakenne Linux-järjestelmä koostuu useasta erillisestä osasta. Eräs jaottelu: Ydin Komentotulkki X-ikkunointijärjestelmä Sovellusohjelmat Linux ydin Ytimen (kernel) päätehtävä on tarjota rajapinta

Lisätiedot

SEPA - Design Patterns

SEPA - Design Patterns SEPA - Design Patterns Kimmo Karlsson, 51066R & Antti Pirinen, 51406N 15. maaliskuuta 2005 1 Sisältö 1. Sisältö 2. Johdanto 3. Käyttöönotto 4. Käyttökokemukset 2 Johdanto Valitsemamme ohjelmistonkehityskäytäntö

Lisätiedot

www.solita.fi solita@solita.fi

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

Koodimalli Code Model

Koodimalli Code Model Koodimalli Code Model Luento 6 10.10.2017 CSM14101 Ohjelmistoarkkitehtuurit 1 Oppimistavoitteet Koodimalli Arkkitehtuurisuunnittelun ja implementaation välinen kuilu ja sen hallitseminen Arkkitehtuuria

Lisätiedot

UML:n yleiskatsaus. UML:n osat:

UML:n yleiskatsaus. UML:n osat: UML:n yleiskatsaus - voidaan hyödyntää hyvin laajasti. - sopii liiketoimintamallinnukseen, ohjelmistomallinnukseen sen jokaiseen vaiheeseen tai minkä tahansa pysyviä ja muuttuvia ominaisuuksia sisältävän

Lisätiedot

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena

Ohjelmointikielet ja -paradigmat 5op. Markus Norrena Ohjelmointikielet ja -paradigmat 5op Markus Norrena Ko#tehtävä 4 Viimeistele "alkeellinen kuvagalleria". Käytännössä kaksi sivua Yksi jolla voi ladata kuvia palvelimelle (file upload) Toinen jolla ladattuja

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

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

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia tehtäviä:

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

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

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia.

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia. Tietokantasuunnittelusta Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia toistuva tieto vie tilaa ylläpito muodostuu hankalaksi ylläpito-operaatioilla

Lisätiedot

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä

812341A Olio-ohjelmointi, IX Olioiden välisistä yhteyksistä 2016 IX Olioiden välisistä yhteyksistä Sisältö 1. Johdanto 2. Kytkentä 3. Koheesio 4. Näkyvyydestä 2 Johdanto n Ohjelmassa syntyy kytkentöjä olioiden välille Toivottuja ja epätoivottuja n Näkyvyys vaikuttaa

Lisätiedot

Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa

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

13/20: Kierrätys kannattaa koodaamisessakin

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

6. Arkkitehtuurityylit

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

Lisätiedot

Ohjelmistojen mallintaminen Ohjelmistoarkkitehtuuri Harri Laine 1

Ohjelmistojen mallintaminen Ohjelmistoarkkitehtuuri Harri Laine 1 Ohjelmistojen mallintaminen Ohjelmistoarkkitehtuuri 25.11.2008 Harri Laine 1 Buschmann et al: Software architecture is a description of the subsystems and components of a software system and relations

Lisätiedot

Suunnitteluratkaisut ja niiden arviointi sulautetuissa järjestelmissä

Suunnitteluratkaisut ja niiden arviointi sulautetuissa järjestelmissä 1 Suunnitteluratkaisut ja niiden arviointi sulautetuissa järjestelmissä Kai Koskimies Tampereen teknillinen yliopisto Taustaa: Sulake projekti 2008-2009 2 Osallistujat Areva T&D John Deere Kone Sandvik

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

Action Request System

Action Request System Action Request System Manu Karjalainen Ohjelmistotuotantovälineet seminaari HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos 25.10.2000 Action Request System (ARS) Manu Karjalainen Ohjelmistotuotantovälineet

Lisätiedot

LUKU 5: SUUNNITTELU. Suunnitteluun liittyviä käsitteitä:

LUKU 5: SUUNNITTELU. Suunnitteluun liittyviä käsitteitä: LUKU 5: SUUNNITTELU Suunnitteluun liittyviä käsitteitä: abstrahointi (abstraction) epäolennaisten yksityiskohtien häivyttäminen, informaation piilottaminen (information hiding) rakenteen osan (moduulin)

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

6. Arkkitehtuurityylit

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

Lisätiedot

2. Olio-ohjelmoinnin perusteita 2.1

2. Olio-ohjelmoinnin perusteita 2.1 2. Olio-ohjelmoinnin perusteita 2.1 Sisällys Luokat ja oliot. Käsitteet, luokat ja oliot. Attribuutit, olion tila ja identiteetti. Metodit ja viestit. 2.2 Luokat ja oliot Olio-ohjelmoinnin keskeisimpiä

Lisätiedot

Osio 4: Tietovirrat. Properties- eli ominaisuustiedostot Logger: lokitietojen käsittely

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

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

Rajapinnasta ei voida muodostaa olioita. Voidaan käyttää tunnuksen tyyppinä. Rajapinta on kuitenkin abstraktia luokkaa selvästi abstraktimpi tyyppi. 11. Rajapinnat 11.1 Sisällys Johdanto. Abstrakti luokka vai rajapinta? Rajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen

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

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

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

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

Arkkitehtuurien tutkimus Outi Räihä. OHJ-3200 Ohjelmistoarkkitehtuurit. Darwin-projekti. Johdanto

Arkkitehtuurien tutkimus Outi Räihä. OHJ-3200 Ohjelmistoarkkitehtuurit. Darwin-projekti. Johdanto OHJ-3200 Ohjelmistoarkkitehtuurit 1 Arkkitehtuurien tutkimus Outi Räihä 2 Darwin-projekti Darwin-projekti: Akatemian rahoitus 2009-2011 Arkkitehtuurisuunnittelu etsintäongelmana Geneettiset algoritmit

Lisätiedot

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia

Lisätiedot

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Sisällys. 11. Rajapinnat. Johdanto. Johdanto Sisällys 11. ajapinnat. bstrakti luokka vai rajapinta? ajapintojen hyötyjä. Kuinka rajapinnat määritellään ja otetaan käyttöön? Eläin, nisäkäs, kissa ja rajapinta. Moniperiytyminen rajapintojen avulla.

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

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

Tietorakenteet ja algoritmit

Tietorakenteet ja algoritmit Tietorakenteet ja algoritmit Kurssin sisältö pääpiirteittäin Tarvittavat pohjatiedot Avainsanat Abstraktio Esimerkkiohjelman tehtäväkuvaus Abstraktion käyttö tehtävässä Abstrakti tietotyyppi Hyötyjä ADT:n

Lisätiedot

Sovellusarkkitehtuurit

Sovellusarkkitehtuurit HELIA TiKo-05 1 (9) Sovellusarkkitehtuurit ODBC (Open Database Connectivity)... 2 JDBC (Java Database Connectivity)... 5 Middleware... 6 Middleware luokittelu... 7 Tietokanta -middleware... 8 Tapahtumamonitorit

Lisätiedot

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio

Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi, dynaaminen mallintaminen, yhteistoimintakaavio ja sekvenssikaavio Analyysi Tarkentaa ja jäsentää vaatimusmäärittelyä, vastaa kysymykseen MITÄ järjestelmän tulisi tehdä. Suoritetaan seuraavia

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

T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät

T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät T-76.611 Ohjelmistojen määrittely- ja suunnittelumenetelmät Software design and specification methods Kurssin henkilökunta ja sponsori Luennoitsija DI Antti Karanta, Napa Oy www.napa.fi Assistentti TkL

Lisätiedot

Palveluperustaiset arkkitehtuurityylit

Palveluperustaiset arkkitehtuurityylit Palveluperustaiset arkkitehtuurityylit Mukana palvelun tarjoajia ja palvelun käyttäjiä Perusajatuksena tyypillisesti tarjota johonkin resurssiin liittyviä palveluita 1 Asiakas-palvelin -arkkitehtuurit

Lisätiedot

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest).

Virtualisointiympäristössä on kolme pääosaa: isäntä (host), virtualisointikerros ja vieras (guest). 1 Virtualisoinnin avulla voidaan purkaa suora linkki suoritettavan sovelluksen (tai käyttöjärjestelmän tms.) ja sitä suorittavan laitteiston välillä. Näin saavutetaan joustavuutta laitteiston käytössä.

Lisätiedot

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia Tehtävä 1 Tehtävässä 1 mallinnettiin Monopolipeliä. Alla olevassa esimerkissä peliin liittyy aina 2 noppaa, peliä pelataan pelilaudalla,

Lisätiedot

Agenda. Läpäisyvaatimukset Henkilökunta Luennot ja aikataulu Kurssimateriaali Harjoitustyöt Demoharjoitus Tentti ja arvostelu Muuta?

Agenda. Läpäisyvaatimukset Henkilökunta Luennot ja aikataulu Kurssimateriaali Harjoitustyöt Demoharjoitus Tentti ja arvostelu Muuta? OHJ-4301 Sulautettu Ohjelmointi (http://www.cs.tut.fi/~sulo/) 5op, to 12-14, 14, TB 109 Arto Salminen, arto.salminen@tut.fi Agenda Läpäisyvaatimukset Henkilökunta Luennot ja aikataulu Kurssimateriaali

Lisätiedot

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Opintojakso TT00AA11 Ohjelmoinnin jatko (Java) Tavoite Opiskelija ymmärtää olio-ohjelmoinnin problematiikan. Opiskelija osaa määritellä ja käyttää itse

Lisätiedot

Kehyspohjainen ohjelmistokehitys

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

Lisätiedot

Ohjelmistojen mallintaminen. Luento 11, 7.12.

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

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS CT10A4000 - Kandidaatintyö ja seminaari Alkuraportti Avoimen lähdekoodin käyttö WWW-sovelluspalvelujen toteutuksessa Lappeenranta, 30.3.2008,

Lisätiedot

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä 582104 Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä 1 Luokkamallin lisäpiirteitä Erilaiset yhteystyypit kooste kompositio Muita luokkien välisiä suhteita riippuvuudet periytyminen eli luokkahierarkia

Lisätiedot

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen

Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari Korhonen Tietorakenteet ja algoritmit Johdanto Lauri Malmi / Ari 1 1. JOHDANTO 1.1 Määritelmiä 1.2 Tietorakenteen ja algoritmin valinta 1.3 Algoritmit ja tiedon määrä 1.4 Tietorakenteet ja toiminnot 1.5 Esimerkki:

Lisätiedot

Web-palvelu voidaan ajatella jaettavaksi kahteen erilliseen kokonaisuuteen: itse palvelun toiminnallisuuden toteuttava osa ja osa, joka mahdollistaa k

Web-palvelu voidaan ajatella jaettavaksi kahteen erilliseen kokonaisuuteen: itse palvelun toiminnallisuuden toteuttava osa ja osa, joka mahdollistaa k 1 Web-palvelu voidaan ajatella jaettavaksi kahteen erilliseen kokonaisuuteen: itse palvelun toiminnallisuuden toteuttava osa ja osa, joka mahdollistaa ko. toiminnallisuuden hyödyntämisen Web-palveluna.

Lisätiedot

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin

Olio-ohjelmointi: Luokkien toteuttaminen. Jukka Juslin Olio-ohjelmointi: Luokkien toteuttaminen Jukka Juslin Luokkien kirjoittaminen Tähän mennessä on käytetty valmiiksi määritettyjä luokkia. Nyt opimme kirjoittamaan omia luokkia olioiden kuvaamiseksi Seuraavaksi

Lisätiedot

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. II Johdanto olio-ohjelmointiin 812347A Olio-ohjelmointi, 2015 syksy 2. vsk II Johdanto olio-ohjelmointiin Sisältö 1. Abstraktiosta 2. Olio-ohjelmoinnin historiaa 3. Olioparadigmasta 4. Peruskäsitteiden esittely 2 II.1 Abstraktiosta

Lisätiedot

Arkkitehtuurityylejä ja patterneja

Arkkitehtuurityylejä ja patterneja Arkkitehtuurityylejä ja patterneja Luento 4 11.9.2014 581358 Ohjelmistoarkkitehtuurit 1 Oppimistavoitteet Esimerkkejä yleisesti käytetyistä arkkitehtuuripatterneista ja -tyyleistä Muutama käydään läpi

Lisätiedot

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

582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus

582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus 582203 Tietokantasovellus (4 op) - Web-sovellukset ja niiden toteutus Sisältö Mikä on web-sovellus? Selaimen rooli web-sovelluksessa Palvelimen rooli web-sovelluksessa Aineistopyynnöt Tiedon välittäminen

Lisätiedot

Ohjelmistojen mallintaminen, kesä 2009

Ohjelmistojen mallintaminen, kesä 2009 582104 Ohjelmistojen mallintaminen, kesä 2009 1 Ohjelmistojen mallintaminen Software Modeling Perusopintojen pakollinen opintojakso, 4 op Esitietoina edellytetään oliokäsitteistön tuntemus Ohjelmoinnin

Lisätiedot

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu

HELIA 1 (21) Outi Virkki Tietokantasuunnittelu HELIA 1 (21) Luento 4.1 Oliot ja Relaatiot... 2 Relaatiomalli... 2 Oliomalli... 2 Termejä... 4 Yhteensovituksen 3 tapaa... 5 1) Oliot relaatioina / tauluina ja RDBMS... 6 Olioluokka... 7 Olion identiteetti...

Lisätiedot

TIE Ohjelmistojen suunnittelu

TIE Ohjelmistojen suunnittelu TIE-20200 Ohjelmistojen suunnittelu Luento 10: olioiden rakentelumalleja ja SOLID TIE-20200 Samuel Lahtinen 1 Ajankohtaista Harjoitustyössä välinäyttöjen ajanvaraus auki Viikkoharjoitukset ohi Ohjelmassa

Lisätiedot

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa

WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa WWW ja tietokannat WWW-sivut HTML-kielellä esitettyä hypertekstiaineistoa tekstiä, kuvia, hyperlinkkejä Staattiset sivut kirjoitettu kerran, muuttaminen käsin ongelmana pysyminen ajantasalla Ylläpito hankalaa,

Lisätiedot

ELM GROUP 04. Teemu Laakso Henrik Talarmo

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

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

Käyttäjien tunnistaminen ja käyttöoikeuksien hallinta hajautetussa ympäristössä www.niksula.cs.hut.fi/~jjkankaa// Demosovelluksen tekninen määrittely v. 0.6 Päivitetty 11.12.2000 klo 20:26 Mickey Shroff 2 (12) Dokumentin versiohistoria Versio Päivämäärä Tekijä / muutoksen tekijä Selite

Lisätiedot

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

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

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta Hajautettu tietokanta Jokainen hajautettu tietokanta muodostaa oman kokonaisuutensa Loogisesti yhtenäinen data on hajautettu tietokantoihin (eri

Lisätiedot

PlanMan Project projektihallintaohjelmiston perustoimintojen ohjeistus

PlanMan Project projektihallintaohjelmiston perustoimintojen ohjeistus PlanMan Project projektihallintaohjelmiston perustoimintojen ohjeistus PlanMan Project ohjelmiston valmistaja PlanMan Oy 14.1.2017 Asko Saarenpää Työskentelyn aloitus Työpöytä-valikon kautta voi valita

Lisätiedot

HELIA 1 (17) Outi Virkki Tiedonhallinta

HELIA 1 (17) Outi Virkki Tiedonhallinta HELIA 1 (17) Luento 4.1 Looginen suunnittelu... 2 Relaatiomalli... 3 Peruskäsitteet... 4 Relaatio... 6 Relaatiokaava (Relation schema)... 6 Attribuutti ja arvojoukko... 7 Monikko... 8 Avaimet... 10 Avain

Lisätiedot