Ohjelmistoarkkitehtuurit Komponentit Kevät 2014

Samankaltaiset tiedostot
3. Komponentit ja rajapinnat

Ohjelmistoarkkitehtuurit kevät

Komponentit ja rajapinnat

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit Komponentit Kevät 2016

3. Komponentit ja rajapinnat

3. Software components and interfaces

Ohjelmistoarkkitehtuurit, syksy

Ohjelmistoarkkitehtuurit. Kevät

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

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

TIE Ohjelmistojen suunnittelu. Luento 8..9: moniperintä

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

TIE Ohjelmistojen suunnittelu

TIE Ohjelmistojen suunnittelu

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

TIE Ohjelmistojen suunnittelu

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

13/20: Kierrätys kannattaa koodaamisessakin

Rajapinta (interface)

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

Ohjelmistoarkkitehtuurit. Syksy 2008

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Ohjelmistoarkkitehtuurit. Syksy 2010

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

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

2 Ohjelmistoarkkitehtuurien kuvaus

Koodimalli Code Model

Ohjelmistojen mallintaminen. Luento 11, 7.12.

12. Kehysarkkitehtuurit

11. Kehysarkkitehtuurit

Ohjelmistojen suunnittelu

Viestinvälitysarkkitehtuurit Lähtökohta:

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

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

TIE Ohjelmistojen suunnittelu

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

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Ohjelmistoarkkitehtuurin suunnittelu

Ohjelmistoarkkitehtuurit. Kevät 2014 Kertausta

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

Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa

Viestinvälitysarkkitehtuurit

Uudelleenkäytön jako kahteen

TIE Ohjelmistojen suunnittelu

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

TIE Ohjelmistojen suunnittelu. Viimeinen luento: kertaus

Ohjelmistoarkkitehtuurit. Syksy 2007

Järjestelmäarkkitehtuuri (TK081702) Pilvipalvelut. Pilvipalvelut - lähtökohtia

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

UML:n yleiskatsaus. UML:n osat:

P e d a c o d e ohjelmointikoulutus verkossa

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

10. Muunneltavuuden hallinta: variaatiopisteet

Ohjelmistoarkkitehtuurit. Kevät 2014

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

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

9. Muunneltavuuden hallinta

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

Ohjelmistojen mallintaminen luokkamallin lisäpiirteitä

Kehyspohjainen ohjelmistokehitys

8. Kehysarkkitehtuurit

1. Olio-ohjelmointi 1.1

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Sisällys. Mitä on periytyminen? Yksittäis- ja moniperiytyminen. Oliot ja perityt luokat. Periytymisen käyttö. 8.2

Osio 4: Graafinen käyttöliittymä

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

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

Mitä on periytyminen?

Ohjelmistoarkkitehtuurit kevät

Ohjelmistojen mallintaminen, mallintaminen ja UML

XPages käyttö ja edut Jarkko Pietikäinen toimitusjohtaja, Netwell Oy

Suunnittelumalleja, MVC. Juha Järvensivu 2008

Järjestelmäarkkitehtuuri (TK081702) Lähtökohta. Integroinnin tavoitteet

10. Muunneltavuuden hallinta: variaatiopisteet

Ohjelmistojen mallintaminen, kesä 2010

815338A Ohjelmointikielten periaatteet

Ohjelmistoarkkitehtuurin suunnitteluperiaatteita

Ohjelmointi 2 / 2010 Välikoe / 26.3

Ohjelmistoarkkitehtuurit

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

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia


18. Abstraktit tietotyypit 18.1

KADA (Drupal 7) migraatio uuteen (versioon) webiin

Aalto Yliopisto T Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

Copyright Observis Oy All rights reserved. Observis Oy Ville Kanerva, CTO Heikki Isotalus, COO Datasta tietoa

Muunneltavuuden hallintaa Kevät 2016 Samuel Lahtinen. Ohjelmistoarkkitehtuurit 2016

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Rutiinin muodostaminen. 2. Rutiinin muodostaminen. specification) Määrittely (specification( Määrittelyn osapuolet. Hyvän ohjelman tunnusmerkit

OA:n kanoninen malli I

Ohjelmistotuotanto vs. muut insinööritieteet. (Usein näennäinen) luotettavuus ja edullisuus

10. Tuoterunkoarkkitehtuurit

T Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

Muutamia peruskäsitteitä

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

TIE Ohjelmistojen suunnittelu

Transkriptio:

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. 5.2. 6.2. 12.2. 6.2. 19.2. 20.2. 26.2. 27.2. luento: komponentit, komponenttien dokumentaatio yms. luento: suunnittelumallit, komponenttien vuorovaikutus vierailuluento: Mika Siikarla - arkkitehdin arkipäivää luento: harjoitustyön esittely, arkkitehtuurityylit luento: arkkitehtuurityylit paperi luettavaksi/sessio katseltavaksi: lääketieteellistä tietojärjestelmää...? luento: ripaus pilveä, viestipohjaisuutta, vähän liikkuvaa konetta jne. paperi luettavaksi/sessio katseltavaksi: pattern-settiä Janne Sinivirta: Lean Architecture luento: arkkitehtuurin arvionti, DCAR & ATAM harjoitustyön välinäyttö/välipalautus, ei viikkoharjoituksia paperi luettavaksi/sessio katseltavaksi:? luento: muunneltavuuden hallinta, ylläpito

Komponentit ja rajapinnat Komponenttien idea: ohjelmistotuotannon rationalisointi Mikä on ohjelmistokomponentti? Komponentit ohjelmistoyksikköinä Rajapinnat Komponenttien räätälöinti Yhteenvetoa 4

Komponenttien idea: ohjelmistotuotannon rationalisointi Tuotteiden rakentaminen komponenteista tuotteista tulee luotettavampia tuotteita on nopeampi rakentaa rakentajia on helpompi kouluttaa komponenttimarkkinat ja kilpailu alentavat hintoja Sovelletaan lähes kaikilla tekniikan aloilla 5

Harjoitus: Anna 5 ominaisuutta, jotka ovat hyvällä ohjelmistokomponentilla 6

Sovellusten koostaminen komponenteista Visio: sovellus kootaan olemassaolevista komponenteista Työkaluja: skriptit, XML, visuaaliset koostamistyökalut 7

Jotain muuta http://scratch.mit.edu/ http://www.cs.ioc.ee/cocovila/download.php 8

Metson työkalu prosessiautomaatioon Mika Karaila 9

3.2 Mikä on ohjelmistokomponentti? Komponentti = itsenäinen ohjelmistoyksikkö, joka tarjoaa palveluja hyvin määritellyn rajapinnan kautta Szyperski: A software component is a unit of composition with contractually specified interfaces and explicit context dependencies only. A software component can be deployed independently and is subject to composition by third parties. 10

Komponenttien ominaisuuksia Itsenäisyyden aste Komponentit yleensä olettavat jonkin infrastruktuurin/ajoaikaisen tuen Komponentti voi olettaa tietyn palveluympäristön (vaaditut rajapinnat) Käyttöönottotapa Voidaan ottaa käyttöön kehitysaikana, linkitysaikana, käynnistysaikana tai käytön Koko aikana (lähdekoodisena tai binäärisenä) Vaihtelee oliosta alijärjestelmään Standardointi Rajapintojen standardointi sovellusalueella, infrastruktuurin standardointi Teknologia-spesifit ominaisuudet Esimerkiksi reflektio-ominaisuudet, metadata 11

x.3 Komponentit ohjelmistoyksikköinä Arkkitehtuurin perusyksikkö: Toiminnallisuuden yksikkö mikä osa vastaa tietystä toiminnallisuudesta? Uudelleenkäytön yksikkö mikä osat ovat yhteisiä eri tuotteissa? Tuotekonfiguraation yksikkö mitä osia kuuluu tuotteeseen? Käyttöönoton yksikkö mitkä osat voidaan ottaa erikseen käyttöön? Muuntelun yksikkö mitkä osat voidaan vaihtaa toisiksi? Ulkopuolisen kehityksen yksikkö mitkä osat voidaan saada muualta? Työnjaon yksikkö mitkä osat tuotetaan tietyillä henkilöillä/yksiköillä? 12

Rajapinnat Komponentti/rajapinta-käsitteen kehittyminen olioparadigmaan Aliohjelmat: toiminnan abstrahointi Moduulit: tiedon piilotus Luokat: laajennettavat moduulit Abstraktit luokat: luokat ilman toteutusta Moniperiytyminen: useita abstraktioita samalle toteutukselle Komponentit: erilliset rajapinnat 13

Aliohjelmat: toiminnan abstrahointi A B C kutsu kutsu kutsu aliohjelmakirjasto Palvelun kutsumuoto (signature) Palvelun toteutus 14

Moduulit: tiedon piilotus rajapinta kutsu M tietorakenteet A B C Esim. Ada 15

Luokat: laajennettavat moduulit M2 T1 M2 D T2 M1 A B C T1 A B C D T2 E F M2 sisältää myös M1-osan: E F 16

Abstraktit yliluokat: luokat ilman toteutusta M1 M2 T2 M2 D T2 Ei toteutusta D E F E F 17

Moniperiytyminen: useita abstraktiota samalle toteutukselle M0 M1 Ei toteutusta M2 T2 Ei toteutusta D E F 18

Komponentit: erilliset rajapinnat M1 M2 T2 D E F 19

Rajapinnat itsenäisinä ohjelmayksikköinä Komponentti A Komponentti B Rajapinta 1 Rajapinta 2 Rajapinta 3 Rajapinta 4 20

Kysyttävää?

Tarjotut ja vaaditut rajapinnat Komponentti voi olla kahdessa eri suhteessa rajapintaan: Komponentin tarjottu rajapinta Komponentti tarjoaa rajapinnan mukaiset palvelut Komponentin vaadittu rajapinta Komponentti tarvitsee rajapinnan mukaiset palvelut 22

Tarjotut ja vaaditut rajapinnat UML 2.x:ssa Car PowerSource vaadittu rajapinta PowerSource tarjottu rajapinta Engine PowerSource Car Engine 23

Tarjotut ja vaaditut rajapinnat UML 2.x:ssa Car PowerSource vaadittu rajapinta PowerSource tarjottu rajapinta Engine PowerSource Car Engine 24

Toteutus Javalla interface PowerSource { void start(); int temperature(); void stop(); } class Engine implements PowerSource... {... public void start() {...} public int temperature() {...} public void stop() {...} } class Car... {... private PowerSource eng;... public void seteng(powersource e) { eng = e; } public void run() {... eng.start();... eng.stop();... } } 25

Portit UML 2.x:ssa Vuorovaikutuksen mahdollistava kontaktipiste komponentin ja sen ympäristön välillä PowerSource PowerSource Portti Engine host Engine Warnings Warnings 26

Portit UML 2.x:ssa Porteilla voi olla lukumääräsuhteita ja nimi (kertoo, että kullakin komponentin instanssilla voi olla lukumääräsuhteen osoittama määrä portteja) request Portti port_name [multiplicities] Server response 27

Komponenttikaavioista Komponentin sisäisen toteutuksen kuvaaminen, komponentteja komponentissa (voidaan kuvata riippuvuuksien avulla kutsurakennettakin). http://www.sei.cmu.edu/reports/04tr008.pdf 28

Rajapintojen sopimuspohjainen määrittely esiehto(tuloehto): täytyy päteä kun palvelua kutsutaan palvelun rajapinta design-by-contract Palvelun pyytäjä Palvelun tarjoaja Esi- ja jälkiehdot (Tulo- ja jättöehdot) määrittelevät palvelun merkityksen sallivat osapuolten vaihtamisen, kunhan tulo- ja jättöehdot pysyvät voimassa määräävät tarkistusvastuun osapuolten välillä palvelun tarjoaja joko täyttää sopimuksen tai aiheuttaa poikkeuksen Jälkiehto(jättöehto): täytyy päteä kun palvelu on suoritettu, olettaen että tuloehdot olivat voimassa kun palvelu aloitettiin 29

Periytyminen & tulo- ja jättöehdot pre' post' pre post A public oper(...) pre post pre' pre post' post B public oper(...) pre' post' pre pre' post' post C pre post' pre' post D Mikä on oikea vaihtoehto (A,B,C,D)? 30

Esimerkki Oletetaan, että teet sopimuksen verhoilijan kanssa: sinä toimitat kankaan, tuolin, maksun ja viinapullon, ja verhoilija toimittaa kuukauden kuluessa verhoillun tuolin tietyin laatukriteerein. Verhoilija sairastuu ja hän ehdottaa että työn tekee toinen verhoilija. Tällä on kuitenkin erilaiset toimintatavat. Millaisia voivat olla uuden verhoilijan toimintatavat, jotta verhoilijan vaihto olisi sinulle merkityksetön? 31

Esimerkki (jatkuu) Esimerkiksi: Onko ok, että uusi verhoilija haluaa tuolin, kankaan ja maksun, ja toimittaa verhoillun tuolin viikon sisään? Onko ok, että uusi verhoilija haluaa tuolin, kankaan, maksun,viinapullon ja lipun Tapparan matsiin, ja toimittaa verhoillun tuolin kahden kuukauden kuluttua? 32

Esi- ja jälkiehdoista Oliosuunnittelusta tuttuja SOLID-sääntöjä voi soveltaa myös komponenttien kanssa. (esim. Liskov s substitution Principle, Open-closed P., interface segregation P, Dependency Inversion) Komponentin kuvauksessa mukana myös riippuvuudet rajapintoihin (+palvelun kuvaus, mitä ja milloin käytetään). Ei-toiminnalliset vaatimukset, kuten suorituskyky (vasteaika, kokonaissuorituskyky, kuormituksen kesto), tärkeitä, jos komponentteja aiotaan käyttää tai erikoistaa. 33

Kysyttävää?

3.6 Komponenttien räätälöinti komponentin (alku)tilan muuttaminen vaadittujen rajapintojen toteutuksen antaminen tai muuttaminen aliluokittaminen 35

Komponentin alkutilan muuttaminen Client :Comp ServicesI setproperty(...) Comp create setproperty(...) use Komponentin käyttäjä asettaa komponentin alkutilan käyttötilanteen mukaiseksi ennen käyttöä 36

Vaadittujen rajapintojen toteutuksen antaminen tai muuttaminen Host str.part( ); operation operation StrategyA StrategyInterface part() Komponentin käyttämä palvelu vaihdetaan toiseksi kehitys- tai ajoaikana (staattisesti tai dynaamisesti) part() 37

Operaatiokohtainen räätälöinti display Button display brd.borderdrawing( ); CompanyBorder BorderStrategy borderdrawing borderdrawing koskee yksittäistä toimintoa voidaan vaihtaa ajoaikana (jos haluttu toteutus on olemassa) 38

Strategia (Strategy) suunnittelumalli operation Host operation part() str.part( ); StrategyInterface part() StrategyA 39

Aliluokittaminen Button Komponenttiluokka erikoistetaan aliluokittamalla sovelluksen tarpeiden mukaisesti (staattinen räätälöinti) CompanyButton 40

Särkyvän yliluokan ongelma Kirjasto komponentti Comp Viaton" muutos alkuperäiseen komponenttiin voi tehdä räätälöidystä komponentista toimimattoman Räätälöity komponentti Custom Fragile base class problem 41

Esimerkki (1) <<interface>> Container addelement(object) addcontainer(container) List addcontainer: {...addelement(...);... } <<interface>> CountedContainer getcount() CountedList addelement: { super.addelement(...); counter++; } 42

Esimerkki (2) <<interface>> Container addelement(object) addcontainer(container) List addelement:iä ei enää kutsuta! addcontainer: {...} <<interface>> CountedContainer getcount() CountedList addelement: { super.addelement(...); counter++; } 43

Haittoja Särkyvän yliluokan ongelma: komponentin periyttäminen voi olla riskialtista Lisensointiongelmat (Open Source-lisenssit vs. kaupalliset) Rajapinnan muuttuminen voi rikkoa rajapintaa käyttävät komponentit Muutoksia komponentteihin vaikea saada, vaikkei rajapintaa muutettaisikaan Järjestelmän muuttaminen ei ole ketterää Komponenttien käyttötapa voi poiketa toteuttajan visiosta muutos toteutuksessa voi särkeä sitä käyttäviä ohjelmistoja 44

3.7 Yhteenvetoa Komponentit ovat arkkitehtuurin perusyksiköitä, jotka liitetään toisiinsa tarjottujen ja vaadittujen rajapintojen kautta Rajapintojen tulisi määritellä paitsi kutsumuoto myös sopimus rajapinnan käytöstä (tulo- ja jättöehdot) Komponentteja voidaan räätälöidä sen alkutilaa muuttamalla, vaihtamalla sen vaadittuihin rajapintoihin liittyviä muita komponentteja tai periyttämällä siitä erikoistettu komponentti 45

Kysyttävää?