1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2007

Samankaltaiset tiedostot
1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

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?

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

Arkkitehti?

1 Johdanto! Arkkitehti?!

Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa

1 Introduction. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2006

2 Ohjelmistoarkkitehtuurien kuvaus

7. Tuoterunkoarkkitehtuurit

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

Ohjelmistojen suunnittelu

Ohjelmistoarkkitehtuurit, syksy

Tietojärjestelmän osat

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

10. Tuoterunkoarkkitehtuurit

ITK130 Ohjelmistojen luonne

6 Ohjelmistoarkkitehtuurit

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

IBM Iptorin pilven reunalla

Ohjelmistotekniikka - Luento 2

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

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

Ohjelmistoarkkitehtuurit. Syksy 2008

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

11. Tuoterunkoarkkitehtuurit

Ohjelmistoarkkitehtuurit. Kevät 2014

6. Arkkitehtuurityylit

7. Product-line architectures

Ohjelmistoarkkitehtuurit. Kevät

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

2 Ohjelmistoarkkitehtuurien kuvaus

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

9. Muunneltavuuden hallinta

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

Suunnitteluratkaisut ja niiden arviointi sulautetuissa järjestelmissä

Software engineering

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

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

Ohjelmistoarkkitehtuurit, syksy

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

13/20: Kierrätys kannattaa koodaamisessakin

ITK130 Ohjelmistoprosessi

Johdantoluento. Ohjelmien ylläpito

Ohjelmistoarkkitehtuurit. Syksy 2007

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

Ohjelmistojen mallintaminen, mallintaminen ja UML

11. Tuoterunkoarkkitehtuurit

Koulutuksen suhdannevaihtelut. Zeppeliinistä suihkukoneaikaan

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

Ohjelmistoarkkitehtuuri

Turvakriittisen projektin menetelmät ja työkalut

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

Suunnitteluvaihe prosessissa

Toimilohkojen turvallisuus tulevaisuudessa

T Software Architecture

Teknologia-arkkitehtuurit. Valinta ja mallinnus

Arkkitehtuuri muutosagenttina

Portaaliteknologiat mahdollistavat ajattelutavan muutoksen

12. Kehysarkkitehtuurit

Ohjelmistoarkkitehtuuri ja kehitysprosessit

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelmistoarkkitehtuuriin vaikuttavia tekijöitä. Kari Suihkonen

Uudelleenkäytön jako kahteen

Projektityö

6. Arkkitehtuurityylit

812341A Olio-ohjelmointi, I Johdanto

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

Mitä on ohjelmistotuotanto?

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit Johannes Koskinen. Osittavat arkkitehtuurityylit

Luento 8. Ohjelmistokehykset Tuoteperheet CSM14101 Ohjelmistoarkkitehtuurit

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

9. Ohjelmistoarkkitehtuurien arviointi

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

Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit

Projektityö

Software product lines

Ohjelmistoarkkitehtuuri ja kehitysprosessit

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Lyhyt johdatus ketterään testaukseen

Kurssin aihepiiri: ohjelmistotuotannon alkeita

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

Laadukas vaatimustenhallinta. Pekka Mäkinen Copyright SoftQA Oy

asapflow - Yksinkertaistetut työprosessit saumattomalla yhteydellä SharePointiin ja SAP-järjestelmään

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

Ohjelmistoarkkitehtuurit kevät

Projektityö

Ohjelmistoarkkitehtuurien arviointi

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

TkK-tutkielmat

Tutkittua tietoa. Tutkittua tietoa 1

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 Arkkitehtuuri = "Architecture is the set of design decisions about any system that keeps its implementors and maintainers from exercising needless creativity." (D'Souza & Wills) 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 olemassa vain kuvattuna! arkkitehtuurit, esim. UML 5

Näkymä Arkkitehtuurinäkym kymät Näkymä Staattinen takaisinnnus Mallintaminen Näkymä Code Dynaaminen takaisinnnus (ajoaikaisesta informaatiosta) Toimiva järjestelmä (binääri) Koodin generointi Käännös 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

Why GSD? the right answer (Riku Granat, Nokia) Access to the world wide talent pool Cost savings Focus on where you get the best ROI Market presence understanding local needs being close to the customer Mergers and acquisitions Improved quality? Follow-the-sun / -seasons development Gaining competitive advantage 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 suunnitelussa 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ä raudan tai 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 ohjaama kehitysprosessi Laatuvaatimukset Arkkitehtuurin kannalta merkittävät vaatimukset Vaatimusanalyysi Keskeiset toiminnalliset vaatimukset Alustava arkkitehtuuri Alustava arkkitehtuurisuunnittelu Laatuvaatimuksen arviointi Uusia tai muutetuja vaatimuksia Toissijaiset toiminnalliset vaatimukset Arkkitehtuurimuunnos ei OK OK Käyttöönotto Testaus Toteutus Yksityiskohtainen suunnittelu Arkkitehtuuri 25

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

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

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 28

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 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 Ohjelmistoarkkitehtuuri sanelee järjestelmän kehityksen periaatteet Ohjelmistoarkkitehtuuri on avaintekijä ohjelmistojen hallitsemisessa Ohjelmistoarkkitehtuuri konkretisoituu dokumentoinnissa Ohjelmistokehityksestä on tullut arkkitehtuurikeskeistä 34