1.3 Katsaus ohjelmistotuotannon kehittymiseen

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

Arkkitehti?

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

1 Johdanto. Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1

1 Johdanto! Arkkitehti?!

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

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

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2007

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

2 Ohjelmistoarkkitehtuurien kuvaus

Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa

ITK130 Ohjelmistojen luonne

Ohjelmistoarkkitehtuurit, syksy

Ohjelmistoarkkitehtuurit. Syksy 2008

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit. Syksy 2010

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Ketterä vaatimustenhallinta

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

9. Ohjelmistoarkkitehtuurien arviointi

Ohjelmistoarkkitehtuurien arviointi

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

Tietojärjestelmän osat

Kevät Ohjelmistoarkkitehtuurit 2014

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

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

Suunnitteluratkaisut ja niiden arviointi sulautetuissa järjestelmissä

7. Tuoterunkoarkkitehtuurit

Ohjelmistojen suunnittelu

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

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

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

Ohjelmistoarkkitehtuuriin vaikuttavia tekijöitä. Kari Suihkonen

Ohjelmistojen mallintaminen, kesä 2010

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Ohjelmistotekniikka - Luento 2

Ohjelmistojen mallintaminen kertausta Harri Laine 1

Kevät 2016 Arkkitehtuurin arviointi, ATAM. Ohjelmistoarkkitehtuurit 2016

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

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

Toimilohkojen turvallisuus tulevaisuudessa

Ketteryys pähkinänkuoressa. Kokopäivän Scrum-kurssin sisältö tislattuna ja tiivistettynä kolmeen varttiin

Ohjelmistojen mallintaminen, kesä 2009

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Scrum is Not Enough. Scrum ei riitä. Ari Tanninen & Marko Taipale. Nääsvillen oliopäivä 2009 Tampereen teknillinen yliopisto 9.12.

Ohjelmistojen mallintaminen, mallintaminen ja UML

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

Ohjelmistoarkkitehtuurit. Syksy 2007

Projektityö

Tutkittua tietoa. Tutkittua tietoa 1

10. Tuoterunkoarkkitehtuurit

Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistoprosessit ja ohjelmistojen laatu (4op)

9. Muunneltavuuden hallinta

Ohjelmistoarkkitehtuurit, syksy

Ohjelmistoarkkitehtuurit. Kevät 2014

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

Koulutuksen suhdannevaihtelut. Zeppeliinistä suihkukoneaikaan

Ohjelmistoarkkitehtuuri

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Johdantoluento. Ohjelmien ylläpito

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

Ohjelmistotekniikan menetelmät, kesä 2008

6. Arkkitehtuurityylit

statbeatmobile PROJECT REVIEW iteration 1

Scrumin käyttö ketterässä sovelluskehityksessä

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

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

Ohjelmistoarkkitehtuurit

Ohjelmistoarkkitehtuurit Johannes Koskinen. Osittavat arkkitehtuurityylit

6 Ohjelmistoarkkitehtuurit

9. Ohjelmistoarkkitehtuurien arviointi

Arkkitehtuuri muutosagenttina

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit, syksy

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit Kevät Johannes Koskinen Esimerkki: Auton toiminnan monitorointijärjestelmä

Helia Ohjelmointitaito Tuomas Kaipainen Mermit Business Applications Oy Mermit Business Applications

6. Arkkitehtuurityylit

Tuoterunko hajautetussa ympäristössä

10. Muunneltavuuden hallinta: variaatiopisteet

Yrittäjäkasvatuksen polku - sivusto. Yksityiskohtainen suunnittelu Huhtikuu 2018

Luku 8 Rakennusvaihe. Detailed Design. Programming. Moduulisuunnittelu. Ohjelmointi

Laaja-alainen, opiskelijalähtöinen ja projektiperusteinen opetussuunnitelma, case Monitori

2. Ohjelmistotuotantoprosessi

Ohjelmistotekniikan menetelmät, kevät 2008

Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia

10. Muunneltavuuden hallinta: variaatiopisteet

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

Mitä on ohjelmistotuotanto?

Computing Curricula raportin vertailu kolmeen suomalaiseen koulutusohjelmaan

Älykästä. kulunvalvontaa. toimii asiakkaan omassa tietoverkossa

Tietorakenteet ja algoritmit

Kuntien Kansalliseen palveluarkkitehtuuriin liittyminen. Kunta-KaPA

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Lakki. Lisää ot sik k o osoit t am alla. Nöyrästi vain lakki kourassa... Jussi Vänskä Espotel Oy. vierailuluentosarja OTM kurssi 2010

Transkriptio:

Yleisiä asioita Oliokirja:http://www.cs.tut.fi/~kk/Ohjelmistoarkkitehtuuri.pdf Tenttipäivä 7.5. Tallennukset, jospas tänään onnistaisi Viikkoharkat löytyvät IDLEstä (TTY), kurssin kotisivuilta/paikallisilta sivuilta, muut yliopistot Harkat alkavat ensi viikolla Vuorovaikutusta / vastailumahdollisuus luennoijan kyselyihin http://m31.screen.io/ohar 1

1 Johdanto 1.1 Mikä on ohjelmistoarkkitehtuuri? 1.2 Ohjelmistoarkkitehtuuri ja laatuvaatimukset 1.3 Katsaus ohjelmistotuotannon kehittymiseen 1.4 Miksi ohjelmistoarkkitehtuuri on tärkeä 1.5 Ohjelmistoarkkitehtuuri ja ohjelmistokehitysprosessi 1.6 Ohjelmistoarkkitehtuuri ja organisaatio 1.7 Ohjelmiston osittaminen 1.8 Toteutusalustan arkkitehtuuri 1.9 Yhteenvetoa 2

1.3 Katsaus ohjelmistotuotannon kehittymiseen

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

Järjestelmäkehitys Vaatimukset Ohjelmointikieli Programming-in-the-large Ongelma: Riippuvuuksien hallinta Ratkaisu: Arkkitehtuuri Komponent Komponent Komponent Komponentti 5

Ohjelmistotuotanto Vaatimukset Ohjelmointikieli Prosessi Programming-in-the-many Ongelma: Ihmisten hallinta Ratkaisu: Prosessi Komponent Komponent Komponent Komponentti 6

Hajautetut järjestelmät Vaatimukset Ohjelmointikieli Prosessi Ongelma: Järjestelmän hajauttaminen, rinnakkaisuus Ratkaisu: Arkkitehtuuri Komponent Komponent Komponent Komponentti Rinnakkaiset laitealustat 7

Mallipohjainen ohjelmistotuotanto Vaatimukset Ohjelmointikieli malli malli malli Model-driven development Ongelma: Monimutkaisuuden hallinta Ratkaisu: Abstraktio, mallintaminen, arkkitehtuuri Komponent Komponent Komponent Komponentti 8

Model-Driven Development (MDD) Bran Selic 9

Tuoteperheet Vaatimukset malli Ohjelmointikieli Ohjelmointialusta malli Ongelma: Muunneltavuuden hallinta Ratkaisu: Arkkitehtuuri + prosessi malli Komponent Komponent Komponent Komponentti 10

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

Liiketoimintapalvelut Palvelut Vaatimukset malli Ohjelmointikieli Ohjelmointialusta malli malli Ongelma: Integrointi liiketoimintaan Ratkaisu: Arkkitehtuuri (SOA) Komponent Komponent Komponent Komponentti 12

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

Taloussanomat 2.9.2005 14

Kysyttävää?

Miksi ohjelmistoarkkitehtuuri on tärkeä? 16

Miksi ohjelmistoarkkitehtuuri on tärkeä? Tarjoaa abstraktiotason, jolla monet keskeiset järjestelmän kehittämiseen liittyvät ongelmat ratkaistaan Keskeinen kommunikoinnin väline ohjelmiston elinkaaren aikana: määrittelee ja nimeää järjestelmän keskeiset osat, ratkaisut, käsitteet Arkkitehtuuri antaa rajat ja helpottaa (tai tekee mahdolliseksi) järjestelmän rakentamista, testausta, ylläpitoa ja uudelleenkäyttöä Ensimmäinen analysoitavissa oleva järjestelmän esitysmuoto: järjestelmää voidaan testata ennen toteutusta 17

Mitä seurauksia epäonnistuneella ohjelmistoarkkitehtuurilla on/voi olla? 18

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 19

Mitkä syyt voivat johtaa epäonnistuneeseen arkkitehtuuriin? 20

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 - arkkitehdiltä puuttuu kohdealueen tuntemus - muita? 21

Kysyttävää?

Ohjelmistoarkkitehtuuri ja ohjelmistokehitysprosessi

Arkkitehtuurin kehittäminen Laatuvaatimukset Arkkitehtuurin kannalta merkittävät vaatimukset Vaatimusanalyysi Keskeiset toiminnalliset vaatimukset Ympäristövaatimukset Alustava arkkitehtuurisuunnittelu Alustava arkkitehtuuri Laatuvaatimuksen huomiointi Rajoitteet Yleisten ratkaisumallien soveltaminen Arkkitehtuurimuunnos ei OK OK Toissijaiset toiminnalliset vaatimukset Kaikki käsitelty Inkrementaalisuus, agile: pienin toteutettavissa oleva arkkitehtuuri -> toteutus Yksityiskohtainen suunnittelu Arkkitehtuurin arviointi Arkkitehtuuri 24

Arkkitehtuurin kannalta merkittävät vaatimukset Keskeiset toiminnalliset vaatimukset (mitä järjestelmä tekee) - Usein lähtökohta arkkitehtuurin suunnittelulle Laatuvaatimukset (miten tehdään) vaikuttavat tyypillisesti olennaisesti arkkitehtuuriin ( ei-toiminnalliset vaatimukset ) - Esim. suorituskyky, muunneltavuus, skaalautuvuus, hinta, ylläpidettävyys, siirrettävyys, uudelleenkäytettävyys jne. Kehitysympäristövaatimukset - Järjestelmä on pystyttävä järkevästi kehittämään tietyssä organisaatiossa (esim. hajautettu kehitys) Suoritusympäristövaatimukset - Esim. sulautetun järjestelmän laiteympäristö Ympäristövaatimukset Rajoitteet - Esim. tietyn teknologian sanelemat 25

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

Arkkitehtuurin arviointi Monet ohjelmiston laatuominaisuudet olisivat pääteltävissä jo arkkitehtuurikuvauksesta (esim. tiukka kerrosarkkitehtuuri -> suorituskykyongelmat) Arkkitehtuurin arviointi = laatuvaatimusten tarkennus + arkkitehtuurin arviointi tarkennettuja laatuvaatimuksia vasten (esim. ATAM) Arkkitehtuurin arviointi on ohjelmiston testaamista sen ensimmäisen täsmällisen kuvauksen perusteella 27

Arkkitehtuurin kehittäminen 28

Tehdään arkkitehtuuri up-front Analysis Product Backlog Architecture design Backlog retrospective review Potentially shippable product increment 2-4 weeks Backlog Potentially shippable product increment 2-4 weeks Backlog Delivered product 29

0 Analysis Product Backlog 0 retrospective review Architecture, development environment, etc.. 2-4 weeks Backlog Potentially shippable product increment 2-4 weeks Backlog Delivered product 30

Arkkitehtuuri sprinteissä Analysis Product Backlog Backlog retrospective review Architecture design Potentially shippable product increment 2-4 weeks Architecture design Backlog Potentially shippable product increment 2-4 weeks Architecture design Backlog Delivered product 31

Erillinen arkkitehtuuritiimi Analysis Product Backlog XOR Architecture team Backlog retrospective review Potentially shippable product increment 2-4 weeks Backlog Potentially shippable product increment 2-4 weeks Backlog Delivered product 32

Vaatimukset 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 Vaatimukset muuttuvat järjestelmän elinkaaren aikana - Walking on water and developing software from specifications are easy tasks when both are frozen (E. Bevard) 33

Kysyttävää?

Ohjelmistoarkkitehtuuri ja organisaatio liiketoimintayksikkö järjestelmä ryhmä alijärjestelmä henkilö henkilö komponentti komponentti Conwayn laki: arkkitehtuurin rakenne = organisaation rakenne 35

Ohjelmiston osittaminen Perusteena voi olla: toiminnallisuus yleisyys hajautus muutosherkkyys intressi, huolenaihe (concern)... huolenaihe 36

Läpitunkeva toiminta (cross-cutting concerns) Loki Turvallisuus Koodi Koodi Sessiot Turvallisuus Loki Loki Turvallisuus Turvallisuus Koodi Koodi Sessiot Sessiot Loki 37

Aspektit Loki Turvallisuus Koodi Koodi Sessiot Koodi Koodi Loki Turvallisuus Sessiot 38

1.8 Toteutusalustan arkkitehtuuri Toteutusalusta pakottaa sovellukselle usein tietyn arkkitehtuurin Sovellus rakennetaan tämän arkkitehtuurin ehdoilla Sovelluskehityksen keskeinen kysymys on miten vaatimukset saadaan toteutettua alustan tarjoamilla välineillä Esimerkiksi: Miten vaatimukset toteutetaan J2EE-alustalla? Miten vaatimukset toteutetaan.net-alustalla? Miten vaatimukset toteutetaan Qt-alustalla? 39

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

Arkkitehtuuriperustainen ohjelmointi, mitä vaatimuksia tämä asettaa ohjelmistoarkkitehtuurille? 41

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

Yhteenvetoa Ohjelmistoarkkitehtuuri on järjestelmän keskeisiä ratkaisuja koskeva kuvaus, joka mahdollistaa järjestelmän hallinnan sen elinkaaren aikana Ohjelmistoarkkitehtuurilla ja ohjelmiston laadulla on kiinteä yhteys: arkkitehtuuri on suuressa määrin laatuominaisuuksien tukemista Ohjelmistokehityksestä on tullut arkkitehtuurikeskeistä: monet lähestymistavat ja teknologiat perustuvat tai liittyvät läheisesti arkkitehtuuriin 43

Tehtävä Tietokoneita myyvä yritys TietoMyyrä on laajentamassa toimintaansa verkkoon. Uuden toimintamallin mukaan asiakkaat voivat tilata TietoMyyrältä valmiita konepaketteja ja noutaa valmiit koneet TietoMyyrän toimistolta. Olette voittaneet tarjouspyynnön ja saaneet tilauksen TietoMyyrän verkkokauppasovelluksesta. Mitkä asiat vaikuttavat järjestelmän arkkitehtuuriin? 44

Kysyttävää?