1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

Samankaltaiset tiedostot
1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2007

1.3 Katsaus ohjelmistotuotannon kehittymiseen

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

1 Johdanto. Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1

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

Arkkitehti?

1 Johdanto! Arkkitehti?!

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

Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa

1 Introduction. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2006

2 Ohjelmistoarkkitehtuurien kuvaus

7. Tuoterunkoarkkitehtuurit

Ohjelmistojen suunnittelu

Arkkitehtuuritietoisku. eli mitä aina olet halunnut tietää arkkitehtuureista, muttet ole uskaltanut kysyä

Ohjelmistoarkkitehtuurit, syksy

Tietojärjestelmän osat

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

10. Tuoterunkoarkkitehtuurit

6 Ohjelmistoarkkitehtuurit

ITK130 Ohjelmistojen luonne

Ohjelmistotekniikka - Luento 2

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

6. Arkkitehtuurityylit

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit. Syksy 2008

9. Muunneltavuuden hallinta

11. Tuoterunkoarkkitehtuurit

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Ohjelmistoarkkitehtuurit, syksy

Agenda. Johdanto Ominaispiirteitä Kokonaisjärjestelmän määrittely Eri alojen edustajien roolit Sulautetut järjestelmät ja sulautettu ohjelmointi

Ohjelmistoarkkitehtuurit. Kevät 2014

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuuri

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

2 Ohjelmistoarkkitehtuurien kuvaus

Ohjelmistoarkkitehtuurit. Syksy 2007

Tuoterunkoarkkitehtuurit. Ohjelmistoarkkitehtuurit kevät Uudelleenkäyttö. Johannes Koskinen.

Software engineering

11. Tuoterunkoarkkitehtuurit

6. Arkkitehtuurityylit

ITK130 Ohjelmistoprosessi

Käytännön haasteita ja ratkaisuja integraation toteutuksessa. Jukka Jääheimo Teknologiajohtaja Solita Oy

Arkkitehtuurien tutkimus Outi Räihä. OHJ-3200 Ohjelmistoarkkitehtuurit. Darwin-projekti. Johdanto

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit Johannes Koskinen. Osittavat arkkitehtuurityylit

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Ohjelmistojen mallinnus, s2008 HY/TKTL, 28/10/2008. Harri Laine 1. Ohjelmisto

Ohjelmistoarkkitehtuuri ja kehitysprosessit

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

13/20: Kierrätys kannattaa koodaamisessakin

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

Ohjelmistojen mallintaminen, mallintaminen ja UML

Koulutuksen suhdannevaihtelut. Zeppeliinistä suihkukoneaikaan

Ohjelmistoarkkitehtuuri ja kehitysprosessit

Uudelleenkäytön jako kahteen

Ohjelmistoarkkitehtuurit kevät

Globaalisti Hajautettu Ohjelmistokehitys Mitä, Miksi & Miten? Maria Paasivaara

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

Toimilohkojen turvallisuus tulevaisuudessa

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

Portaaliteknologiat mahdollistavat ajattelutavan muutoksen

Software product lines

Johdantoluento. Ohjelmien ylläpito

IBM Iptorin pilven reunalla

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Suunnitteluratkaisut ja niiden arviointi sulautetuissa järjestelmissä

Turvakriittisen projektin menetelmät ja työkalut

Luento 8. Ohjelmistokehykset Tuoteperheet CSM14101 Ohjelmistoarkkitehtuurit

Testaus-tietoisku: Tärkeimpiä asioita testauksesta projektityökurssilaisille

Suunnitteluvaihe prosessissa

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

Oppimistavoitteet. Ohjelmistoarkkitehtuuri ja kehitysprosessit. Oletusarkkitehtuurit Antti-Pekka Tuovinen HY/Tktl

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

Arkkitehtuuri muutosagenttina

9. Ohjelmistoarkkitehtuurien arviointi

Laatu tietojärjestelmähankkeissa. Tietohallinnon kokemuksia Juha-Pekka Leskinen Atk-päällikkö Eduskunnan kanslia

Suorituskyvyn varmistaminen sovelluskehityksen eri vaiheissa Paavo Häkkinen, Presales Teamleader Compuware Finland

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit

Suunnittelumallien käyttö ohjelmistosuunnittelussa

Johdanto. Mitä on ohjelmistotuotanto? Tämän kurssin näkökulma. Sami Kollanus TJTA330 Ohjelmistotuotanto

Mitä on ohjelmistotuotanto?

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuuriin vaikuttavia tekijöitä. Kari Suihkonen

812341A Olio-ohjelmointi, I Johdanto

Projektityö

7. Product-line architectures

Ohjelmistoarkkitehtuurit. Syksy 2010

3. Komponentit ja rajapinnat

Ohjelmistoarkkitehtuurit, syksy

Johdanto Näkökulmat tuoterunkoihin perustuvaan ohjelmistokehitykseen: liiketoiminta, organisaatio, prosessi, tekninen Tuoterunkojen etuja ja ongelmia

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

11. Kehysarkkitehtuurit

Ohjelmiston toteutussuunnitelma

10 Kohti ketterää ohjelmistokehitystä

Transkriptio:

1 Johdanto 1.1 Mikä on ohjelmistoarkkitehtuuri? 1.2 Katsaus ohjelmistotuotannon kehittymiseen 1.3 Epäonnistuneen ohjelmistoarkkitehtuurin seurauksia 1.4 Ohjelmistoarkkitehtuuri ja ohjelmistokehitysprosessi 1.5 Arkkitehtuurin rooli toteutusvälineenä 1.6 Yhteenvetoa 1

1.1 Mikä on ohjelmistoarkkitehuuri? Software architecture: The fundamental organization of a system embodied in its components, their relationships to each other and to the environment, and the principles guiding its design and evolution. (IEEE Standard 1471-2000) Ohjelmistoarkkitehtuuri kattaa: http://www.sei.cmu.edu/architecture/definitions.html Ohjelmiston jaon tärkeimpiin osiin ja näiden osien väliset suhteet Rakenteen ja käyttäytymisen Staattisen ja dynaamisen rakenteen Erilaiset näkökulmat ja abstraktiotasot Korkeimman tason suunnitteluratkaisut ja niiden perustelut Ohjelmiston kehittämisen säännöt ja periaatteet 2

Arkkitehtuuritasolla näkyvin kyviä asioita: Järjestelmän laatuominaisuuksia Jako komponentteihin, niiden vastuut Komponenttien välinen kommunikointi Prosessit ja niiden välinen kommunikointi, hajautus Tiedon pysyvyys, tietokantaratkaisut Tietoturva Käytettävyys Skaalautuminen ja suorituskyky Varautuminen tulevaisuuden tarpeisiin Uudelleenkäyttö... 3

Arkkitehtuuri järjestelmj rjestelmän kehitysperiaatteena Tietyistä arkkitehtuuritason ratkaisuista voi seurata yleisiä sääntöjä, joita on noudatettava kehitysprosessissa: - tietyn teknologian käyttö - tiettyjen tietorakenteiden käyttö - tiettyjen suunnitteluen käyttö - alustan käyttöön liittyvät säännöt - poikkeusten käsittelysäännöt "Architecture is the set of design decisions about any system that keeps its implementors and maintainers from exercising needless creativity." (D'Souza & Wills) Arkkitehtuuri = järjestelmän perustuslaki 4

Arkkitehtuurin kuvaus If a project has not achieved a system architecture, including its rationale, the project should not proceed adgsfgsgf wfrwffffdsff to full-scale system development. Specifying the RwrWRwrW architecture as a deliverable enables its use throughout the development and maintenance process. - Barry Boehm, 1995 adgsfgsgf wfrwffffdsff RwrWRwrW Ohjelmistoarkkitehtuuri on kunnolla olemassa vain kuvattuna! arkkitehtuurit, esim. UML 5

Arkkitehtuurinäkym kymät Näkymä Näkymä Arkkitehtuurikuvaus Näkymä Näkymä kuvaa tietyn arkkitehtuuriin liittyvän asian tietyllä abstraktiotasolla Näkymien kuvaamat asiat ovat osittain päällekkäisiä Toimiva järjestelmä (binääri) 6

1.2 Katsaus ohjelmistotuotannon kehittymiseen 7

Ohjelmointi Vaatimukset Ohjelmointikieli Vaatimusten toteutus ohjelmointikielellä Ohjelma Programming-in-the-small Ongelma: Ohjelmointikielen hallinta Ratkaisu: Ohjelmointiympäristöt 8

Järjestelmäkehitys Vaatimukset Ohjelmointikieli Vaatimusten toteutus ohjelmointikielellä Komponent Komponent Komponent Komponentti Programming-in-the-large Ongelma: Riippuvuuksien hallinta Ratkaisu: Arkkitehtuuri 9

Ohjelmistotuotanto Vaatimukset Ohjelmointikieli Prosessi Programming-in-the-many Ongelma: Ihmisten hallinta Ratkaisu: Prosessi Vaatimusten toteutus ohjelmointikielellä Komponent Komponent Komponent Komponentti 10

Mallipohjainen ohjelmistotuotanto Vaatimukset Ohjelmointikieli Vaatimusten toteutus ohjelmointikielellä Komponent Komponent Komponent Komponentti Model-driven development Ongelma: Monimutkaisuuden hallinta Ratkaisu: Abstraktio, ntaminen, arkkitehtuuri 11

Ihmistyö Mallipohjainen ohjelmistotuotanto vs. perinteinen Perinteinen: Toteutus Suoritettava koodi Ykstyiskohtainen suunnittelu = täysin automatisoitu Arkkitehtuuri = turha työ Vaatimukset Kuvataan dokumentteina, prosessoidaan manuaalisesti Lisäarvo 12

Ihmistyö Mallipohjainen ohjelmistotuotanto vs. perinteinen Mallipohjainen: Arkkitehtuuri Vaatimus Design Toteutus Suoritettava koodi osittain automatisoitu - ntamiskielet - transformaatiot - koodin generointi Lisäarvo 13

Model-Driven Development (MDD) Bran Selic 14

Tuoteperheet Vaatimukset Ohjelmointikieli Ohjelmointialusta Ongelma: Varioitavuuden hallinta Ratkaisu: Arkkitehtuuri + prosessi Komponent Komponent Komponent Komponentti 15

Globaali ohjelmistokehitys Vaatimukset Ohjelmointikieli Ohjelmointialusta Ongelma: Työn hajauttaminen Ratkaisu: Arkkitehtuuri + prosessi Komponent Komponent Komponent Komponentti 16

Syitä globaaliin ohjelmistokehitykseen Saadaan lahjakkaimmat yksilöt maailmanlaajuisesti Säästetään kustannuksia Markkinaläsnäolo Follow-the-sun kehitys (Riku Granat, Nokia) 17

Rinnakkaisuus Vaatimukset Ohjelmointikieli Ohjelmointialusta Ongelma: Laskennan hajautus Ratkaisu: Arkkitehtuuri + kielet Komponent Komponent Komponent Komponentti Rinnakkaiset laitealustat 18

Liiketoimintapalvelut Palvelut Vaatimukset Ohjelmointikieli Ohjelmointialusta Ongelma: Integrointi liiketoimintaan Ratkaisu: Arkkitehtuuri (SOA) Komponent Komponent Komponent Komponentti Rinnakkaiset laitealustat 19

Ohjelmointialusta Liiketoimintapalvelut Ohjelmistotuotanto tänään Vaatimukset Ohjelmointikieli Rinnakkaiset laitealustat Komponent Komponent Komponent Komponentti Ohjelmistoarkkitehtuuri on avain - komponentien välisten v suhteiden hallintaan - järjestelmien monimutkaisuuden hallintaan - ohjelmistojen varioitavuuden hallintaan - ohjelmistokehityksen ja laskennan hajauttamiseen - liiketoimintaintegrointiin 20

Taloussanomat 2.9.2005 21

1.3 Epäonnistuneen ohjelmistoarkkitehtuurin seurauksia järjestelmää ei pystytä toteuttamaan järjestelmä ei valmistu suunnitellussa ajassa järjestelmä ei skaalaudu järjestelmä on tehoton järjestelmää on vaikea testata järjestelmää on vaikea ylläpitää järjestelmää ei pystytä uudelleenkäyttämään järjestelmää ei pystytä siirtämään toiseen ympäristöön 22

Syitä epäonnistuneeseen arkkitehtuuriin: - huono kommunikaatio - arkkitehtuurin kannalta olennaisia vaatimuksia ei ole otettu huomioon - arkkitehti on kokematon tai heikkotahtoinen - johdolta tuleva painostus - kehitysprosessi ei tue arkkitehtuuria - muita? 23

1.4 Ohjelmistoarkkitehtuuri ja ohjelmistokehitysprosessi Lähtökohtia: Tyhjä pöytä: uusi järjestelmä KJ:n päälle Palvelualusta: oletetaan olemassaolevia palveluja Arkkitehtuurialusta: oletetaan tiettyä arkkitehtuuria tukeva alusta Tuotealusta: oletetaan tiettyä sovellusaluetta tukeva alusta Tuote: olemassaolevan ohjelmiston arkkitehtuuri muuttuu Referenssiarkkitehtuuri: oletetaan tietty perusarkkitehtuuri 24

Arkkitehtuurin rakentaminen kehitysprosessissa Laatuvaatimukset Arkkitehtuurin kannalta merkittävät vaatimukset Vaatimusanalyysi Keskeiset toiminnalliset vaatimukset Alustava arkkitehtuuri Alustava arkkitehtuurisuunnittelu Laatuvaatimuksen arviointi Rajoitteet Toissijaiset toiminnalliset vaatimukset Arkkitehtuurimuunnos ei OK OK Kaikki käsitelty Inkrementaalisuus, agile: pienin toteutettavissa oleva arkkitehtuuri -> toteutus Yksityiskohtainen suunnittelu Arkkitehtuurin katselmointi Arkkitehtuuri 25

Ohjelmiston jako komponentteihin Perusteena voi olla: toiminnallisuus yleisyys hajautus muutosherkkyys intressi, huolenaihe (concern)... huolenaihe 26

Arkkitehtuurin kannalta merkittävät vaatimukset Keskeiset toiminnalliset vaatimukset - Usein lähtökohta arkkitehtuurin suunnittelulle Laatuvaatimukset ( ei-toiminnalliset vaatimukset ) vaikuttavat tyypillisesti olennaisesti arkkitehtuuriin - Esim. suorituskyky, muunneltavuus, skaalautuvuus, hinta, ylläpidettävyys, siirrettävyys, uudelleenkäytettävyys jne. Arkkitehtuurin kannalta merkittävät vaatimukset on yleensä priorisoitu - Tyypillisesti yksi tai kaksi laatuvaatimusta dominoi arkkitehtuuria, vähemmän tärkeiden täytyy mukautua Vaatimusten ja arkkitehtuuriratkaisujen yhteyden säilyttäminen olennaista - Kuinka järjestelmä täyttää arkkitehtuurin kannalta merkittävät vaatimukset, erityisesti laatuvaatimukset 27

Laatuvaatimusten yhteentörm rmäys Piirrerunsaus, nopeasti saatavilla, yhteensopivuus Suorituskyky, luotettavuus, käytettävyys Muunneltavuus, testattavuus Kustannus, resurssitarve Markkinointi Loppukäyttäjä Ylläpitäjä Hinta, stabiilisuus, toimitusvarmuus, Johto Arkkitehti Asiakas 28

Ohjelmistoarkkitehtuuri ja organisaatio alijärjestelmä liiketoimintayksikkö järjestelmä ryhmä henkilö henkilö komponentti komponentti komponentti henkilö => arkkitehtuurin rakenne = organisaation rakenne Conway n laki 29

1.5 Arkkitehtuurin rooli toteutusvälineen lineenä Ohjelmistoalusta pakottaa sovellukselle usein tietyn arkkitehtuurin Sovellus rakennetaan käyttäen tämän arkkitehtuurin tarjoamia välineitä Sovelluskehityksen keskeinen kysymys on miten vaatimukset saadaan toteutettua näillä välineillä Esimerkiksi: Miten vaatimukset toteutetaan EJB-arkkitehtuurissa? Miten vaatimukset toteutetaan Symbian OS -arkkitehtuurissa? Miten vaatimukset toteutetaan Swing-arkkitehtuurissa? 30

Kehitys kulkee kohti arkkitehtuuritason toteutusvälineit lineitä ohjelmointikieli ohjelmistoarkkitehtuuri Toteutusvälineet: Muuttujat Aliohjelmat Luokat Komponentit Alustat 31

Mitä vaatimuksia tämät asettaa ohjelmistoarkkitehtuurille? Kun ohjelmistoarkkitehtuuri on osa toteutusvälineistöä, sen tulee olla: geneerinen: sopiva monille sovelluksille tavallisen ohjelmoijan ymmärrettävissä kuvattu täsmällisesti ja kattavasti kuvattu käyttäjän (so. sovellusohjemoijan) kannalta 32

Ohjelmistoarkkitehtuuri ja ohjelmointikieli Kun ohjelmistoarkkitehtuuri on osa toteutusvälineistöä, sillä on monia samankaltaisia ominaisuuksia kuin ohjelmointikielellä: Ohjelmistoarkkitehtuuri voi asettaa staattisia oikeellisuussääntöjä Ohjelmistoarkkitehtuuri voi asettaa dynaamisia oikeellisuussääntöjä Ohjelmistoarkkitehtuuria voi tukea työkaluympäristö (arkkitehtuurisuuntautunut ohjelmointiympäristö) 33

1.6 Yhteenvetoa Ohjelmistoarkkitehtuurilla ja ohjelmiston laadulla on kiinteä yhteys Ohjelmistoarkkitehtuuri vaikuttaa keskeisesti myös prosessiin ja organisaatioon Ohjelmistoarkkitehtuuri konkretisoituu dokumentoinnissa Ohjelmistokehityksestä on tullut arkkitehtuurikeskeistä 34