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

Samankaltaiset tiedostot
1.3 Katsaus ohjelmistotuotannon kehittymiseen

Arkkitehti?

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

1 Johdanto. Ohjelmistoarkkitehtuurit Syksy 2010 TTY Ohjelmistotekniikka 1

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

1 Johdanto! Arkkitehti?!

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ä

Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa

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

Ohjelmistojen suunnittelu

ITK130 Ohjelmistojen luonne

2 Ohjelmistoarkkitehtuurien kuvaus

Ketterä vaatimustenhallinta

Ohjelmistoarkkitehtuurit. Syksy 2008

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

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Ohjelmistoarkkitehtuurit, syksy

Ohjelmistoarkkitehtuurit. Kevät

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

Ohjelmistoarkkitehtuurit. Syksy 2010

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Tietojärjestelmän osat

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

7. Tuoterunkoarkkitehtuurit

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

Ohjelmistoarkkitehtuurit kevät

Ohjelmistoarkkitehtuurit

Tutkittua tietoa. Tutkittua tietoa 1

Ohjelmistoarkkitehtuurien arviointi

Suunnitteluratkaisut ja niiden arviointi sulautetuissa järjestelmissä

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

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelmistoarkkitehtuurit. Syksy 2007

Kevät Ohjelmistoarkkitehtuurit 2014

Ohjelmistoarkkitehtuuriin vaikuttavia tekijöitä. Kari Suihkonen

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

9. Ohjelmistoarkkitehtuurien arviointi

Scrumin käyttö ketterässä sovelluskehityksessä

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Ohjelmistojen mallintaminen kertausta Harri Laine 1

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

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Ohjelmistotekniikka - Luento 2

Toimilohkojen turvallisuus tulevaisuudessa

Koulutuksen suhdannevaihtelut. Zeppeliinistä suihkukoneaikaan

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

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

Ketterämpi Sonera Matka on alkanut!

Kevät 2016 Arkkitehtuurin arviointi, ATAM. Ohjelmistoarkkitehtuurit 2016

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

PROJEKTI- PÄÄLLIKÖSTÄ PRODUCT OWNERIKSI MEERI CEDERSTRÖM

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Osittavat arkkitehtuurityylit. Palveluihin perustuvat arkkitehtuurityylit. Erikoisarkkitehtuurityylit

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Ohjelmistoprojektien hallinta Vaihejakomallit

Ohjelmistojen mallintaminen, kesä 2010

9. Muunneltavuuden hallinta

Ohjelmistojen mallintaminen, mallintaminen ja UML

IT2015 EKT ERITYISEHTOJA OHJELMISTOJEN TOIMITUKSISTA KETTERIEN MENETELMIEN PROJEKTEILLA LUONNOS

2. Ohjelmistotuotantoprosessi

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

statbeatmobile PROJECT REVIEW iteration 1

Software engineering

13/20: Kierrätys kannattaa koodaamisessakin

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

10. Tuoterunkoarkkitehtuurit

Ohjelmistojen mallintaminen, kesä 2009

Ohjelmistoarkkitehtuurit, syksy

Arkkitehtuuri muutosagenttina

Ohjelmistoarkkitehtuurit. Kevät 2014

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

Käyttäjäkeskeinen suunnittelu

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

Projektityö

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

Testauksen suunnittelu ja dokumentointi ketterässä testauksessa Tutkimustuloksia

statbeatmobile FINAL PROJECT REVIEW

Onnistunut ohjelmistoprojekti

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

Tenttikysymykset. + UML- kaavioiden mallintamistehtävät

TDD Käytännössä Todellinen työkalu vai lehmipoikien laukkaa? Harri Kulmala Solita Oy

Ohjelmistoarkkitehtuurit, syksy

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

Helia Ohjelmointitaito Tuomas Kaipainen Mermit Business Applications Oy Mermit Business Applications

6 Ohjelmistoarkkitehtuurit

Harjoitustehtävät ja ratkaisut viikolle 48

Liiketoimintatarpeista toimivaksi järjestelmäksi Jari Kekkonen Chief Consulting Officer Ixonos Oyj

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

Kurssin aihepiiri: ohjelmistotuotannon alkeita

Ketterä projektikulttuuri on avain menestykseen - valmennuksella kohti ketterää kulttuuria

Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia

Ohjelmistoarkkitehtuurit. Kevät

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

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

Onnistunut ohjelmistoprojekti

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

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

TkK-tutkielmat

Transkriptio:

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ää?