Ohjelmistoarkkitehtuurit kevät

Samankaltaiset tiedostot
3. Komponentit ja rajapinnat

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit kevät

Komponentit ja rajapinnat

Ohjelmistoarkkitehtuurit Komponentit Kevät 2014

Ohjelmistoarkkitehtuurit Komponentit Kevät 2016

3. Komponentit ja rajapinnat

3. Software components and interfaces

Ohjelmistoarkkitehtuurit, syksy

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

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

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

Rajapinta (interface)

12. Kehysarkkitehtuurit

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

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

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

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

13/20: Kierrätys kannattaa koodaamisessakin

11. Kehysarkkitehtuurit

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

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

8. Kehysarkkitehtuurit

Viestinvälitysarkkitehtuurit Lähtökohta:

1. Olio-ohjelmointi 1.1

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

2 Ohjelmistoarkkitehtuurien kuvaus

P e d a c o d e ohjelmointikoulutus verkossa

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Uudelleenkäytön jako kahteen

815338A Ohjelmointikielten periaatteet

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

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

Ohjelmistokehykset ohjelmistorunkoja uudelleenkäyttö olioperustaisista ohjelmistorunko

Kehyspohjainen ohjelmistokehitys

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

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

Viestinvälitysarkkitehtuurit

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

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

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Osio 4: Graafinen käyttöliittymä

Ohjelmistoarkkitehtuurit Johannes Koskinen.

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

Koodimalli Code Model

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

18. Abstraktit tietotyypit 18.1

Johdanto. Olio (Object) Luokka (Class) Olion kuvaaminen

Ohjelmistotekniikan menetelmät, suunnittelumalleja

Ohjelmistojen suunnittelu


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

4. Komponenttien vuorovaikutus

UML:n yleiskatsaus. UML:n osat:

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Java kahdessa tunnissa. Jyry Suvilehto

812341A Olio-ohjelmointi, I Johdanto

Ohjelmistoarkkitehtuurit

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

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit. Kevät Johannes Koskinen.

TIE Ohjelmistojen suunnittelu

Ohjelmointi 2 / 2010 Välikoe / 26.3

private TreeMap<String, Opiskelija> nimella; private TreeMap<String, Opiskelija> numerolla;

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet

Suunnittelumalleja, MVC. Juha Järvensivu 2008

Ohjelmistoarkkitehtuurin suunnittelu

10. Muunneltavuuden hallinta: variaatiopisteet

A TIETORAKENTEET JA ALGORITMIT

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Pino S on abstrakti tietotyyppi, jolla on ainakin perusmetodit:

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

4. Komponenttien vuorovaikutus

Object Framework - One. OF-1 is a high-productive Multi-UI OpenEdge data driven development framework. Veli-Matti Korhonen

2. Olio-ohjelmoinista lyhyesti 2.1

Ohjelmistoarkkitehtuurit kevät

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

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

2. Olio-ohjelmoinnin perusteita 2.1

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

Oliosuunnittelu. Oliosuunnittelu

Ohjelmistoarkkitehtuurit. Kevät 2014 Kertausta

Mitä on periytyminen?

UML ja luokkien väliset suhteet

7. Tuoterunkoarkkitehtuurit

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistokehykset (software frameworks)

Graafinen käyttöliittymä, osa 1

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2007

10. Tuoterunkoarkkitehtuurit

Ohjelmistoarkkitehtuurit, syksy

Muutamia peruskäsitteitä

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

Ohjelmistoarkkitehtuurit. Kevät 2014

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

Analyysi, staattinen mallintaminen, kohdealueen malli ja luokkakaavio

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

Transkriptio:

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? 3.3 Komponentit ohjelmistoyksikköinä 3.4 Rajapinnat 3.6 Komponenttien räätälöinti 3.7 Yhteenvetoa 2 3.1 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 3 1

Harjoitus: Anna 5 ominaisuutta, jotka ovat hyvällä ohjelmistokomponentilla 4 Sovellusten koostaminen komponenteista Visio: sovellus kootaan olemassaolevista komponenteista Työkaluja: skriptit, XML, visuaaliset koostamistyökalut 5 Esimerkki: BeanBox (Sun) 6 2

Metson työkalu prosessiautomaatioon Mika Karaila 7 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. 8 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 aikana (lähdekoodisena tai binäärisenä) Koko Vaihtelee oliosta alijärjestelmään Standardointi Rajapintojen standardointi sovellusalueella, infrastruktuurin standardointi Teknologia-spesifit ominaisuudet Esimerkiksi reflektio-ominaisuudet, metadata 9 3

3.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ä? 10 3.4 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 11 Aliohjelmat: toiminnan abstrahointi A B C kutsu kutsu kutsu aliohjelmakirjasto Palvelun kutsumuoto (signature) Palvelun toteutus 12 4

Moduulit: tiedon piilotus rajapinta kutsu M tietorakenteet A B C Esim. Ada 13 Luokat: laajennettavat moduulit M2 T1 M2 T2 M1 A B C T1 A B C T2 E F M2 sisältää myös M1-osan: E F 14 Abstraktit yliluokat: luokat ilman toteutusta M1 M2 T2 M2 T2 Ei toteutusta E F E F 15 5

Moniperiytyminen: useita abstraktiota samalle toteutukselle M0 M1 Ei toteutusta M2 T2 Ei toteutusta E F 16 Komponentit: erilliset rajapinnat M1 M2 T2 E F 17 Rajapinnat itsenäisinä ohjelmayksikköinä Komponentti A Komponentti B Rajapinta 1 Rajapinta 2 Rajapinta 3 Rajapinta 4 18 6

Kysyttävää? 19 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 20 Tarjotut ja vaaditut rajapinnat UML 2.x:ssa PowerSource tarjottu rajapinta Car Engine PowerSource vaadittu rajapinta Car PowerSource Engine 21 7

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();... } } 22 Portit UML 2.x:ssa Vuorovaikutuksen mahdollistava kontaktipiste komponentin ja sen ympäristön välillä PowerSource PowerSource Portti Engine host Engine Warnings Warnings 23 Rajapintojen sopimuspohjainen määrittely tuloehto (esiehto): täytyy päteä kun palvelua kutsutaan palvelun rajapinta design-by-contract Palvelun pyytäjä Palvelun tarjoaja 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ättöehto (jälkiehto): täytyy päteä kun palvelu on suoritettu, olettaen että tuloehdot olivat voimassa kun palvelu aloitettiin 24 8

Periytyminen & tulo- ja jättöehdot pre pre' post post' A public oper(...) pre post pre' pre post' post B public oper(...) pre' post' pre pre' post' post C pre post' pre' post Mikä on oikea vaihtoehto (A,B,C,)? 25 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? 26 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? 27 9

Kysyttävää? 28 3.6 Komponenttien räätälöinti komponentin (alku)tilan muuttaminen vaadittujen rajapintojen toteutuksen antaminen tai muuttaminen aliluokittaminen 29 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öä 30 10

Vaadittujen rajapintojen toteutuksen antaminen tai muuttaminen ActionListener Button AppLogic ActionListener XLogic Komponentin käyttämä palvelu vaihdetaan toiseksi kehitys- tai ajoaikana (staattisesti tai dynaamisesti) 31 Operaatiokohtainen räätälöinti display Button display brd.borderrawing(); CompanyBorder borderrawing BorderStrategy borderrawing koskee yksittäistä toimintoa voidaan vaihtaa ajoaikana (jos haluttu toteutus on olemassa) 32 Strategia (Strategy) suunnittelumalli operation Host operation str.part(); StrategyA part() StrategyInterface part() 33 11

Aliluokittaminen Button Komponenttiluokka erikoistetaan aliluokittamalla sovelluksen tarpeiden mukaisesti (staattinen räätälöinti) CompanyButton 34 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 35 Esimerkki (1) <<interface>> Container addelement(object) addcontainer(container) List addcontainer: {...addelement(...);... } <<interface>> CountedContainer getcount() CountedList addelement: { super.addelement(...); counter++; } 36 12

Esimerkki (2) <<interface>> Container addelement(object) addcontainer(container) List addelement:iä ei enää kutsuta! addcontainer: {...} <<interface>> CountedContainer getcount() CountedList addelement: { super.addelement(...); counter++; } 37 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 Särkyvän yliluokan ongelma: komponentin periyttäminen voi olla riskialtista 38 Kysyttävää? 39 13