3. Komponentit ja rajapinnat

Samankaltaiset tiedostot
Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit kevät

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

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

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

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

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

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

Rajapinta (interface)

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

13/20: Kierrätys kannattaa koodaamisessakin

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

12. Kehysarkkitehtuurit

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

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

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

2 Ohjelmistoarkkitehtuurien kuvaus

Viestinvälitysarkkitehtuurit

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

1. Olio-ohjelmointi 1.1

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

P e d a c o d e ohjelmointikoulutus verkossa

18. Abstraktit tietotyypit 18.1

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

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

11. Kehysarkkitehtuurit

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Koodimalli Code Model

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

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

Uudelleenkäytön jako kahteen

10. Muunneltavuuden hallinta: variaatiopisteet

Ohjelmistoarkkitehtuurit. Kevät Johannes Koskinen.

Pino S on abstrakti tietotyyppi, jolla on ainakin perusmetodit:

2. Olio-ohjelmoinista lyhyesti 2.1

Ohjelmistojen suunnittelu

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

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

Ohjelmistoarkkitehtuurin suunnittelu

Ohjelmistotekniikan menetelmät, suunnittelumalleja

Osio 4: Graafinen käyttöliittymä

Java kahdessa tunnissa. Jyry Suvilehto

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Ohjelmistotekniikka - Luento 13

UML ja luokkien väliset suhteet

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

812341A Olio-ohjelmointi, I Johdanto

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

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

815338A Ohjelmointikielten periaatteet

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

Ohjelmistoarkkitehtuurit Johannes Koskinen.

8. Kehysarkkitehtuurit

4. Komponenttien vuorovaikutus

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

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

11. Tuoterunkoarkkitehtuurit

Suunnittelumalleja, MVC. Juha Järvensivu 2008

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

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

Ohjelmointi 2 / 2010 Välikoe / 26.3

Ohjelmistoarkkitehtuurit. Kevät 2014 Kertausta

7. Tuoterunkoarkkitehtuurit

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

Javan perusteita. Janne Käki

2. Olio-ohjelmoinnin perusteita 2.1

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Muunneltavuuden hallinta (Variability management):

Kehyspohjainen ohjelmistokehitys

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

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

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

JAVA-OHJELMOINTI 3 op A274615

Ohjelmistoarkkitehtuurit. Kevät 2014

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2007

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


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

Viestinvälitysarkkitehtuurit Lähtökohta:

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit

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

Java UI-komponentit (JTable) Juha Järvensivu 2007

Ohjelmoinnin jatkokurssi, kurssikoe

UML:n yleiskatsaus. UML:n osat:

TIE Ohjelmistojen suunnittelu

4. Komponenttien vuorovaikutus

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

4. Olio-ohjelmoinista lyhyesti 4.1

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

KADA (Drupal 7) migraatio uuteen (versioon) webiin

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

Mitä on periytyminen?

Transkriptio:

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 Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1

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 Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 2

Harjoitus: Anna 5 ominaisuutta, jotka ovat hyvällä ohjelmistokomponentilla Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 3

Sovellusten koostaminen komponenteista Visio: sovellus kootaan olemassaolevista komponenteista Työkaluja: skriptit, XML, visuaaliset koostamistyökalut Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 4

Esimerkki: BeanBox (Sun) Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 5

Metson työkalu prosessiautomaatioon Mika Karaila Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 6

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. Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 7

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

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ä? Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 9

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 Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 10

Aliohjelmat: toiminnan abstrahointi A B C kutsu kutsu kutsu aliohjelmakirjasto Palvelun kutsumuoto (signature) Palvelun toteutus Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 11

Moduulit: tiedon piilotus rajapinta kutsu M tietorakenteet A B C Esim. Ada Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 12

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 Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 13

Abstraktit yliluokat: luokat ilman toteutusta M1 M2 T2 M2 D T2 Ei toteutusta D E F E F Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 14

Moniperiytyminen: useita abstraktiota samalle toteutukselle M0 M1 Ei toteutusta M2 T2 Ei toteutusta D E F Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka

Komponentit: erilliset rajapinnat M1 M2 T2 D E F Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 16

Rajapinnat itsenäisinä ohjelmayksikköinä Komponentti A Komponentti B Rajapinta 1 Rajapinta 2 Rajapinta 3 Rajapinta 4 Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 17

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 Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 18

Tarjotut ja vaaditut rajapinnat UML 2.x:ssa PowerSource tarjottu rajapinta Car Engine PowerSource vaadittu rajapinta Car PowerSource Engine Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 19

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();... } } Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 20

Portit UML 2.x:ssa Vuorovaikutuksen mahdollistava kontaktipiste komponentin ja sen ympäristön välillä PowerSource PowerSource Portti Engine host Engine Warnings Warnings Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 21

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 Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 22

3.6 Komponenttien räätälöinti komponentin (alku)tilan muuttaminen vaadittujen rajapintojen toteutuksen antaminen tai muuttaminen aliluokittaminen Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 23

Komponentin alkutilan muuttaminen Client :Comp ServicesI setproperty(...) Comp create setproperty(...) use Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 24

Vaadittujen rajapintojen toteutuksen antaminen tai muuttaminen ActionListener Button AppLogic ActionListener XLogic Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 25

Strategia Host str.part( ); operation operation StrategyA StrategyInterface part() part() Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 26

Operaatiokohtainen räätälöinti: Strategia display Button display brd.borderdrawing( ); CompanyBorder BorderStrategy borderdrawing borderdrawing koskee yksittäistä toimintoa voidaan vaihtaa ajoaikana (jos haluttu toteutus on olemassa) Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 27

Aliluokittaminen Button CompanyButton Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 28

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 Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 29

Esimerkki (1) <<interface>> Container addelement(object) addcontainer(container) List addcontainer: {...addelement(...);... } <<interface>> CountedContainer getcount() CountedList addelement: { super.addelement(...); counter++; } Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 30

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

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 Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 32