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

Samankaltaiset tiedostot
Juha Taina, Marko Salmenkivi ja Kjell Lemström,

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)

Avoin lähdekoodi hankinnoissa Juha Yrjölä

Kurssin aihepiiri: ohjelmistotuotannon alkeita

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

Computing Curricula raportin vertailu kolmeen suomalaiseen koulutusohjelmaan

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

10 Kohti ketterää ohjelmistokehitystä

Vapaa ohjelmistokehitys, Osa I

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

Onnistunut ohjelmistoprojekti

Tutkittua tietoa. Tutkittua tietoa 1

Software Factory ohjelmistotuotannon osaaminen

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

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

Johdantoluento. Ohjelmien ylläpito

Ohjelmistojen mallintaminen. Matti Luukkainen

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

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Ohjelmistojen mallintaminen, mallintaminen ja UML

API:Hack Tournee 2014

Ohjelmistotekniikka - Luento 2

TkK-tutkielmat

Kettärä organisaatio kumppanuusstrategialla

KOODAAKO PROJEKTIPÄÄLLIKKÖ?

Suomen avoimien tietojärjestelmien keskus COSS ry

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

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

2. Ohjelmistotuotantoprosessi

Onnistunut ohjelmistoprojekti

4. Lausekielinen ohjelmointi 4.1

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Ohjelmistoprojekteista. Datanomiopiskelijat 2.vuosi

TIETOTEKNIIKAN KOULUTUSOHJELMA

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

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

Ohjelmistotekniikka kevät 2003 Laatujärjestelmät

ITK130 Ohjelmistoprosessi

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

Ohjelmistojen mallintaminen, kesä 2009

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

Projektityö

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

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.

Ketterä projektinhallinta

Ohjelmistoarkkitehtuurit. Syksy 2010

Ohjelmistojen mallintaminen, kesä 2010

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

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

Tietojärjestelmän osat

Ketterien periaatteiden merkitys projektityössä

Tietotekniikan koulutus ammattikorkeakouluissa 2012 Uudellamaalla

1 Johdanto. TTY Ohjelmistotekniikka. Ohjelmistoarkkitehtuurit Syksy 2008

Kokonaisvaltainen mittaaminen ohjelmistokehityksen tukena

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

DIPLOMITYÖ ARI KORHONEN

Projektinhallinta SFS-ISO mukaan

Ohjelmistoprojektien johtaminen ja ryhmädynamiikka

Ohjelmistojen mallintaminen. Luento 11, 7.12.

812341A Olio-ohjelmointi, I Johdanto

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

Ohjelmistotekniikka - Luento 3 Jouni Lappalainen

Prosessien kypsyysmallit hajautetussa ohjelmistokehityksessä

FLOSS. Terhi Kilamo, assistentti

1. Johdanto. Ohjelmistotuotannon piirteitä

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

Ohjelmistojen suunnittelu

Ketterät menetelmät ja julkinen hankinta

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

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,

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

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

Johdatusta ohjelmistotekniikkaan

1. Johdanto. Ohjelmistotuotannon piirteitä

Siirtyminen ketterien menetelmien maailmaan! Maarit Laanti 24 October 2013!

ITK130 Johdatus ohjelmistotekniikkaan

Ohjelmistotuotanto Kevät Matti Luukkainen. assistentteina: Verna Koskinen ja Santeri Horttanainen

Ohjelmistojen mallintaminen

Johdatus ohjelmistotuotantoon

Transkriptio:

Johdattelua, motivointia, eli missä ollaan ja kuinka siihen on tultu 581259 Ohjelmistotuotanto 1

Ohjelmistotuotanto 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 2

Ohjelmistojen laatu Laatu on ollut ongelma koko sen ajan kun ohjelmistoja on ollut olemassa Ohjelmistotuotanto tutkimusalana syntyi pitkälti ohjelmistojen heikon laadun takia (? on (Mitä ohjelmistojen laatu 581259 Ohjelmistotuotanto 3

Ohjelmistotuotanto yhdistää tietämystä useilta aloilta Tietojenkäsittelytiede Projektinhallinta Systems engineering vakiintunuttaei, järjestelmäsuunnittelu ) ( suomennosta 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ä 581259 Ohjelmistotuotanto 5

Insinööritiede: työkalut Korkean tason ohjelmointikielet Mallinnustyökalut: Unified Modeling Language ( UML ) Versionhallintaohjelmistot Virheenjäljittimet CASE-työkalut ym. ym. 581259 Ohjelmistotuotanto 6

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 581259 Ohjelmistotuotanto 7

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 ( taipumukset liittyvät motivaatio kognitiivinen kyvykkyys sosiaaliset taidot 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 ( valta ) Johtajuus Konfliktien ratkaiseminen Ryhmäkoheesio, sosiaalinen integraatio 581259 Ohjelmistotuotanto 9

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 10

Human factor: kulttuuri Kulttuurien väliset erot Kuinka johdetaan? Kuinka kommunikoidaan? Globaali ohjelmistokehitys ja hajautetut tiimit lisänneet kulttuurierojen huomioimisen merkitystä 581259 Ohjelmistotuotanto 11

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önmerkitysvähentynyt, tasaarvoiset ryhmät - itseorganisoituminen ei ryhmän ulkopuolista roolien jakoa kommunikointi ensisijaisesti kasvotusten, ei dokumenttien välityksellä 581259 Ohjelmistotuotanto 12

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 ( 1968 Committee, Conference Sponsored by the NATO Science 581259 Ohjelmistotuotanto 13

1950-luku Ensimmäiset ohjelmat kirjoitettiin konekielellä Ensimmäinen kaupallinen ohjelmisto 1951 ( Company Englannissa (J. Lyons Ensimmäiset korkean tason ohjelmointikielet ( Algol kehitettiin jo 50-luvulla (Fortran, Cobol, Alkuaikoina ohjelmistojen teko oli suoraviivaista ja ohjaamatonta Silti jo 50-luvulla tehtiin kohtuullisen monipuolisia ohjelmistoja 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 ( jatkokehitetty kehitetty C-kieli (B-kielestä 581259 Ohjelmistotuotanto 15

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 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 581259 Ohjelmistotuotanto 17

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 vakiintunutta, järjestelmäsuunnittelumallia ) ( ole suomennosta termille ei 581259 Ohjelmistotuotanto 18

Systems engineering prosessi (vesiputousmalli) Vaatimusten määrittely Suunnittelu Toteutus ja yksikkötestaus Integroiminen ja järjestelmätestaus Käyttöönotto ja ylläpito 581259 Ohjelmistotuotanto 19

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 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 581259 Ohjelmistotuotanto 21

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 22

1990-luvun ilmiöitä 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 581259 Ohjelmistotuotanto 23

FOSS 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 24

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) 581259 Ohjelmistotuotanto 25

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 ( 2004 ) - Tim O'Reilly: Architecture of Participation 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 581259 Ohjelmistotuotanto 27

Ketterien menetelmien käyttöä edistää Agile Alliance, joka on voittoa tuottamaton järjestö Manifesto for Agile Software Development kontrollinjadokumentoinnin vapautusliike orjuudesta Ihmisten ja tiimin korostaminen, vuorovaikutuksen korostaminen itseorganisoituvattiimit 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