Juha Taina, Marko Salmenkivi ja Kjell Lemström,

Samankaltaiset tiedostot
Johdattelua, motivointia, eli missä ollaan ja kuinka siihen on tultu

Software engineering

1. Johdanto. Ohjelmistotuotannon ongelmia

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

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

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

Ketteristä menetelmistä ja niiden ryhmädynamiikasta. Ohjelmistotuotantoprojektien johtaminen ja ryhmädynamiikka Fabian Fagerholm

Avoimen lähdekoodin kehitysmallit

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

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

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

Kurssin aihepiiri: ohjelmistotuotannon alkeita

Avoin lähdekoodi hankinnoissa Juha Yrjölä

Prosessiajattelu. Organisaation prosessikuvaus - CMMI. Prosessikuvaukset ja elinkaarimallit. Organisaation prosessien määritys CMMI käytänteet

Software Factory ohjelmistotuotannon osaaminen

Computing Curricula raportin vertailu kolmeen suomalaiseen koulutusohjelmaan

10 Kohti ketterää ohjelmistokehitystä

SEPA päiväkirja. BetaTeam. Juho Mäkinen, 57796V, Jari Leppä, 42710V, Versio Pvm Tekijä Kuvaus

Ohjelmistojen mallintaminen. Matti Luukkainen

Vapaa ohjelmistokehitys, Osa I

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Onnistunut ohjelmistoprojekti

Tutkittua tietoa. Tutkittua tietoa 1

KOODAAKO PROJEKTIPÄÄLLIKKÖ?

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

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

Johdantoluento. Ohjelmien ylläpito

Prosessiajattelu. Prosessikuvaukset ja elinkaarimallit. Organisaation prosessikuvaus - CMMI. Sami Kollanus TJTA330 Ohjelmistotuotanto 3.4.

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Ohjelmistoprojekteista. Datanomiopiskelijat 2.vuosi

Ohjelmistojen mallintaminen, mallintaminen ja UML

PROJEKTINHALLINTA. Käyttäjälähtöinen suunnittelu

API:Hack Tournee 2014

Ohjelmistotekniikka - Luento 2

TkK-tutkielmat

TIETOTEKNIIKAN KOULUTUSOHJELMA

Kettärä organisaatio kumppanuusstrategialla

Ketterä projektinhallinta

Suomen avoimien tietojärjestelmien keskus COSS ry

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

Tietojenkäsittelytieteiden koulutusohjelma. Tietojenkäsittelytieteiden laitos Department of Information Processing Science

2. Ohjelmistotuotantoprosessi

Onnistunut ohjelmistoprojekti

4. Lausekielinen ohjelmointi 4.1

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Prosessimalli. 2. Ohjelmistotuotantoprosessi. Prosessimallin vaihejako. Prosessimallien perustehtävät. Ohjelmiston suunnittelu. Vaatimusmäärittely

Ketterien periaatteiden merkitys projektityössä

VERSIONHALLINTA. PARIOHJELMOINTI Lari Ahti, 62634M Antti Kauppinen, 58390D

Ketterät menetelmät ja julkinen hankinta

Ohjelmistotekniikka kevät 2003 Laatujärjestelmät

ITK130 Ohjelmistoprosessi

Kokonaisvaltainen mittaaminen ohjelmistokehityksen tukena

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

Multisite -projektit uhasta mahdollisuus? Johtamiseväitä projektipäällikölle

Ohjelmistojen mallintaminen, kesä 2009

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

Projektityö

Avointen ohjelmistojen käyttö ohjelmistokehityksessä

1. Olio-ohjelmointi 1.1

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

Ohjelmistoarkkitehtuurit. Syksy 2010

Scrumjatkuvan palvelun DWprojektissa-case. Niina Mäkiranta & OP-scrum-tiimi Aureolis Oy

Ohjelmistojen mallintaminen, kesä 2010

Ohjelmistoprojektien johtaminen ja ryhmädynamiikka

Case: Avoimen lähdekoodin ohjelmistojen hyödyntäminen Lahdessa

BDD (behavior-driven development) suunnittelumenetelmän käyttö open source projektissa, case: SpecFlow/.NET.

Ohjelmistotekniikka - Luento 3 Jouni Lappalainen

Tietojärjestelmän osat

Tietotekniikan koulutus ammattikorkeakouluissa 2012 Uudellamaalla

Raportti Fabian Fagerholmin vierailuluennosta 25.11

Lyhyt johdatus ketterään testaukseen

1. Johdanto. Ohjelmistotuotannon piirteitä

1. Johdanto. Ohjelmistotuotannon piirteitä

1. Johdanto. Ohjelmistotuotannon piirteitä. Ohjelmisto ja järjestelmä. Osajärjestelmät ja käyttäjät. Järjestelmän ja ohjelmiston laadinta

Ohjelmistojen mallintaminen

DIPLOMITYÖ ARI KORHONEN

Projektinhallinta SFS-ISO mukaan

Siirtyminen ketterien menetelmien maailmaan! Maarit Laanti 24 October 2013!

ITSM. Olli Saranen Senior Consultant Avoset Oy Oliko ennen kaikki paremmin kuin nykyään? Kivikaudelta nykyaikaan

Ohjelmistojen mallintaminen. Luento 11, 7.12.

812341A Olio-ohjelmointi, I Johdanto

PM Club Jyväskylä Jatkuva uudistuminen osaamista ja kokemusta jakamalla

Prosessien kypsyysmallit hajautetussa ohjelmistokehityksessä

FLOSS. Terhi Kilamo, assistentti

1. Johdanto. Ohjelmistotuotannon piirteitä

Ohjelmistotuotanto, prosessit Syksy Ohjelmistotuotantoprosessi. Prosessimalli. Prosessimallien perustehtävät. Prosessimallin vaihejako

Ohjelmistojen mallintaminen, kurssikoe esimerkkivastauksia

Ohjelmistojen suunnittelu

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

Mitä on ohjelmistotuotanto?

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

Testauksen suunnittelu ja dokumentointi ketterässä testauksessa Tutkimustuloksia

1. Johdanto. Ohjelmistotuotannon piirteitä. Ohjelmisto ja järjestelmä. Osajärjestelmät ja käyttäjät. Järjestelmän ja ohjelmiston laadinta

Hajaantuminen. Juha Taina, Marko Salmenkivi ja Kjell Lemstöm, Ohjelmistotuotanto 30

Juha Taina, Marko Salmenkivi ja Kjell Lemström,

Ohjelmointitekniikka lyhyesti Survival Kit 1 Evtek KA ELINKAARIMALLEISTA

Ohjelmistoprosessit ja ohjelmistojen laatu Kevät Ohjelmistoprosessit ja ohjelmistojen laatu. Projektinhallinnan laadunvarmistus

A4.1 Projektityö, 5 ov.

Loppuraportti. Virtuaali-Frami, CAVE-ohjelmisto. Harri Mähönen projektiassistentti Seinäjoen ammattikorkeakoulu. Versio

Transkriptio:

Ohjelmistotuotanto Johdattelua, motivointia, eli missä ollaan ja kuinka siihen on tultu Kuinka valmistaa laadukkaita ja tehokkaita ohjelmistoja mahdollisimman edullisesti? Ohjelmistotuotanto (Software Engineering) tarkoittaa periaatteita ja käytäntöjä, joita noudattamalla tämän pitäisi onnistua! 581259 Ohjelmistotuotanto 1 581259 Ohjelmistotuotanto 2 Ohjelmistojen laatu Ohjelmistotuotanto Laatu on ollut ongelma koko sen ajan kun ohjelmistoja on ollut olemassa Ohjelmistotuotanto tutkimusalana syntyi pitkälti ohjelmistojen heikon laadun takia (Mitä ohjelmistojen laatu on?) yhdistää tietämystä useilta aloilta Tietojenkäsittelytiede Projektinhallinta Systems engineering ( järjestelmäsuunnittelu, ei vakiintunutta suomennosta) 581259 Ohjelmistotuotanto 3 581259 Ohjelmistotuotanto 4 Insinööritiede: prosessi Painotus käytäntöön: kuinka todellisia ohjelmistoja tehdään todellisessa maailmassa Ohjelmistotuotantoprosessi (software process) on joukko toimintoja, jotka johtavat ohjelmiston valmistumiseen Vaikutteita muista insinööritieteistä (systems engineering) Ohjelmistojen tuottamisessa kuitenkin omat erityispiirteensä Insinööritiede: työkalut Korkean tason ohjelmointikielet Mallinnustyökalut: Unified Modeling Language (UML) Versionhallintaohjelmistot Virheenjäljittimet CASE-työkalut ym. ym. 581259 Ohjelmistotuotanto 5 581259 Ohjelmistotuotanto 6 1

Human factors Ihmiset tekevät ohjelmistoja ihmisten käytettäväksi Lisäksi suuret ohjelmistot tehdään ryhmissä, ohjelmistotuotantoprojekteissa On herätty huomaamaan, että ihmisten ja ryhmien ominaisuudet (human factors) ovat keskeisiä tekijöitä ohjelmistotuotannossa Systemaattista, tutkittua tietoa siitä, kuinka human factors pitäisi ottaa huomioon ohjelmistotuotannossa, on hyvin vähän Human factors: yksilö Human factors: yksilöön, ryhmään, organisaation, kulttuuriin liittyvät tekijät Yksilö Taidot, osaaminen Yksilöpsykologiset tekijät persoonallisuus (käyttäytymiseen ja tuntemiseen liittyvät taipumukset) motivaatio kognitiivinen kyvykkyys sosiaaliset taidot 581259 Ohjelmistotuotanto 7 581259 Ohjelmistotuotanto 8 Human factors: ryhmä Kuinka erilaiset ihmiset saadaan toimimaan yhdessä tavoitteen (= kaikin puolin onnistunut ohjelmisto) saavuttamisen kannalta optimaalisesti? Ryhmäilmiöt, ryhmädynamiikka Kommunikaatio Roolit Johtajuus (valta) Konfliktien ratkaiseminen Ryhmäkoheesio, sosiaalinen integraatio Human factors: organisaatio Ohjelmistot tehdään yleensä jossakin organisaatiossa, tyypillisesti yrityksessä Ryhmääkin laajempi organisaatiotason ilmiöiden näkökulma tarpeen Esim. organisaation arvot, johtaminen, laatujärjestelmä, palkitsemisjärjestelmä, tiedonkulku, yrityskulttuuri 581259 Ohjelmistotuotanto 9 581259 Ohjelmistotuotanto 10 Human factor: kulttuuri Kulttuurien väliset erot Kuinka johdetaan? Kuinka kommunikoidaan? Globaali ohjelmistokehitys ja hajautetut tiimit lisänneet kulttuurierojen huomioimisen merkitystä Ketterät prosessimallit Moderni ohjelmistokehitys siirtymässä suuntaan, jossa kommunikaatio ja muut sosiaaliset tekijät entistä keskeisemmässä roolissa Ketterät (agile) prosessimallit Projektipäällikön merkitys vähentynyt, tasaarvoiset ryhmät itseorganisoituminen - ei ryhmän ulkopuolista roolien jakoa kommunikointi ensisijaisesti kasvotusten, ei dokumenttien välityksellä 581259 Ohjelmistotuotanto 11 581259 Ohjelmistotuotanto 12 2

Ohjelmistotuotannon synty Termi Ohjelmistotuotanto (Software Engineering) esiteltiin ensimmäistä kertaa 1968 pidetyssä NATO:n konferenssissa. Termi määriteltiin näin: The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines. (P. Naur, R.Randell (eds.): Software Engineering: A Report on a Conference Sponsored by the NATO Science Committee, 1968) 1950-luku Ensimmäiset ohjelmat kirjoitettiin konekielellä Ensimmäinen kaupallinen ohjelmisto 1951 Englannissa (J. Lyons Company) Ensimmäiset korkean tason ohjelmointikielet kehitettiin jo 50-luvulla (Fortran, Cobol, Algol) Alkuaikoina ohjelmistojen teko oli suoraviivaista ja ohjaamatonta Silti jo 50-luvulla tehtiin kohtuullisen monipuolisia ohjelmistoja 581259 Ohjelmistotuotanto 13 581259 Ohjelmistotuotanto 14 1960-luku 1960-luvun alussa määriteltiin jo varsin moderneja asioita, kuten testattavuus ja rajapinnat ei vielä voi puhua varsinaisesta ohjelmistotuotannosta Cobol ja PL/1 -ohjelmointikielet merkittäviä kehitysaskelia, edelleen 60-luvun lopussa kehitetty C-kieli (B-kielestä jatkokehitetty) 60-luku ja ohjelmistokriisi tietokoneiden kapasiteetti kasvoi ohjelmistojen koko kasvoi suoraviivainen ohjelmistojen tekemisen tapa alkoi kohdata suuria ongelmia laatuongelmat projektien myöhästely kustannusten ylittäminen ns. 60-luvun ohjelmistokriisi johtopäätös: ohjelmistojen valmistamisessa tarvitaan muutakin kuin ohjelmointia 581259 Ohjelmistotuotanto 15 581259 Ohjelmistotuotanto 16 Ensimmäiset ohjelmistotuotantokonferenssit Vuosina 1968-69 NATO organisoi kaksi konferenssia esiteltiin termi Software Engineering määriteltiin ohjelmistotuotannon perusteet Konferenssit eivät ehkä ratkaisseet ohjelmistokriisiä Esitellyt ideat rakensivat perustan, jolle nykyaikainen ohjelmistotuotanto on rakennettu 1970-luku ja prosessimallit 1970-luvulle tultaessa määriteltiin ensimmäinen ohjelmistotuotannon prosessimalli Prosessimalli on mahdollisimman yleisesti sovellettavissa oleva ohjeisto ohjelmistojen tuottamiseen Ensimmäinen prosessimalli oli vesiputousmalli Sen pohjana käytettiin insinööritieteiden yleistä systems engineering -mallia ( järjestelmäsuunnittelumallia, vakiintunutta suomennosta termille ei ole) 581259 Ohjelmistotuotanto 17 581259 Ohjelmistotuotanto 18 3

Systems engineering prosessi (vesiputousmalli) Vaatimusten määrittely Suunnittelu Toteutus ja yksikkötestaus Integroiminen ja järjestelmätestaus Käyttöönotto ja ylläpito Systems engineering -malli Systems engineering -mallin avulla voidaan suunnitella vaikkapa siltoja Malli kopioitiin suoraan ohjelmistotuotantoon Mutta onko siltojen suunnittelu samanlaista kuin ohjelmistojen suunnittelu? Pian huomattiin, että vesiputousmalli ei sovi kaikenlaisten ohjelmistojen tekoon 1970- ja 80-luvulla esiteltiin lukuisia muita prosessimalleja 581259 Ohjelmistotuotanto 19 581259 Ohjelmistotuotanto 20 1980-luku ja oliopohjaisuus Merkittävin uusi asia oliopohjaisuus Ensimmäinen oliokonferenssi OOPSLA pidettiin 1986. Oliomaailman periaatteet oli esitelty aiemmin Vasta oliokielet kokosivat ne yhteen (ensimmäinen oliokieli SIMULA kuitenkin jo 1967) Ohjelmointikielistä oliopohjaisuus levisi vähitellen koko ohjelmistotuotantoon 1990-luvun alku ja henkilökohtainen tietojenkäsittely 1980-luvulla alkanut henkilökohtainen tietojenkäsittely (jokaisella oma tietokone) mullisti ohjelmistojen tarpeen, mutta ei niiden valmistuksen tekniikkaa 1990-luvulle tultaessa ohjelmistotuotanto melko vakiintunutta työkalujen aika: CASE-työkalut kehittyivät (Computer-Aided Software Engineering) 581259 Ohjelmistotuotanto 21 581259 Ohjelmistotuotanto 22 1990-luvun ilmiöitä FOSS 1990-luvulla Internetin merkityksen räjähdysmäinen kasvu FOSS (Free/Open Source Software), avoimen lähdekoodin ohjelmistot Lähdekoodin vapaus Free software: GNU project 1983- Vakaiden versioiden yhteydessä julkistetaan lähdekoodi Näiden välillä vain rajatun kehittäjien joukon saatavilla Linux 1991- vapaa lähdekoodi Myöhemmin lukuisia muita Open Source Initiative (OSI) vuonna 1998 (organisaatio edistämään vapaata/avointa ohjelmistokehitystä) Eric S. Raymond: The Cathedral and the Bazaar (1997): avoin ohjelmistokehitys internetin kautta toimivan yhteisön kautta 581259 Ohjelmistotuotanto 23 581259 Ohjelmistotuotanto 24 4

Avoimen ohjelmistokehityksen ideoita Vapaus, copyright-rajoitusten purkaminen Jakaminen, kommunikaatio, kaikkien mahdollisuus osallistua ( basaarimalli ) Sosiaalisten tekijöiden korostuminen Ohjelmistojen tekeminen itsessään arvokasta, ei vain taloudellinen hyöty Ei eksplisiittistä ohjelmistotuotantoprosessia Ohjelmoinnista kiinnostuneiden yhteisö: hauskaa Linus Torvalds: Just for fun (2001) The architecture of Linux, the Internet, and the World Wide Web are such that users pursuing their own "selfish" interests build collective value as an automatic byproduct - Tim O'Reilly: Architecture of Participation (2004) 581259 Ohjelmistotuotanto 25 581259 Ohjelmistotuotanto 26 1999 ja ketterät prosessimallit Merkittävä ohjelmistotekniikan murros tapahtui 1999 esiteltiin ensimmäinen ketterä prosessimalli Extreme Programming (XP) Myöhemmin monia muita, esim. Crystal, Scrum Ketterät prosessimallit saavuttivat nopeasti erityisesti ohjelmoijien ja PK-yritysten suosion, sillä mallit suosivat ohjelmointia suunnittelun sijaan Ketterien menetelmien käyttöä edistää Agile Alliance, joka on voittoa tuottamaton järjestö Manifesto for Agile Software Development vapautusliike dokumentoinnin ja kontrollin orjuudesta Ihmisten ja tiimin korostaminen, vuorovaikutuksen korostaminen itseorganisoituvat tiimit 581259 Ohjelmistotuotanto 27 581259 Ohjelmistotuotanto 28 I think that ultimately, Extreme Programming has mushroomed in use and interest, not because of pair-programming or refactoring, but because, taken as a whole, the practices define a developer community freed from the baggage of Dilbertesque corporations - Jim Highsmith, for the Agile Alliance, 2001 581259 Ohjelmistotuotanto 29 5