Ohjelmistoarkkitehtuurit, syksy 2012 4.9.2010



Samankaltaiset tiedostot
Ohjelmistoarkkitehtuurin suunnittelu

Ohjelmistoarkkitehtuurit. Syksy 2008

Ohjelmistoarkkitehtuurit. Syksy 2007

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit. Syksy 2010

Ohjelmistoarkkitehtuurit. Kevät

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

Ohjelmistoarkkitehtuurin suunnitteluperiaatteita

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

Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa

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

Ohjelmistojen suunnittelu

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

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmiston toteutussuunnitelma

1.3 Katsaus ohjelmistotuotannon kehittymiseen

2 Ohjelmistoarkkitehtuurien kuvaus

1 Johdanto. Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

Hieman lisää malleista ja niiden hyödyntämisestä

Ohjelmistoarkkitehtuurit, syksy

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit

Suunnitteluvaihe prosessissa

Tietojärjestelmän osat

Koodimalli Code Model

Arkkitehtuurinen reflektio

Ohjelmistotekniikan menetelmät, kesä 2008

Tenttikysymykset. + UML-kaavioiden mallintamistehtävät

1 Johdanto. Pieni motivointikalvo. 1.1 Mikä on ohjelmistoarkkitehtuuri?

Software engineering

Ohjelmistotekniikan menetelmät, kevät 2008

Ohjelmistojen mallintaminen, kesä 2009

Ohjelmistojen mallintaminen, mallintaminen ja UML

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Arkkitehti?

Ohjelmistoarkkitehtuuri ja kehitysprosessit

Ohjelmistoarkkitehtuurit, syksy

7. Product-line architectures

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

Ohjelmistoarkkitehtuurit, syksy

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2007

Ohjelmistojen mallintaminen, kesä 2010

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

1 Johdanto! Arkkitehti?!

Johdantoluento. Ohjelmien ylläpito

6. Suunnittelu. Suunnittelun tulos

Ohjelmistoarkkitehtuurit

OA:n kanoninen malli I

7. Tuoterunkoarkkitehtuurit

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

Arkkitehtuurin dokumentointi O A

hyväksymispäivä arvosana

Tietojenkäsittelytieteiden koulutusohjelma. Tietojenkäsittelytieteiden laitos Department of Information Processing Science

Suunnittelun tulos. 6. Suunnittelu. Suunnitteluprosessin työvaiheet. Suunnitteluprosessi. 6.1 Arkkitehtuurisuunnittelu.

2 Description of Software Architectures

Suunnitteluratkaisut ja niiden arviointi sulautetuissa järjestelmissä

Yleisiä asioita. Harkat alkavat ensi viikolla Vierailuluentoa. Slackin #luennot-kanava taas käytössä. Ensi viikon perjantaina, Janne Viitala, Sandvik

Ohjelmistojen mallinnus Ohjelmistoarkkitehtuuri Harri Laine 1


Standardi IEC Ohjelmisto

Ohjelmistoarkkitehtuurit kevät

Ohjelmistotuotanto, suunnittelu Syksy Suunnittelu. Suunnittelun tulos. Suunnitteluprosessin työvaiheet. Suunnitteluprosessi.

Ohjelmistojen mallintaminen Ohjelmistoarkkitehtuuri Harri Laine 1

6 Ohjelmistoarkkitehtuurit

10. Tuoterunkoarkkitehtuurit

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ratkaisumallien historia

Oliosuunnittelu. Oliosuunnittelu

13/20: Kierrätys kannattaa koodaamisessakin

Digi-tv vastaanottimella toteutetut interaktiiviset sovellukset

OA:n kanoninen malli III

Ylläpito. Ylläpito. Ylläpidon lajeja Ohjelmistotuotanto, syksy 1998 Ylläpito

SEPA - Design Patterns

Uudelleenkäytön jako kahteen

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Ohjelmistoarkkitehtuurit, syksy

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. IX Suunnittelumallit Proxy, Factory Method, Prototype ja Singleton

Ohjelmistojen mallintaminen

3. Komponentit ja rajapinnat

Ohjelmistoarkkitehtuuri ja kehitysprosessit

Oppimistavoitteet. Sovellusaluemalli Domain Model. Esimerkkiohjelmisto Yinzer 1. Sovellusaluemallin käyttö. Sovellusaluemallin käyttö 24.9.

Tiedonsiirto- ja rajapintastandardit

Järjestelmäarkkitehtuuri (TK081702) Avoimet web-rajapinnat

9 Edistynyt PHP-ohjelmointi

Integraatiotekniikan valinta - tie onnistumiseen.

Oppimistavoitteet. Ohjelmistoarkkitehtuurit. Ohjelmistojen merkityksestä. Ohjelmistoarkkitehtuurit S2015 Antti-Pekka Tuovinen / HY 1.9.

Ohjelmistoarkkitehtuuri

Standardit osana käyttäjäkeskeistä suunnittelua

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

Ohjelmistoarkkitehtuurit. Kevät 2014

Arkkitehtuurityylit ohjelmarakenteen perustana

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

Arkkitehtuurin mallintaminen

Ohjelmistojen mallintaminen, arkkitehtuuria ja rajapintoja

Ohjelmistokehykset (software frameworks)

Ohjelmistotuotanto, prosessit Syksy Ohjelmistotuotantoprosessi. Prosessimalli. Prosessimallien perustehtävät. Prosessimallin vaihejako

Transkriptio:

Ohjelmistotutkimuksen painopisteitä Ohjelmistoarkkitehtuurit Johdanto ja peruskäsitteitä 2000 1995 1990 1985 1980 1970 Tuoteperhearkkitehtuurit, MDA, väliohjelmistot, aspektit CASE-välineet: uudelleenkäyttö, testaus, mittaus Patterns (ratkaisumallit), sovelluskehykset, ohjelmistoarkkitehtuurit, arkkitehtuurityylit, arkkitehtuurien kuvauskielet, UML CASE-välineet: käyttöliittymien piirtäminen CASE-välineet: kaaviotyökalut CASE-välineet: koodingenerointi Oliot, uudelleenkäyttö, oliosuunnittelu Suunnittelumenetelmät: tietovirtakaaviot, ER-malli Modulaarisuus, tiedon kätkeminen Ketterät menetelmät (agile methods) Liiketoiminta, organisaatio Graafiset käyttöliittymät, käytettävyys Prosessit, CMM Prosessit: vesiputous 1960 Aliohjelmat 4.9.2012 1 4.9.2012 2 Kohti suurempia kokonaisuuksia Arkkitehtuurin merkityksen kasvu Sovelluskäsitteet Luvut, merkkijonot Tietorakenteet Toiminnot Tietoabstraktiot Palveluyksiköt Sovellusalue Toteutusrakenteet Muistipaikat, rekisterit Rakenteiset tietotyypit Aliohjelmat Luokat Komponentit, agentit, rajapinnat Alustat, tuoterungot, kehykset Ohjelmistojen kehittämiseen arkkitehtuuritason käsitteet ja toteutusmekanismit 2000-luvun tietoyhteiskunta: lukematon määrä palveluita toteutetaan tietojärjestelminä Tietokonelaitteistot kehittyneet huimasti: laskentatehoa, nopeaa tiedonsiirtoa Virtualisoinnin ja pilvestä saatavan tallennustilan ansiosta kokonaisia järjestelmiä voidaan toteuttaa ohjelmistoina Ohjelmistopuolella on ongelmia: suurien, käytettävien, luotettavien ja edullisten ohjelmistojen toteuttaminen vaikeaa 4.9.2012 3 4.9.2012 4 Arkkitehtuurin merkityksen kasvu Periaatteelliset ratkaisut (miten toteutetaan?): Kiinnitettävä huomiota laajojen ohjelmistojen (tai suurten ohjelmistoperheiden) yleiseen hallittavuuteen, ylläpidettävyyteen ja uudelleenkäytettävyyteen Teknologiavalinnat Arkkitehtuuritason ratkaisuja korostavia toteutustekniikoita: esimerkiksi komponentit, mobiilialustat, hajautusta tukevat alustat, generatiivinen ohjelmointi (tuoteperheiden hallinnassa) Tarvitaan korkean tason arkkitehtuurisuunnittelua Ohjelmistoarkkitehtuurin juuret Termiä käytetty jo 60-luvulla (esim. Edsger Dijkstra) Mary Shaw, Toward Higher-Level Abstractions for Software Systems. Proc. Tercer Simposio Internacional del Conocimiento y su Ingerieria, October 1988. Dewayne Perry, Alexander L. Wolf, Foundations for the Study of Software Architecture. ACM SIGSOFT Software Engineering Notes 17, 4, 1992, 40-52. Mary Shaw, David Garlan, Software Architecture: Perspectives on an Emerging Discipline. Prentice Hall, 1996. Käsitteet arkkitehtuuri, komponentti ja konnektori yleiseen tietoisuuteen 4.9.2012 5 4.9.2012 6 Harri Laine 1

OA-lähteitä Working International Conference on Software Architectures (WICSA) Bass L., Clements P., Kazman R., Software Architecture in Practice, Addison-Wesley, 2005. Bosch J., Design and Use of Software Architectures: Adopting and Evolving a Product-line Approach, Addison- Wesley, 2000. Witt B., Baker T., Merritt E., Software Architecture and Design: Principles, Models and Methods, Van Nostrand Reinhold, 1994. Hofmeister, Nord, Soni: Applied Software Architecture, Addision-Wesley, 2000. Arkkitehtuuri Ohjelmistoarkkitehtuurin määritelmiä: Taylor: Joukko ohjelmistoon liittyviä periaatetason suunnitteluratkaisuja IEEE 2000: järjestelmän perusorganisaatio, joka sisältää järjestelmän osat, osien keskinäiset suhteet, osien suhteet ympäristöön sekä periaatteet, jotka ohjaavat järjestelmän suunnittelua ja evoluutiota. (ISO/IEC 42010: IEEE Std 1471-2000 Systems and software engineering Recommended practice for architectural description of software-intensive systems) Koskimies, Mikkonen: järjestelmän perustuslaki, jota on noudatettava järjestelmää rakennettaessa. Perustuslakia saa muuttaa vain painavilla perusteilla. Bass, Clements, Kazman (BCK): the structure or structures of the system, which comprises software elements, the externally visible properties of those elements, and the relationships among them. 4.9.2012 7 4.9.2012 8 Johdanto ja peruskäsitteitä Jokaisella järjestelmällä on arkkitehtuuri (oli sellainen dokumentoitu tai ei) Voidaan yrittää rekonstruoida takaisinmallinnuksella (reverse engineering) ohjelmiston toteutuksesta vrt. Koskimies-Mikkonen: Jos arkkitehtuuria ei ole dokumentoitu, sitä ei oikeastaan ole olemassa Ottaa kantaa keskeisiin ohjelmiston ratkaisuihin Antaa yleiskuva järjestelmän toiminnasta (peruskäyttötapaukset, poikkeustilanteet) Kuvata ohjelmiston jako pääosiin, osien väliset suhteet, kommunikoinnin ja sijoittelun (laitteet, prosessit) Antaa yleiskuva keskeisisten ei-toiminnallisten vaatimusten toteutumisesta (tehokkuus, käytettävyys, laajennettavuus, uudelleenkäytettävyys, ylläpidettävyys,..) Määritellä muut ohjelmistoon ja sen kehittämiseen liittyvät säännöt (koskien esimerkiksi valittavia teknologioita) Arkkitehtuurikuvauksen on oltava kattava (valitulla abstraktiotasolla), ristiriidaton, yksiselitteinen varmistuminen vaatimusten toteutumisesta 4.9.2012 9 4.9.2012 10 Arkkitehtuuriratkaisut ovat keskeisiä periaateratkaisuja Kaikki suunnittelupäätökset eivät ole arkkitehtuuritasoisia Arkkitehtuuritasoisuus on osin tapauskohtaista Mitä pidetään kyllin tärkeänä Iso suunnitteluongelma jaetaan pienempiin osiin, jotka voidaan ratkaista itsenäisesti Rakenneosat (arkkitehtuurielementit) kätkevät toteutuksen/suunnittelun yksityiskohdat Yksityiskohtia (luokkarakenne, algoritmit) voidaan sisällyttää, jos ne koskevat rakenneosien vuorovaikutusta tai niiden liittymäkohtia (rajapintoja) tai keskeisiä ei-toiminnallisia vaatimuksia Arkkitehtuuri toimii yleissuunnitelmana Arkkitehtuuri on abstraktio, joka auttaa hallitsemaan ohjelmiston kompleksisuutta Keskitytään kokonaisuuden kannalta tärkeimpiin asioihin Arkkitehtuuri perustuu ohjelmiston jakamiseen osiin. Jako osiin on moniulotteista Jako voidaan tehdä monilla perusteilla esimerkiksi toiminnallisuuteen, hajautukseen, käsitemalliin, yleisyyteen tai joustavuusnäkökulmaan perustuen Kuitenkin järjestelmissä on aina osia läpileikkaavia ominaisuuksia (cross-cutting concerns), esim. virheiden käsittely, tiedon pysyvyys Hankaloittaa toteutusta, testausta, ylläpitoa, laajennettavuutta, uudelleenkäytettävyyttä 4.9.2012 11 4.9.2012 12 Harri Laine 2

Arkkitehtuuri on ohjelmiston kehittämisen ydin Perusta yksityiskohtaisille suunnitteluratkaisuille ja toteutukselle Perusta järjestelmän kehitystyölle Arkkitehtuurin laatiminen ei ole vain yksi työvaihe ohjelmistokehityksessä vaan jatkuvaa toimintaa Arkkitehtuuri on tärkeämpi kuin kehittämisprosessi Arkkitehtuuri Arkkitehtuuri kehittyy ohjelmiston elinkaaren aikana Preskriptiivisellä (ohjaavalla) arkkitehtuurilla (prescriptive architecture) tarkoitetaan toteutusta edeltävää ja ohjaavaa suunnitelmaa Millaista dokumentaatiota tarvitaan? Deskriptiivisellä (kuvailevalla) arkkitehtuurilla (descriptive architecture) tarkoitetaan olemassa olevan toteutuksen kuvausta Kehittyy toteutuksen myötä Suunnitelman ja toteutuksen vastaavuus: Ristiriidattomat poikkeamat (architectural drift) Ristiriidat (architectural erosion) 4.9.2012 13 4.9.2012 14 Yhteenveto käsitekarttana Ohjemistoarkkitehtuuri ja Arkkitehtuuri? http://www.cs.helsinki.fi/u/aptuovin/arkkit/s12/ohjelmistoarkkitehtuuri.html 4.9.2012 15 4.9.2012 16 Arkkitehdin työnkuvaa Mitä arkkitehdit yrityksissä tekevät? Seuraavat arkkitehdin toimen kuvaukset perustuvat globaalin palvelu- ja konsultointiyrityksen Accenture:n standardirooleihin Yrityksellä on noin pari kymmentä (!) Architect nimikkeen sisältävää standardiroolia Ratkaisuarkkitehti Toimii asiakasrajapinnassa (client-facing role) Tulkitsee asiakasvaatimukset ja muodostaa niiden pohjalta ratkaisusuunnitelman (solution plan), joka voidaan koota tarjolla olevista (standardi-) rakennusosista Osallistuu työmäärien ja kustannusten arvointiin Tavoitteena on globaalien resurssien ja aikaisempien ratkaisujen sekä organisaation osaamisen kustannustehokas käyttö 4.9.2012 17 4.9.2012 18 Harri Laine 3

Tekninen arkkitehti Pelikenttä Tekninen asiantuntija, joka vastaa tietyn teknologia-alueen kehityssuunnasta ja arkkitehtuurista Muodostaa teknisiä vaatimuksia ja ohjelmistosuunnitelmia liiketoiminta- ja asiakasvaatimusten perusteella Kehittää arkkitehtuurikomponentteja Osallistuu yksityiskohtien suunnitteluun ja koodikatselmointeihin Analysoi suorituskyky- ja tehokkuusongelmia Ohjaa, valmentaa ja tukee kehittäjiä Määrittelee yleisiä käytäntöjä ja periaatteita (standardeja) sekä valvoo niiden noudattamista Implementoi itsekin 4.9.2012 19 Resurssit Ratkaisuarkkitehti Asiakas Tekninen arkkitehti Teknologia 4.9.2012 20 Arkkitehdin työn menestystekijät Arkkitehtuurikäsitteitä Organisaation tuki - vastuu ja mandaatti Arkkitehtuurinäkymä (architectural perspective, view) = jostakin näkökulmasta ohjelmistoa tarkasteleva rajautunut joukko keskeisiä suunnitteluratkaisuja esimerkiksi rakennenäkymä, tai sijoittelunäkymä Vuorovaikutustaidot ja verkostoituminen Tekninen osaaminen Abstrahointikyky Artek Sovellusalueen tuntemus 4.9.2012 22 Arkkitehtuurikäsitteitä - komponentti Arkkitehtuurikäsitteitä - komponentti Komponentti on Arkkitehtuurielementti, joka kapseloi osan järjestelmän toiminnallisuutta ja/tai dataa rajoittaa pääsyn tähän osaan tarkoin määritellyn rajapinnan kautta tapahtuvaksi ja jolla on eksplisiittisesti määritellyt riippuvuudet suoritusympäristöönsä. voi olla iso (osajärjestelmä tai koko järjestelmä) tai pieni (yksittäinen operaatio) näkyy ulospäin vain rajapintansa kautta = tarjoaa rajapinnan muille elementeille: määrittelee, miten elementin palveluja käytetään, mutta ei niiden toteutusta Eksplisiittisesti määritellyt riippuvuudet: vaatimukset komponenteille, joiden kanssa toimii yhteistyössä ns. vaadittu rajapinta (requires interface) tarvittavat resurssit esimerkiksi tiedostot tai hakemistot ohjelma-alusta laitteistoalusta Komponentit voivat olla sovellusriippuvia kehitetty tietyn sovelluksen tarpeisiin sovellusalueriippuvia - uudelleenkäytettävissä sovellusalueen sisällä (domain specific) yleiskäyttöisiä käytettävissä useilla sovellusalueilla 4.9.2012 23 4.9.2012 24 Harri Laine 4

Arkkitehtuurikäsitteitä - liitäntä Konnektori (connector) Arkkitehtuurielementti, jonka tehtävänä on mahdollistaa ja hallita komponenttien vuorovaikutusta Esimerkkejä konnektorityypeistä: proseduurikutsu, etäproseduurikutsu, jaetun datan käyttö, sanomanvälitys, jne (tarkastellaan myöhemmin tarkemmin) Konnektorit ovat tyypillisesti sovellusriippumattomia elementtejä Konfiguraatio (configuration) Arkkitehtuurikonfiguraatio on arkkitehtuurin komponentit ja liitännät yhdistävien assosiaatioiden joukko. Arkkitehtuurikäsitteitä arkkitehtoninen tyyli Arkkitehtoninen tyyli (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 malli: 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 niiden määrän dynaaminen lisääminen 4.9.2012 25 4.9.2012 26 Arkkitehtuurikäsitteitä arkkitehtoninen ratkaisumalli Arkkitehtoninen ratkaisumalli (architectural pattern) Nimetty kokoelma johonkin toistuvaan suunnitteluongelmaan soveltuvia suunnitteluratkaisuja, jotka on parametrisoitu ottamaan huomioon käyttöyhteys jossa ongelma esiintyy Miten tyyli eroaa ratkaisumallista? Tyylin käyttötilanne on yleisempi, ratkaisumallin konkreettisempi Tyylit ovat enemmän periaatesääntöjä ratkaisumallit konkreettisia ratkaisuja Ratkaisumallit soveltavat tyyliä (tyylejä) Ratkaisumallia voidaan yhdistää tyylejä. Tietty tyyliä noudattava ratkaisu voi sisältää useita ratkaisumalleja. Kaikki lähteet eivät erottele näitä käsitteitä Arkkitehtuurikäsitteitä- tyyli vs ratkaisumalli Esimerkki: Kolmitasomalli arkkitehtoninen ratkaisumalli request request front middle back reply reply Asiakas palvelin tyyli 4.9.2012 27 4.9.2012 28 Kolmitasomalli Arkkitehtuurikäsitteitä arkkitehtoninen malli Asiakaskone Asiakaskone Tilauskäyttöliittymä Tilauskäyttöliittymä Web- ja sovelluspalvelin Web-palvelin Sovelluspalvelin Tilausjärjestelmä Asiakaskerros Sovelluskerros Arkkitehtoninen malli (architectural model) Kuvaus, joka esittää kaikki tai osan järjestelmän arkkitehtuuriin liittyvistä suunnitteluratkaisuista Syntyy arkkitehtonisen mallintamisen tuloksena Järjestelmään voi liittyä useita arkkitehtonisia malleja, jotka tarkastelevat järjestelmää eri näkökulmista Arkkitehtuurikieli (architectural modeling notation) Kuvauskieli arkkitehtonisen mallin esittämiseen = ADL (architectural description language) Tietokantapalvelin Tilaustietokanta Datakerros 4.9.2012 29 4.9.2012 30 Harri Laine 5