OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012



Samankaltaiset tiedostot
Ohjelmiston lisensoinnin avoimet vaihtoehdot

Innovointiprosessi. Lili Aunimo Lili Aunimo

VALO-ohjelmat ja LTSP kouluissa. Elias Aarnio Innopark, AVO-hanke

Avoimen lähdekoodin vaarat

Pertti Pennanen License 1 (7) EDUPOLI ICTPro

Historiaa. Unix kirjoitettiin kokonaan uudestaan C-kielellä Unix jakautui myöhemmin System V ja BSDnimisiin. Kuutti, Rantala: Linux

Avoimen lähdekoodin kehitysmallit

Ohjelmien lisensoinnista

AVOIN KOODI YRITTÄJYYDEN LÄHTÖKOHTANA

Open Source -ohjelmien perusteet

Suomen avoimien tietojärjestelmien keskus COSS ry


Opas koulujen VALO-hankintaan. Elias Aarnio Avoimet verkostot oppimiseen -hanke Educoss Innopark Oy

Avoin lähdekoodi hankinnoissa Juha Yrjölä

Paikkatiedon lupapolitiikka ja lisensiointimallit. INSPIRE-verkosto Paikkatiedon infrastruktuurin hyödyntäminen 29.9.

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

KYMENLAAKSON AMMATTIKORKEAKOULU. Ubuntu. Yukun Zhou

Avoin lähdekoodi (Open Source) liiketoiminnassa

OHJELMISTOLISENSSIT JA LIIKETOIMINTA. TKK, tietotekniikkaoikeuden seminaari Hannes Saarinen

Onnistunut ohjelmistoprojekti

Onnistunut ohjelmistoprojekti

DESCA-sopimuksen ohjelmistomoduuli ja avoimen lähdekoodin ohjelmistot

Ohjelmoinnin perusteet, syksy 2006

TTL & COSS Avoimien ohjelmistojen käyttö Road show. Marras- joulukuu 2009

VALO ja tietoyhteiskunnan kehitysvaihtoehdot

Digi-tv vastaanottimella toteutettavat interaktiiviset sovellukset Selvitys GPL-lisensoinnin tuomat ongelmat

Tuplaturvan tilaus ja asennusohje

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Malliperustainen ohjelmistokehitys - MDE Pasi Lehtimäki

Oikeusministeriön OpenOffice.org -käyttöönotto. Esityksen sisältö. Avoin lähdekoodi

Tutkittua tietoa. Tutkittua tietoa 1

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

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

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Avoin lähdekoodi. Jani Kylmäaho Maanmittauslaitos

Tietotekniikan kasvun ongelmat?

Avoin lähdekoodi ja hankinnat. JHS-SEMINAARI Avoimet teknologiat haaste ja mahdollisuus

REALTIME CUSTOMER INSIGHT Wellnator Oy

Suomen avoimien tietojärjestelmien keskus COSS ry

Fiscal Media Server STD ohje

Ohjelmointi 1. Kumppanit

PSOP-SADe kansallinen Johanna Mätäsaho. yhteensopivuus

Ohjelmointi 1 / syksy /20: IDE

Näin järjestän ohjelmointikurssin, vaikka en ole koskaan ohjelmoinut

Ohjelmistotekniikka - Luento 2

Ohjelmistotuotteen hallinnasta

OHJELMISTOKEHITYS -suuntautumisvaihtoehto

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Avoin lähdekoodi Mikko Välimäki

5. HelloWorld-ohjelma 5.1

Tietotekniikan koulutusohjelman suuntautumisvaihtoehdot

Järjestelmänvalvontaopas

Avointen ohjelmistojen käyttö ohjelmistokehityksessä

AVOIMEN TUOTTEEN HALLINTAMALLIT. Kunnassa toteutettujen tietojärjestelmien uudelleenkäyttö. Yhteentoimivuutta avoimesti

Kokonaisvaltainen mittaaminen ohjelmistokehityksen tukena

Opas tekijänoikeudesta valokuvaan, piirrettyyn kuvaan, liikkuvaan kuvaan, ääneen ja musiikkitallenteisiin sekä tekijänoikeudesta internettiin.

Ohjelmistojen suunnittelu

KanTa Liityntäpiste ja Ensemble MP

TARKASTUSMENETTELYT JA NIIDEN APUVÄLINETUKI

Menetelmäraportti Ohjelmakoodin tarkastaminen

Kuinka helpottaa suurten projektien tuskaa pilvipalveluilla?

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Yhteisöllisen toimintatavan jalkauttaminen!

Avoimen lähdekoodin ohjelmien käytettävyydestä

Ohjelmistoarkkitehtuurit Kevät 2016 Johdantoa

Tämän ohjeen avulla opastetaan käyttäjää aloittamaan PlanWebin käyttö. Lue ohjeet huolellisesti läpi ennen käytön aloittamista.

Totuus IdM-projekteista

Kurssin sisältö. Kurssilla vähemmän. Johdatus ohjelmistotekniikkaan. Mitä on ohjelmistotekniikka? Miten ohjelmistoja suunnitellaan ja toteutetaan?

Ostolaskujen haku Netvisorista

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

Openbirds,opensource ja simujen

Ohjelmistotekniikan menetelmät, koe

Ohjelmistoarkkitehtuurit. Syksy 2010

Tietojärjestelmän osat

Pakkauksen kokoaminen

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

IPR ja DRM. Määritelmät

Web-sisällönhallintajärjestelmät

Kääntäjän virheilmoituksia

PROJEKTIN SUUNNITTELU JOUNI HUOTARI, PAAVO MOILANEN, ESA SALMIKANGAS

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Jyväskylän yliopisto, Sovellusprojektien kokoustila AgC Itkonen Jonne (saapui 9.25) Santanen Jukka Pekka (saapui 9.35)

IT2015 EKT-ehtojen käyttö

Tähtitieteen käytännön menetelmiä Kevät 2009 Luento 4: Ohjelmointi, skriptaus ja Python

Johdantoluento. Ohjelmien ylläpito

Juuli-julkaisutietoportaali

Laskennallisen fysiikan esimerkkejä avoimesta tutkimuksesta Esa Räsänen Fysiikan laitos, Tampereen teknillinen yliopisto

811312A Tietorakenteet ja algoritmit I Johdanto

"Oikeusportfolion" rakentaminen ohjelmistoyritykselle

T Ohjelmistojen määrittely- ja suunnittelumenetelmät

Tietotekniikan perusteet

Keltaisten sivujen palveluiden kuvaaminen ontologioiden avulla

Tiedote maalausaikaneuvotteluista

Vapaa ohjelmistokehitys, Osa I

MALLI HENKILÖTIETOJEN KÄSITTELYN/HENKILÖREKISTERIN REKISTERITOIMINTOJEN ANALYSOIMISEKSI

Joonas Ruotsalainen GIT PIKAOPAS. Tutkielma 2011

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

WINE API ja Virtualisointiohjelmistot

WEBINAARIN ISÄNNÄT. Jarno Wuorisalo Cuutio.fi. Petri Mertanen Superanalytics.fi. Tomi Grönfors Brandfors.com

Transkriptio:

OHJ-1010 Tietotekniikan perusteet 4 op Syksy 2012 Luento 10: Ohjelmistotuotanto, jatkoa Ohjelmointi, alkua Tekijät: Antti Virtanen, Timo Lehtonen, Matti Kujala, Kirsti Ala-Mutka, Petri M. Gerdt et al.

Luentokalvot saatavilla myös Moodlessa Nopeampi päivittää kuin sivuille, tällä hetkellä... Luentokalvot löytyvät oman viikkonsa kohdalta Myös bonustehtävien järjestys on korjattu loogisemmaksi

Moodle2 alhaalla viime torstaina Noin 2 tunnin käyttökatkos ilman ennakkovaroitusta...syy miksi tehtäviä ei kannata jättää viimeiseen iltaan :)

Ohjelmiston määrittely ja suunnittelu... Mitä asiakas kertoi haluavansa Miten yrityksen edustajat asian ymmärsivät Kuinka insinöörit toteutuksen suunnittelivat

... Ohjelmiston toteutus... Kuinka ohjelmoijat sen toteuttivat Kuinka myyntiedustaja tulosta kuvaili Kuinka projekti dokumentoitiin

... Käyttöön ottaminen... Mitä toimintoja ohjelmistossa oli Kuinka asiakasta laskutettiin Kuinka ohjelmiston käyttöönottoa tuettiin

... Mitä asiakas oikeasti tarvitsi

Eräs ohjelmistoprosessi sarjakuvana

Ohjelmistoprosessi tiivistettynä GIGO == garbage in garbage out Omien tarpeiden määritteleminen, ymmärtäminen ja ilmaiseminen on tärkeää! Roskan tekeminen tulee kalliiksi! Ohjelmistoprosessi

Esimerkki todellisesta projektista 1/2 Denverin lentokentän matkatavarakuljetus 1990 alettiin täysautomaattiseen toimintaan pystyvän järjestelmän suunnittelu Vaatimukset muuttuivat neuvottelujen aikana 1992 hyväksyttiin tarjous 192 miljoonan dollarin hinnalla, kenttä avattaisiin 31.10.1993 Asiakas muutti vaatimuksia kesken projektin, syntyi suuria riitoja Integrointitestaus saatiin tehtyä vasta kesällä 1994 Havaittiin virheitä laukkujen lajittelussa Automaattisen järjestelmän rinnalle liitettiin käsin toimiva varajärjestelmä...

Esimerkki todellisesta projektista 2/2 Syyskuussa 1994 lentokentän avautumisajankohdaksi arvioitiin 28.2.1995 Kentän tappiot 18 miljoonaa dollaria kuukaudessa Elokuussa 2005 uutisoitiin, että koko järjestelmästä on luovuttu... Tappiot kohosivat kokonaisuudessaan noin 4.9 miljardiin dollariin... vaikka mitään järjestelmää ei sitten syntynytkään!

Miten ohjelmistohankkeissa yleensä käy? Seuraavat luvut perustuvat Standish Group:n vuonna 1995 tekemään tutkimukseen, joka on nimeltään The Chaos Report Tietoja 385 eri kokoisilta eri alan yritykseltä Tutkimuksessa mukana 8380 järjestelmää 31% ohjelmistoprojekteista keskeytettiin n. 53% projekteista tuli maksamaan yli 189% kustannusarviota enemmän n. 16% ohjelmistoprojekteista valmistuu ajallaan kustannusarvioiden puitteissa Isojen yritysten projekteista valmistuu ajallaan ja budjetissa 9% Isojen yritysten järjestelmiin päätyy n. 42% alkuperäisistä vaatimuksista, pienten yritysten n 78% Lähde: URL: http://www.it-cortex.com/stat_failure_rate.htm (6.10.2009)

Surullinen yhteenveto ongelmista Ohjelmistoprosessi epäonnistuu todennäköisemmin kuin onnistuu Alle joka viides ohjelmistoprosessi valmistuu budjetin ja suunnitellun ajan rajoissa Mitä isompi hanke, sen isompi epäonnistumisriski Mitä tästä opimme? Ohjelmistoprojekti ei varmasti onnistu sattuman varaisesti Ohjelmistotuotannollisia menetelmiä tarvitaan, jos halutaan saada aikaiseksi ohjelmisto Perehdy asiaan huolellisesti kun päädyt osaksi ohjelmistoprosessia asiakkaan tai toimittajan roolissa Lähde: URL: http://www.it-cortex.com/stat_failure_rate.htm (6.10.2009)

Miksi projektit epäonnistuvat niin usein? Among the most common factors: Unrealistic or unarticulated project goals Inaccurate estimates of needed resources Badly defined system requirements Poor reporting of the project's status Unmanaged risks Poor communication among customers, developers, and users Use of immature technology Inability to handle the project's complexity Sloppy development practices Poor project management Stakeholder politics Commercial pressures Lähde: http://spectrum.ieee.org/computing/software/why-software-fails

Kuinka yleisiä virheet ohjelmissa ovat? Ohjelmistoissa on aina virheitä Hyvässäkin ohjelmassa voi olla esimerkiksi 2 virhettä 1000 riviä kohti, avaruussukkulasoftassakin vielä 1 virhe 1000 riviä kohti Ohjelmointikurssin harjoitustyössä voi olla helposti yli 1000 riviä koodia, eli tämä määrä on varsin pieni... Lähteitä: URL: http://www.cs.tau.ac.il/~nachumd/horror.html (28.9.2007) URL: http://www.peterenglund.com/textarkiv/krisnatt.htm (29.8.2007)

Esimerkkejä (kuuluisista) virheistä 6 ihmistä kuolee liian suurin säteilyannoksiin syöpähoidossa, useita loukkaantuu vakavasti 1985-87 (Therac-25) Mars-luotain iskeytyy Marsin pintaan koska ohjelmisto ei huomioi oikein englantilaisten ja metristen yksikköjen eroja Joukko amerikkalaisten F-22 Raptorhävittäjälentokoneiden tietokoneita käänsi lentokoneen sen ylittäessä päiväntasaajan

Esimerkkejä (kuuluisista) virheistä Kesäkuu 1980: USA:n ilmapuolustusjärjestelmä ilmoittaa (virheellisesti) maan olevan ohjushyökkäyksen kohteena Syyskuu 1983: NL:n satelliitti OKO ilmoittaa (virheellisesti) USA:n laukaisseen raskaat ydinohjuksensa Faulkland-saarten sodassa toukokuussa 1982 ystävällismielinen Exocet-ohjus upottaa brittien risteilijän

VR-soppa v.2011 Mikä meni pieleen? Epäselvyys tavoitteista Ei ymmärretä liiketoiminnan kehittämisprojektia Dataongelmat, tietojen epäyhtenäisyys Kapasiteettiongelmat, asiat mitoitetaan väärin Miten korjataan? Toteutetaan asiat pienemmissä paloissa Tehdään asiat rinnakkain, haetaan kokemuksia Käytetään ketteriä menetelmiä» Lähde tietoviikko 30.9.2011 sivu 17

Ohjelmistolisensseistä Ohjelmistojen lisenssit määräävät ohjelmistoon liittyviä käyttöoikeuksia ja rajoituksia Kuinka moneen koneeseen ohjelmiston saa asentaa Mihin käyttöön ohjelmistoa saa käyttää Saako ohjelmistoa kopioida (edes varmuuskopioida) Lisenssiehdot näkyvät ohjelmiston myyntitietojen yhteydessä ohjelmiston pakkauksessa Latauksen tai asennuksen yhteydessä Lisenssiehtojen tulee (periaatteessa) olla ostajan näkyvissä ennen ostopäätöstä Kaikki lisenssiehdot eivät välttämättä ole lainvoimaisia vaikka asiakas hyväksyisi ne allekirjoituksellaan! Suomen laki rajoittaa sopimusvapautta

Lisenssityyppejä: public domain Public domain tarkoittaa, että tekijä on luopunut kaikista oikeuksistaan, joten kyse on isoimmasta mahdollisesta vapaudesta Kuka tahansa saa käyttää mihin tarkoitukseen tahansa Tekijänoikeuslaissa puhutaan oikeuksien luovuttamisen sijaan tekijänoikeuden rajoittamisesta, tekijä rajoittaa oikeuksiaan Ajatuksena muuttaa asia osaksi ihmiskunnan kulttuuriperintöä Käytössä erityisesti kirjallisuudessa, taiteessa, musiikin parissa ja myös keksinnöissä Public domain ei välttämättä tarkoita sitä, että tekijä antaisi lähdekoodin yleisesti saataville

Lisenssityyppejä: freeware, shareware Freeware: ohjelma annetaan yleisön käyttöön rajoittamattomaksi ajaksi ilmaiseksi Muut oikeudet säilyvät ohjelman kehittäjällä Kätevä tapauksissa, joissa kehittäjä haluaa pitää ohjelman kehitystyön hallinnassaan ja muutenkin nimissään Freeware-lisensseissä voi olla tarkennuksia Esimerkiksi ei saa käyttää kaupallisissa tarkoituksissa Shareware: ohjelmaa saa käyttää jonkin aikaa ilmaiseksi Markkinointikeino: ostaja kokeilee ja tekee ostopäätöksen Käytetään paljon esimerkiksi pelien yhteydessä Lähdekoodia ei tyypillisesti ole saatavilla Shareware-ohjelma josta ei ole maksettu on yleensä supistettu versio Toimii vain jonkin aikaa ja / tai sisältää vain osan toiminnoista

Lisenssityyppejä: free & open software Free / open software = avoimet ohjelmistot tai ohjelmat Olennaista ohjelmakoodin antaminen saataville Antaa kaikille mahdollisuuden tutkia ja kehittää ohjelmaa Huom.: ei poista alkuperäisen tekijän tekijänoikeuksia (ellei nimenomaan erikseen mainita) Ohjelmistokehitys tapahtuu koordinoiduissa kehitysyhteisössä vapaaehtoisvoimin Termejä freeware, shareware ja public domain ei pidä sekoittaa vapaisiin tai avoimiin ohjelmistoihin Ohjelmien ilmainen ladattavuus ei ole sama asia, kuin avoin tai vapaa lisenssi

Esimerkkejä avoimista ohjelmistoista Linux-käyttöjärjestelmä Apache (WWW-palvelinohjelmisto) Moodle LibreOffice ja OpenOffice Mozilla (Thunderbird, Firefox)... ja lukuiset työkaluohjelmistot, kuten tekstieditorit ja ohjelmointikielten kääntäjät

Vapaat ohjelmistot (free software) Free Software Foundation (www.fsf.org) ja vapaat ohjelmistot kehitettiin vastalauseeksi ohjelmistojen rajoitetulle omistukselle Vrt. Ostat auton, jolle on määrätty missä sillä saa ajaa, keitä saa olla kyydissä ja kuka saa katsoa konepellin alle Vapaiden ohjelmistojen vapaudet Vapaus ohjelman käyttöön Vapaus tutkia ohjelman toteutusta ja muokata sitä Vapaus antaa ohjelmaa eteenpäin Vapaus parantaa ohjelmaa ja julkistaa työnsä myös muiden hyväksi Sana vapaa tulee tulkita kuten sananvapaus-sanassa, ei kuten ilmainen Copyleft ja semi-free ovat vapaan lisenssin erityismuotoja, jotka rajoittavat ohjelmiston vapauksia

Open source -ohjelmistot Open source -määritelmän lisenssit löytyvät osoitteesta www.opensource.org Lisenssit ovat tyypillisesti lähellä copylefted free software -määritelmää Tavoitteena taata ohjelmiston leviäminen ja jatkuva kehittyminen Vapaiden ohjelmistojen ja open source -ohjelmistojen ero lähinnä taustaideologiassa Yleinen vapaus vs. ohjelmistojen kehittämisen edistäminen

Open Source -ohjelmistot Open source -kehityksen etuja perustellaan usein vertaisarvioinnin takaamalla laadulla Laatu kuitenkin riippuu kehitysyhteistyön laajuudesta ja aktiivisuudesta Erityisesti dokumentoinnissa voi usein olla puutteita

Erilaisten lisenssien ja ohjelmistojen vertailua Lisenssi Hallinta Kehitys Jatkuvuus Kustannukset Tuetut ympäristöt Open source / Vapaa ohjelmisto Vapaa käyttö, muuntelu ja jakelu Tekijöillä ja käyttäjillä samat mahdollisuudet ohjelmistoon Nopeaa ja monipuolista, paljon erilaisia ideoita Riippuu ohjelmiston hyödyllisyydestä, käyttävän yhteisön laajuudesta Alussa pienet, tukikulut itse päätettävissä, järjestettävissä Usein laaja valikoima, helpompi sovittaa olemassaoleviin järjestelmiin Yksinoikeudella oleva ohjelmisto Ei muuntelua tai jakelua, usein rajoitettu käyttöoikeus Valmistaja hallitsee ohjelman sisältöä ja kehitystä Valmistaja päättää kysynnän mukaan Riippuu valmistajan menestyksestä Alussa suuret, tukikulut valmistajan päätettävissä Rajoittuu valmistajan tukemiin, voi olla vaikea sovittaa olemassaoleviin järjestelmiin

Luennon aiheet Ohjelmistotuotannon ja -prosessin käsitteet Ohjelmistoprosessin vaiheet Ohjelmistotuotannon haasteita Esimerkkejä ohjelmistotuotannon ongelmista Ohjelmistolisenssit