OHJ-3010 Ohjelmistotuotannon perusteet



Samankaltaiset tiedostot
OHJ Johdatus ohjelmistotuotantoon

Johdatus ohjelmistotuotantoon

TIE Johdatus ohjelmistotuotantoon

Johdatus ohjelmistotuotantoon

TIE Johdatus ohjelmistotuotantoon

Kertausluento JOTU-2014 / K.Systä

Kertausluento JOTU-2013 / K.Systä

Johdatus ohjelmistotuotantoon

Johdantoluento. Ohjelmien ylläpito

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

Mitä on ohjelmistotuotanto?

ITK130 Johdatus ohjelmistotekniikkaan

Ohjelmistoarkkitehtuurit. Syksy 2008

Ohjelmistoarkkitehtuurit. Kevät

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

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

Ohjelmistotekniikka. Ohjelmistotekniikka 1

Harjoitukset - muistutus

Software engineering

Ohjelmistoarkkitehtuurit. Syksy 2010

Johdatus ohjelmistotuotantoon

Johdatus ohjelmistotuotantoon

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

Ohjelmistojen mallinnus (OMa) - Johdatus ohjelmistotuotantoon Harri Laine 1

Hajautettujen sovellusten muodostamistekniikat, TKO_2014 Johdatus kurssiin

TIE Ohjelmistojen suunnittelu

Ohjelmistotekniikan menetelmät, kevät 2008

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

A4.1 Projektityö, 5 ov.

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

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

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

Agenda. Läpäisyvaatimukset Henkilökunta Luennot ja aikataulu Kurssimateriaali Harjoitustyöt Demoharjoitus Tentti ja arvostelu Muuta?

Johdatus ohjelmistotuotantoon

Organisaatio- a ja yhteiskuntaosaaminen. - ja vuorovaikutusosaaminen istoiminnan osaaminen toimintaosaaminen. Kansainvälisyysosaaminenn

Ohjelmistotekniikan menetelmät, kesä 2008

TIETOTEKNIIKAN KOULUTUSOHJELMA

Tietotekniikan koulutusohjelman suuntautumisvaihtoehdot

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Kurssin tavoitteista uennot. 4.1 Projektityö, 5 ov. Esitietovaatimukset

Kurssin käytännön järjestelyt. Tuotantotalous 1 Joel Kauppi

Työkalut ohjelmistokehityksen tukena

OHJ-3010 Ohjelmistotuotannon perusteet, kesä 2012

Projektityö

Testaus käsite. Sekalaista testausasiaa. Testauksen käsitteestä. Kattavuusmitat. Jos ajatellaan, että testaus = V&V, voidaan erottaa:

Tutkintovaatimukset suoraan DI-vaiheeseen valituille

Projektitoiminta JOTU JOTU2013/K.Systä 1

IT-OSAAJA, TIETOJENKÄSITTELYN ERIKOISTUMISOPINNOT

Ohjelmistotuotanto historiallinen perspektiivi JOTU2013/K.Systä 1

Näkökulmia monimuoto-opetukseen

GroupDesk Toiminnallinen määrittely

Tietoyhteiskunnan perustaidot. Kesäkuu 2014

Projektin suunnittelu

OHJ-4301 Sulautettu Ohjelmointi

OHJELMISTOKEHITYS -suuntautumisvaihtoehto

Ohjelmistojen mallintaminen, kesä 2010

T Ohjelmistojen määrittely- ja suunnittelumenetelmät

Computing Curricula raportin vertailu kolmeen suomalaiseen koulutusohjelmaan

Integrointi. Ohjelmistotekniikka kevät 2003

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

Mitä on ohjelmistotuotanto? Johdanto. Tämän kurssin näkökulma. Kurssin suhde muuhun opetukseen

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

Tik Ohjelmistoprojektien Hallinta

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

Teollisuusautomaation standardit. Osio 2:

KOODAAKO PROJEKTIPÄÄLLIKKÖ?

Ohjelmistojen mallintaminen, kesä 2009

ITK130 Ohjelmistojen luonne

TT00AA Ohjelmoinnin jatko (TT10S1ECD)

Projektisuunnitelma Nero-ryhmä

Ohjelmistotekniikka - Luento 2

Sulautetut järjestelmät

Johdatus ohjelmistotuotantoon

Tietojärjestelmän osat

Määrittelyvaihe. Projektinhallinta

Ohjelmistoarkkitehtuurit. Syksy 2007

Toimilohkojen turvallisuus tulevaisuudessa

Ohjelmistojen mallintaminen, Johdatus ohjelmistotuotantoon

14. Luento: Kohti hajautettuja sulautettuja järjestelmiä. Tommi Mikkonen,

Johdatusta ohjelmistotekniikkaan

Tentissä ratkaistaan neljä ohjelmointitehtävää Javalla. Tentti kestää kolme tuntia. Tehdään sähköisesti mikroluokkien Windows-koneilla.

Tietokoneen toiminta (Computer Organization I)

Tuotantotalouden 25 op sivuaine

Opettajatuutorointi-kurssin syksyn 2006 kyselyjen tulokset

Tietojärjestelmä uusiksi? Toimijaverkostot, niiden haasteet ja ratkaisut

Ohjelmistojen mallintaminen, mallintaminen ja UML

Tietokoneen toiminta (Computer Organization I)

$$$ Raha ratkaisee. $$$ Raha ratkaisee. Ohjelmistotuote. Ohjelmistotekniikan määritelmä

T Ohjelmistoprojektien hallinta Tehtävän 3 ratkaisu. Maija Kangas, Kimmo Stålnacke ja Outi Syysjoki

Ohjelmistotekniikka - Luento 2 Jouni Lappalainen

Kurssin käytännön järjestelyt. Tuotantotalous 1 Tuomo Tanila

OHJ-3010 Ohjelmistotuotannon perusteet. Ohjelmistoprojektin hallinta

Oleelliset vaikeudet OT:ssa 1/2

Mallilukujärjestys Teknistieteellinen kandidaattiohjelma Tietotekniikka, 2. vuosikurssi

Myös opettajaksi aikova voi suorittaa LuK-tutkinnon, mutta sillä ei saa opettajan kelpoisuutta.

Kurssin aloitus. AS XML-kuvauskielten perusteet Janne Kalliola

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

Kurssijärjestelyt. ME-C2300 Verkkojulkaisemisen perusteet (5 op) Mari Hirvi Informaatioverkostot / Mediatekniikan laitos

Mikkelin sähköisen asioinnin alusta - päätöksenteko. Kalle Launiala / ProtonIT Oy kalle.launiala@protonit.net

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

Transkriptio:

OHJ-3010 Ohjelmistotuotannon perusteet Kurssin tavoite, opinto-opas "Luoda yleiskuva ohjelmistotyöstä ja perusvalmiudet määrittelymenetelmien soveltamiseen. Kyky osallistua ohjelmistoprojektiin asiakkaan edustajana." Käytännössä: Kyky ilmaista vaatimukset Kyky ymmärtää alan notaatioita ja merkintätapoja Käsitys tuotantoprosessista ja käytännöistä 1

Kurssin henkilökunta Kari Systä ja Marko Leppänen (luennot) Mikko Andersson (kurssibyrokraatti) Viikkoharjoitukset ja harjoitustyöt Mikko Andersson Marie-Elise Kontro Hannu Ranta Lauri Virtanen Eeva Laukkanen 2

...OHJ-3010 Ohjelmistotuotannon perusteet Kurssi koostuu luennoista viikkoharjoituksista (6 pistettä) harjoitustyöstä (6 pistettä) tentistä (18 pistettä) Materiaali: Haikala, Mikkonen: Ohjelmistotuotannon käytännöt (Vanhemmasta kirjasta Haikala, Märijärvi: Ohjelmistotuotanto on myös apua, mutta kurssilla käsitellään asioita joita vanhemmassa kirjassa ole.) Tällä kurssilla ei käsitellä kaikkia kirjan lukuja, osa säästetään kurssile OHJ-3050 Ohjelmistotuotannon Menetelmät TiTe-kilta tilaa Talentumilta, hinta 38 www-sivut & rss-feed (tehdäänkö??): https://www.cs.tut.fi/~otupk/ 3

Kurssille ilmoittautuminen Ilmoittaudu kurssille POP:n lisäksi myös IDLE:n kautta, linkki kurssin kotisivulla IDLE:n kautta hoidetaan viikkoharjoituksiin ilmoittautuminen harjoitustyöryhmien muodostaminen välipalautusaikojen varaaminen 4

Viikkoharjoitukset Harjoitukset alkavat vasta ensi viikolla (viikko 36) Salissa TB207 Ei pakollisia, mutta suositeltavia Osallistumisesta saa maksimissaan 6 lisäpistettä Ilmoittaudu viikkoharjoituksiin IDLE:n kautta (Linkki kurssin kotisivulla) IDLE:n viikkoharjoitusilmoittautumiset avataan tänään luentojen jälkeen Viikkoharjoituksissa tehdään saman viikon luentoaiheeseen liittyviä ryhmätöitä Jos et pääse viikkoharjoituksiin esim. sairastumisen takia, voit tehdä korvaavan suorituksen: Ota yhteyttä kurssibyrokraattiin (Mikko Andersson) mieluiten etukäteen ja sovi tapaamisesta Saat Mikolta viikkoharjoitusosallistumisen korvaavan kirjallisen tehtävän 5

Viikkoharjoitusten hyvityspisteet Läsnäolokertoja Pisteitä <5 0 5 1 6 2 7 3 8 4 9 5 10 6 6

Harjoitustyö Harjoitustyönä toteutetaan ohjelmiston määrittelyhanke Tuloksena syntyy määrittelydokumentti Harjoitustyö tehdään neljän hengen ryhmissä Ryhmät muodostettava IDLEssä 14.9. mennessä 7

Kurssin tavoite "Luoda yleiskuva ohjelmistotyöstä ja perusvalmiudet määrittelymenetelmien soveltamiseen. Kyky osallistua ohjelmistoprojektiin asiakkaan edustajana. Asiakas pitää ymmärtää laajasti Voi myös olla talon sisäinen Kokonaisprojektissa ohjelmisto on vain osa, ja ne muut osat ovat asiakkaita Tämä kurssi on myös ohjelmistoammattilaisille Kurssiin liittyy muutakin kuin koodaamista Ymmärtää asiakasrajapinnan tärkeys 8

Alustava luentoaikataulu Vko 35: johdanto 36: mitä on ohjelmistotuotanto (kirjan luku 1) 37: vaatimusten kirjaamisesta (luku 3) 38: vaatimuksista jatkuu: ohjelmistotyön vaiheet ja tehtävät (luku 2 alku) 40: ohjelmistotyön vaiheet ja tehtävät (luku 2 alku) jatkuu 41: UML-kaaviot (luku 4 etc) 42: Asiakkaan ja sidosryhmän rooleista 44: käytettävyyden ja käyttökokemuksen perusteet 45: Prosessi/elinkaarimalleista (luvun 2 loppu) 46: Tiedon mallintaminen 47: Laadunvarmistus, testaus, (11,15,16) 48: Projektitoiminnan perusteet. Työmäärät, kustannukset (12) 49: IPR, sopimukset, open source 50: Kertausta 9

Software Engineering -- ohjelmistotuotanto? Software -- ohjelmisto? Computer programs, procedures, rules, documentation, and data pertaining to the operation of a computer system. Software Engineering -- ohjelmistotuotanto? The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. [IEEE 610.12] 10

Mitä on ohjelmistotuotanto? Vaatimusmäärittelyä Taitavaa ohjelmointia Elinkaarimallit Yhteispeliä, yhteistä peliä Algoritmit Tietorakenteet Ohjelmointikielet Arkkitehtuurit Laadunvarmistusta Testaus Validointi Projektinhallinta 11

Miksi ohjelmien tekeminen on niin vaikeaa? Ohjelmisto on abstrakti Tekijöiden ja asiakkaiden välillä ei välttämättä ole sama käsitys Työmäärän arviointi on vaikeaa Ohjelmisto on dynaaminen On muutettavissa muutettavuutta oletetaan Ohjelmistojen tekemistä on vaikea skaalata Tekijöiden määrän lisääminen nopeuttaa vain vähän valmistumista Mitä enemmän tekijöitä, sen enemmän kommunikointitarvetta. 06.02.2012 12

Ohjelmakoodi Realistisissa järjestelmissä on koodirivejä tuhansittain, esimerkiksi puhelinkeskuksessa vaikkapa 15 miljoonaa. Ohjelmisto on aineetonta: sitä on vaikea hahmottaa sen laatua ja valmiusastetta on vaikea arvioida virheitä syntyy helposti, ja niitä löytyy vielä pitkänkin käytön jälkeen 13

Koodirivien määrä ei tosin ole kovin selkeä koon mitta: 100 alkulukua kolmella eri tavalla void primes(int cap) { int i, j, composite; for(i = 2; i < cap; i++) { composite = 0; for(j = 2; j < i; j++) composite +=!(i % j); if(!composite) } } printf("%d\t", i); int main() { primes(100); } void primes(int m, int t, int c) { int i,j; i = t / m; j = t % m; (i <= 1)? primes(m,t+1,c) : (j == 0)? primes(m,t+1,0) : (j == i &&!c)? (printf("%d\t",i), primes(m,t+1,0)) : (j > 1 && j < i)? primes(m,t+1,c +!(i % j)) : (t < m * m)? primes(m,t+1,c) : 0; } int main() { primes(100,0,0); } _(,, ){ / <=1?_(, +1, ):!( % )?_(, +1,0): % == / &&!?(printf("%d\t", / ),_(, +1,0)): % >1&& % < /?_(,1+, +!( / %( % ))): < *?_(, +1, ):0;}main(){_(100,0,0);} 14

Ohjelmistotyyppejä(1) Varus- ja työkaluohjelmistot teknis-tieteelliseen laskentaan tarkoitetut ohjelmistot tietämyspohjaiset järjestelmät kaupallishallinnolliset ohjelmistot (yrityksen tietojärjestelmät) prosessinohjaus- ja prosessiautomaatiojärjestelmät 15

Ohjelmistotyyppejä(2) Sulautetut järjestelmät Koneen tai laiteen sisällä hissin ohjausjärjestelmä Reaaliaikajärjestelmät (esimerkki) Ohjelman on reagoitava heti polttoaineen ja jarrujen säätely autossa Reaktiiviset järjestelmät toimivat jatkuvasti Puhelinkeskus Hissin ohjauslogiikka Melkein kaikki laitteet tänä päivänä? 16

http://www.softwareindustrysurvey.fi/slidesfinland2012.pdf 17

Pohdinta: Montako tietokonetta teillä on? Neljä läppäriä (4) Kolme muuta tietokonetta (7) Kotiserver ja Chumby (9) Kaksi TV:tä (11) Kaksi digiboxia (13) CD/DVD soitin (14) Printteri (15) Skanneri (16) 5 kännykkää (21) Autossa ainakin kaksi (23) Audiovahvistin (digit) (24) Kaukosäätimiä (ainakin 3) (27) Pelikonsoli (28) Pesukone (29) Kiuas (30) 18

Kuva 1.2 Infrastuktuuri: tietoliikenne, toimistoautomaatio, ryhmätyö, asianhallinta, palvelimet... Yrityksen tietovarastot Johdon tietojärjestelmät, päätöksenteon tuki Markkinointi Taloushallinto Tuotteiden suunnittelu, operatiiviset järjestelmät, tuotannonohjaus, materiaalihallinto, logistiikka Prosessi- ja tuotantoautomaatio Tietotekniikka tuotteissa 19

Esimerkki 1: tyypillinen työkoneen ohjausjärjestelmä Ohjaus- PC Linux- tai Windows-käyttöjärjestelmä CAN-väylä Puomin ja kouran ohjaus Mootorin ohjaus Vaihteiston ohjaus Rungon ohjaus Hallintalaitteiden ohjaus toimilaitteet ja anturit toimilaitteet ja anturit toimilaitteet ja anturit toimilaitteet ja anturit toimilaitteet ja anturit Tyypillisesti PLC-ohjaimia (+IEC 61131-3 -standardin mukainen ohjelmointi) tai RT-käyttöjärjestelmä (+C-ohjelmointi) 20

Esimerkki 2: verkossa toimiva PCsovellus DJ-online-palvelin Palvelinohjelmisto SOAPrajapinta Jeesbox Ylläpidon hallintajärjestelmä Musiikkitietokanta Metatietokanta Musiikin hallintajärjestelmä 21 Mukailtu lähteestä: Jukka Jylhäkangas, Ravintoloiden taustamusiikkijärjestelmä, diplomityö, TTY 2006.

Esimerkki 3: automaatiojärjestelmä (Metso DNA) 22

Pieni sulautettu järjestelmä (venttiili) 23

NMT-puhelin 20 kloc GSM-keskus 15MLOC äly-puhelin 20MLOC? televisio 200 kloc (yksinkertainen)hissi 50 kloc moderni auto? avaruussukkula 21 MLOC (sukkulassa 0,5MLOC) säätoventtiilin ohjaus 25kLOC työkoneen ohjaus 250kLOC Sulautetut järjestelmät Työn tuottavuus? LOC Lines of Code, koodiriviä 24

Ohjelmistotekniikka on geneeristä 25

Ohjelmiston ominaisuuksia ohjelmiston koko ja käsiteltävän tiedon määrä käsittelypainotteinen vs. tietopainotteinen vasteaika- ja reaaliaikaisuusvaatimukset kovat reaaliaikavaatimukset reaktioaika luotettavuus puolustautuva ohjelmointi kahdentaminen elektroniikka- ja mekaniikkatason varmistukset hajautus paikallinen / laaja sulautetut järjestelmät - laiteväylä 26

Epäonninen esimerkki VR 2011-2012 Hakukoneen termit - VR - verkkokauppa - ongelma 27

Mikä meni pieleen? Tarkkaa tietoa ei julkisuudesta löydä, mutta näyttää siltä että Järjestelmän testaus oli puutteellista Monitoimittajajärjestelmässä vastuut eivät olleet selviä Väitetään myös, että kilpailutuslaki olisi ollut osasyyllinen Kuormitus arvioitiin väärin (mm kellekään ei tullut mieleen, että starttipäivänä on paljon uteliaita) Kukaan ei tiedä koska järjestelmä saadaan kuntoon VR:n imago kärsi ja asiakkaitakin menetettiin Ja systeemiä korjaillaan edelleen

Mutta lopetetaan tähän VR:n pilkkaaminen Noloja juttuja on käynyt monelle muullekin organisaatiolle Paitsi niiden viihdearvon vuoksi myös opetussyistä otamme näitä esimerkkejä esille kurssin luennoilla Tästä tapauksesta voisi johtaa muutaman opetuksen Projektin pilkkominen moneen osaan ja keskenään kilpaileville toimijoille on hankalaa Iso projektin käyttöönotto kertarysäyksellä on riski Ison järjestelmän, jolla paljon käyttäjiä, testaaminen on hankalaa Käyttäjien ymmärtäminen on tärkeää: Totta kai moni haluaa selvittää mitä uusi monimutkainen hinnoittelu tarkoittaa omilla vakioreiteillä 29

Tämä kulunut kuva on pakko näyttää 30

Ohjelmistoprojekti on muutokseen reagoimista 31

Areas of expertise Management skills Presentation& negotiation skills, teamwork Nongeneric technical skills Generic technical skills Application domain expertize Process skills 32

evolution revolution Half-life of the market value of skills :-) Nongeneric technical skills Application domain expertize Process skills Presentation & negotiation Management skills, teamwork skills Generic technical skills 0v 10v 20v 33

Ohjelmiston rakentaminen projektina Asiakas - toimittaja Tarvitaan yhteisymmärrys siitä mitä halutaan Mitä se maksaa Koska se on valmis Asiakas ymmärrettävä laajasti Sisäinen Varsinaisen asiakkaan edustaja (esim. markkinointi) Tämä kurssi on suunniteltu (myös) tuleville asiakkaille Asiakkaalle projekti on usein osa isompaa kokonaisuutta (hanketta) Ohjelmiston lisäksi laite, liiketoimintamuutos, Elinkaari: esiselvitys, määrittely, toteutus, käyttöönotto, ylläpito, käytöstä poisto 34

Muita haasteita Tuote vs asiakaskohtainen Sopivuus asiakkaan tarpeisiin Kehittämisen ja ylläpidon kustannukset Dilemma. Kummalla rikastut: teet kerran ja myyt miljoona kopiota vai tekemällä monta projektia? Eri toimintatavat Hajautettu kehitys Resurssit ja asiantuntemus voi olla hajallaan Kustannusten vuoksi halutaan siirtää työtä halvan kustannuksen maihin. Monessa yrityksessä edustus asiakkaan luona, loput esim. Intiassa 35