Yleisiä asioita Harkat alkavat ensi viikolla Vierailuluentoa Ensi viikon perjantaina, Janne Viitala, Sandvik Slackin #luennot-kanava taas käytössä 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 (palvelupohjainen arkkitehtuuri) Komponent Komponent Komponent Komponentti 12
Ohjelmistotuotanto tänään Ohjelmointialusta Liiketoimintapalvelut Vaatimukset malli Ohjelmointikieli 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 Talouselämä 21.8.2014 Kairos Future of Business -tutkimus Ketterä lähestymistapa ei kuitenkaan vähennä arkkitehtuurin tarvetta ohjelmistokehityksessä. Laadukkaan ohjelmistoarkkitehtuurin rooli päinvastoin korostuu yhä enemmän. Kun vähintään 80 prosenttia arkkitehtuurisuunnitelmista toteutuu ja projektit pannaan täytäntöön seuraavien 3 12 kuukauden aikana, on tilanne usein hyvä. http://www.talouselama.fi/kumppaniblogit/tieto/hyv at-tulokset-edellyttavat-etta-it-ymmartaaliiketoimintaa-3362373 http://pages.tieto.com/business-and-ittransformation.html?utm_source=tieto.com&utm_medium=link& utm_campaign=transformation%20research 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
AEON Center (Carrara-marmorin korvaaminen 80 000 000 $ refaktorointi)
Mitä seurauksia epäonnistuuneella ohjelmistoarkkitehtuurilla on?
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 21
Syitä epäonnistuneeseen arkkitehtuuriin Vasa-laivan tapauksessa laivan vakautta testattiin, ja tulos oli katastrofi, mutta asia peiteltiin ja projektia jatkettiin, koska homma piti saada valmiiksi Kuninkaan vaatimus tykkimäärästä ei mahtunut yhteen kanteen, joten laivasta piti tehdä kiireessä kaksikantinen Kiire, painostus Ristiriitaiset vaatimukset, nopeus, uusi teknologia, näyttävyys, mahtipontisuus, näyttävyys vs. käytännöllisyys Suunnittelija ei ollut koskaan moisia tehnyt Painopiste liian ylhäällä, tykkikannet liian korkealla Tukirakenteet liian paksuja ja niitä liikaa Kansien korkeus turhan iso painopiste nousi Epäsymmetrisyys, eri mittayksikköjen käyttö - 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? 22
Anna esimerkki ohjelmistoarkkitehtuurin tai suunnittelun takia epäonnistuneesta projektista 23
Kun ohjelmistoarkkitehtuuri menee pieleen USS Yorktown - arkkitehtuurissa puutteita, päälle inhimillinen virhe Ajoneuvoliikenteein rekisteri (PALKO) aloitettiin 1999 päätökseen 2013 10+ vuotta myöhässä Greyhound Lines Trips (lippujenvaraus) lentolippujenvarausjärjestelmän pohjalta kehitelty epäonnistuminen http://business.baylor.edu/charles_davis/courses/acc5 317/articles/toms1094.htm http://www.artechra.com/media/speaking/2008/jaoo20 08-Top10Mistakes.pdf http://www.cse.psu.edu/~gxt29/bug/softwarebug.html 24
Kysyttävää?
Ohjelmistoarkkitehtuuri ja ohjelmistokehitysprosessi
Arkkitehtuurin kehittäminen Laatuvaatimukset Arkkitehtuurin kannalta merkittävät vaatimukset Vaatimusanalyysi Keskeiset toiminnalliset vaatimukset Ympäristövaatimukset Alustava arkkitehtuuri Alustava arkkitehtuurisuunnittelu 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 27
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 28
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, vakaus, toimitusvarmuus, Johto Arkkitehti Asiakas 29
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 30
Arkkitehtuurin kehittäminen 31
Tehdään arkkitehtuuri ensin Analysis Product Backlog up-front Architecture design Sprint Backlog Sprint retrospective Sprint review Sprint Potentially shippable product increment 2-4 weeks Sprint Backlog Sprint Potentially shippable product increment 2-4 weeks Sprint Backlog Sprint Delivered product 32
Sprint 0 Analysis Product Backlog Sprint 0 Sprint retrospective Sprint review Sprint Architecture, development environment, etc.. 2-4 weeks Sprint Backlog Sprint Potentially shippable product increment 2-4 weeks Sprint Backlog Sprint Delivered product 33
Arkkitehtuuri sprinteissä Analysis Product Backlog Sprint Backlog Sprint retrospective Sprint review Architecture design Sprint Potentially shippable product increment 2-4 weeks Architecture design Sprint Backlog Sprint Potentially shippable product increment 2-4 weeks Architecture design Sprint Backlog Sprint Delivered product 34
Erillinen arkkitehtuuritiimi Analysis Product Backlog XOR Architecture team Sprint Backlog Sprint retrospective Sprint review Sprint Potentially shippable product increment 2-4 weeks Sprint Backlog Sprint Potentially shippable product increment 2-4 weeks Sprint Backlog Sprint Delivered product 35
Kanban ja arkkitehtuuri https://scalingsoftwareagility.wordpress.com/2010/03/05/an-agile-architectural-epic-kanban-system-part-2-%e2%80%93-the-model/ 36
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) 37
Architecture in Agile World, James Cooper http://www.slideshare.net/jamescooper/archite cture-in-an-agile-world Janne Sinivirta All hand on deck, Intro to Agile Architechture https://vimeo.com/84116089 38
Kysyttävää?
Ohjelmistoarkkitehtuuri ja organisaatio alijärjestelmä liiketoimintayksikkö järjestelmä ryhmä henkilö henkilö komponentti komponentti Conwayn laki: arkkitehtuurin rakenne = organisaation rakenne 40
Ohjelmiston osittaminen Perusteena voi olla: toiminnallisuus yleisyys hajautus muutosherkkyys intressi, huolenaihe (concern)... huolenaihe 41
Läpitunkeva toiminta (cross-cutting concerns) Loki Turvallisuus Koodi Koodi Sessiot Turvallisuus Loki Loki Turvallisuus Turvallisuus Koodi Koodi Sessiot Sessiot Loki 42
Aspektit Loki Turvallisuus Koodi Koodi Sessiot Koodi Koodi Loki Turvallisuus Sessiot 43
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? 44
Kehitys kulkee kohti arkkitehtuuritason toteutusvälineitä Toteutusvälineet: ohjelmointikieli ohjelmistoarkkitehtuuri Muuttujat Aliohjelmat Luokat Komponentit Alustat Ekosysteemit 45
Arkkitehtuuriperustainen ohjelmointi, mitä vaatimuksia tämä asettaa ohjelmistoarkkitehtuurille? 46
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 47
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 48
Tehtävä Kukkia ja LVI-tekniikka Vammalassa ja Korpilahdella myyvä yritys Keijon Kukka ja LVI on laajentamassa toimintaansa verkkoon. Uuden toimintamallin mukaan asiakkaat voivat tilata Keijon Kukka ja LVIltä valmiita kukkapaketteja ja putkiremontteja. Olette voittaneet tarjouspyynnön ja saaneet tilauksen Keijon Kukka ja LVIn verkkokauppasovelluksesta. Mitkä asiat vaikuttavat järjestelmän arkkitehtuuriin? 49
Kysyttävää?