Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1



Samankaltaiset tiedostot
3. Komponentit ja rajapinnat

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

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

Rajapinta (interface)

13/20: Kierrätys kannattaa koodaamisessakin

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

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

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

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

Sisällys. 11. Rajapinnat. Johdanto. Johdanto

P e d a c o d e ohjelmointikoulutus verkossa

Viestinvälitysarkkitehtuurit

18. Abstraktit tietotyypit 18.1

Pino S on abstrakti tietotyyppi, jolla on ainakin perusmetodit:

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

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

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

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

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

12. Kehysarkkitehtuurit

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

10. Muunneltavuuden hallinta: variaatiopisteet

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

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

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

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2007

4. Komponenttien vuorovaikutus

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

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

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

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

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

UML ja luokkien väliset suhteet

11. Kehysarkkitehtuurit

Osio 4: Graafinen käyttöliittymä

Muunneltavuuden hallinta (Variability management):

Ohjelmistojen mallintaminen. Luento 11, 7.12.

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

Ohjelmistoarkkitehtuurit Johannes Koskinen.

A TIETORAKENTEET JA ALGORITMIT

9. Muunneltavuuden hallinta

Viestinvälitysarkkitehtuurit Lähtökohta:

JAVA-OHJELMOINTI 3 op A274615

Koodimalli Code Model

4. Komponenttien vuorovaikutus

8. Kehysarkkitehtuurit

Oliosuunnitteluesimerkki: Yrityksen palkanlaskentajärjestelmä

Ohjelmistoarkkitehtuurit. Kevät 2014 Kertausta

Ohjelmistojen mallintaminen viikon 4 laskareiden mallivastauksia

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

Järjestelmäarkkitehtuuri (TK081702) SOA, Service-oriented architecture SOA,

Java kahdessa tunnissa. Jyry Suvilehto

Javan perusteita. Janne Käki

1. Olio-ohjelmointi 1.1

2 Ohjelmistoarkkitehtuurien kuvaus

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Graafisen käyttöliittymän ohjelmointi Syksy 2013

Ohjelmointi 2 / 2010 Välikoe / 26.3

4 Managing component interactions

Ohjelmoinnin jatkokurssi, kurssikoe

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Pakkauksen kokoaminen

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

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

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

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

Ohjelmistotekniikan menetelmät, suunnittelumalleja

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit

Graafinen käyttöliittymä, osa 1

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

10. Muunneltavuuden hallinta: variaatiopisteet

Ohjelmistoarkkitehtuurit kevät

Ohjelmistojen suunnittelu

7 Viestipohjaisten yritysjärjestelmien suunnittelumallit

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

Software product lines

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

Integrointi. Ohjelmistotekniikka kevät 2003

Ohjelmistotekniikan menetelmät, arkkitehtuuria ja rajapintoja

Rakentamisen 3D-mallit hyötykäyttöön

Pakkauksen kokoaminen

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

Kehyksillä toteuttettujen tuotelinjojen rakenteellinen optimointi

Ohjelmistoarkkitehtuurit. Kevät 2014

11. Tuoterunkoarkkitehtuurit

Kurssin hallinta -työväline

Se mistä tilasta aloitetaan, merkitään tyhjästä tulevalla nuolella. Yllä olevassa esimerkissä aloitustila on A.

Luokkamalli LUOKKAKAAVIO. Tämän osan sisältö. Luokkamalli. Luokka ja olio. Luokkakaavio (class diagram)

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 2009 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 2009 TTY Ohjelmistotekniikka 2

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

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

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

Metson työkalu Mika Karaila Ohjelmistoarkkitehtuurit Syksy 2009 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 2009 TTY Ohjelmistotekniikka 7

Komponenttien ominaisuuksia Itsenäisyyden aste Käyttöönottotapa Koko Standardointi Teknologia-spesifit ominaisuudet Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 8

3.3 Komponentit ohjelmistoyksikköinä Arkkitehtuurin yksikkö: 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 2009 TTY Ohjelmistotekniikka 9

Historia: 3.4 Rajapinnat A B M rajapinta Abstrakti luokka X tyhjä toteutus C aliohjelmakirjasto Aliohjelmat: toiminnan abstrahointi Palvelun kutsumuoto (signature) Palvelun toteutus tietorakenteet A B C A A Moduulit: tiedon piilotus Y Z tietorakenteet tietorakenteet B B C C Luokat: laajennettavat moduulit Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 10

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

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 2009 TTY Ohjelmistotekniikka 12

Tarjotut ja vaaditut rajapinnat UML 2.0:ssa PowerSource tarjottu rajapinta Car Engine PowerSource vaadittu rajapinta Car PowerSource Engine Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 13

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 2009 TTY Ohjelmistotekniikka 14

Portit UML 2.0:ssa Vuorovaikutuksen mahdollistava kontaktipiste komponentin ja sen ympäristön välillä PowerSource PowerSource Portti Engine host Engine Warnings Warnings Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 15

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 2009 TTY Ohjelmistotekniikka 16

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

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

Vaadittujen rajapintojen toteutuksen antaminen tai muuttaminen ActionListener Button AppLogic ActionListener XLogic Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 19

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 2009 TTY Ohjelmistotekniikka 20

Aliluokittaminen Button CompanyButton Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 21

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

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

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 2009 TTY Ohjelmistotekniikka 24

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 2009 TTY Ohjelmistotekniikka 25