Johdatus ohjelmistotuotantoon Luento 2, 31.08.2015 31.08.2015 TTY TIE-02300/Kari Systä 1
Luennon sisältö Käytännön järjestelyistä ja kurssin ohjelmasta Lyhyt kertaus viime viikon sisällöstä Erilaisista ohjelmistoista ja niiden ominaisuuksista Vaatimusmäärittelyistä 31.08.2015 TTY TIE-02300/Kari Systä 2
Käytännön järjestelyistä Ilmoittautumistilanne tänään kello 10. Canvas-kutsu lähetetty 303:lle Sen jälkeen ROCK:ssa perunut 6 (2%) Kutsu hyväksymättä 44-6 = 38 opiskelijalla (13%) Harjoitustyöryhmiin ilmoittautumatta 62 (20%) Harjoitustyöryhmissä 197 (65%) Ilmoittautukaa tänään! Ensimmäiset viikkoharjoitukset tällä viikolla 31.08.2015 TTY TIE-02300/Kari Systä 3
Harjoitustyöstä Harjoitustyö tehdään 4 hengen ryhmissä. Jokaisella ryhmällä on vertaisryhmä. Jokainen harjoitusryhmä toimii asiakkaina toiselle harjoitustyöryhmälle ja laatii omat asiakasvaatimuksensa annetun kehyskertomuksen perusteella. Toisen ryhmän tekemien asiakasvaatimusten perusteella luodaan toiminnallinen määrittelydokumentti. Jokainen ryhmä toimii sekä asiakkaan että toimittajan roolissa. Vastinpariryhmillä on molemmilla erilaiset kehyskertomukset. Kehyskertomukset toimitetaan ryhmille myöhemmin. Kysyttävää? Harjoitustyön pääohjaajana toimii Marko Leppänen (marko.leppanen@tut.fi). 31.08.2015 TTY TIE-02300/Kari Systä 4
Arvostelu Harjoitustyöstä saa maksimissaan 6 pistettä. Pisteitä saa seuraavasti: Hyvänä asiakkaana toimiminen 0-1 pistettä Neuvottelutilaisuus 0-1 pistettä Toiminnallinen määrittely: 0-4 pistettä välipalautuksineen Bumerangi vähentää loppupisteitä kahdella. Aikataulu: syksy 2015 ma 31.8. klo 17:00: Ryhmien oltava muodostettuna Canvaksessa ti 1.9. klo 23.59: Henkilökunta täydentänyt vajaat ryhmät ja tehneet ryhmien parituksen 31.08.2015 TTY TIE-02300/Kari Systä 5
Viikkoharjoitusten hyvityspisteet https://mooc.tut.fi/courses/12/pages/viikkoharjoitukset Läsnäolokertoja Pisteitä <5 0 5 1 6 2 7 3 8 4 9 5 10 tai enemmän 6 Viikkoharjoituksia (ainakin 129 kappaletta 31.08.2015 TTY TIE-02300/Kari Systä 6
Luennon sisältö Käytännön järjestelyistä ja kurssin ohjelmasta Lyhyt kertaus viime viikon sisällöstä Erilaisista ohjelmistoista ja niiden ominaisuuksista Vaatimusmäärittelyistä 31.08.2015 TTY TIE-02300/Kari Systä 7
Ohjelmistotuotanto = Ohjelmointia Laadunvarmistusta Dokumentointia Käyttöönottoa Määrittelyä Projektinhallintaa Myyntiä Määrittely = Ohjelman ominaisuuksien keksimistä/löytämistä ja niistä päättämistä 31.08.2015 TTY TIE-02300/Kari Systä 8
Mitä on ohjelmistotuotanto? Vaatimusmäärittelyä Asiakas Taitavaa ohjelmointia Elinkaarimallit Yhteispeliä, yhteistä peliä Algoritmit Tietorakenteet Ohjelmointikielet Arkkitehtuurit Laadunvarmistusta Projektinhallinta Kehittäjä Testaus Validointi 31.08.2015 TTY TIE-02300/Kari Systä 9
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. 31.08.2015 TTY TIE-02300/Kari Systä 10
Toinen näkemys vaikeuteen Ohjelma on monimutkainen Monia tapoja ratkaista ongelma (kaikkia niitä myös käytetään) Paljon komponentteja ja niiden riippuvuuksia Muutosten seurauksia ei osata arvata Ohjelma on osa kokonaisuutta Ihmiset ja yhteisöt käyttäjiä ja toteuttajia Uusi ohjelmisto usein osa isompaa muutosta Ohjelma on abstrakti ja näkymätön 31.08.2015 TTY TIE-02300/Kari Systä 11
Luennon sisältö Käytännön järjestelyistä ja kurssin ohjelmasta Lyhyt kertaus viime viikon sisällöstä Erilaisista ohjelmistoista ja niiden ominaisuuksista Vaatimusmäärittelyistä 31.08.2015 TTY TIE-02300/Kari Systä 12
Pohdinta: Montako tietokonetta teillä on? Neljä läppäriä (4) Kolme muuta tietokonetta (7) Kotiserver ja Raspberry (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) 31.08.2015 TTY TIE-02300/Kari Systä 13
Ohjelmistotyyppejä(1) Tietokoneiden varus- ja työkaluohjelmistot Kännyköiden ja tablettien appsit Organisaatioiden tietojärjestelmät Systeemiohjelmat (käyttöjärjestelmät, työkalut, ) Internetpalvelut 14 31.08.2015 TTY TIE-02300/Kari Systä
Ohjelmistotyyppejä(1) TTY Android POP Canvas Mail MS Word Windows 31.08.2015 TTY TIE-02300/Kari Systä 15
Monimutkaisuua, tiedon määrä käsittelypainotteinen vs. tietopainotteinen Ominaisuuksia (1) TTY POP Canvas Mail MS Word Android Windows Käytettävyys Tuvallisuus ja luotettavuus 31.08.2015 TTY TIE-02300/Kari Systä 16
Ohjelmistotyyppejä (2) Laiteohjain TTY POP Selain Tietoliikenne protokolla Käyttöjärjestelmä Radioprotokolla 31.08.2015 TTY TIE-02300/Kari Systä 17
Ominaisuuksia (2) TTY POP Laiteohjain Sulautettu Radioprotokolla Reaaliaikainen Luotettava Hajautettu 31.08.2015 TTY TIE-02300/Kari Systä 18
Ohjelmistotyyppejä (3) Sulautetut järjestelmät Koneen tai laiteen sisällä hissin ohjausjärjestelmä Reaaliaikajärjestelmät 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ä? 19 31.08.2015 TTY TIE-02300/Kari Systä
TTY TIE-02300/Kari Systä 20 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ä 20
Esimerkki 1: Pieni sulautettu järjestelmä (venttiili) Teknisiä haasteita - luotettavuus - nopeus (reaaliaika) - säätöalgoritmi - muisti, prosessori, virta Toteutuksen haasteita - kehitystyökalut - testaaminen TTY TIE-02300/Kari Systä 21
Esimerkki Apollo 11 (Lähde: Wikipedia, creative commons lisenssi) Apollo Guidance Computer (AGC) oli tietokone, jota käytettiin Apolloohjelman avaruusaluksissa. Tietokone hoiti aluksen ohjaukseen ja navigointiin liittyviä tehtäviä. AGC oli ensimmäinen moderni sulautettu tietokonejärjestelmä. AGC:n suunnitteli 1960-luvun alussa MIT:s Instrumentation Laboratory, ja varsinaiset laitteet valmisti Raytheon. Kaikilla Kuussa käyneillä Apollo-lennoilla (paitsi Apollo 8:ssa, jossa ei ollut kuumodulia), komento- ja kuumoduulissa oli omat AGC-tietokoneet. AGC käytti integroituja piirejä. RAM-muisti oli ferriittirengastyyppinen ja ROM-muisti rope-core-tyyppinen. RAM-muistia oli 2 kilosanaa, ja ROM-muistia 36 kilosanaa; sanan pituus oli 16 bittiä. Kellokide värähteli 2,048 MHz taajuudella, joka jaettiin tai skaalattiin tarpeen mukaan eri käyttötarkoituksiin; pääasiallinen sisäinen kellotaajuus oli 1,024 MHz. Tarkempaa tietoa: https://en.wikipedia.org/wiki/apollo_guidance_computer 31.08.2015 TTY TIE-02300/Kari Systä 22
Apollon ohjelmistosta AGC:n käyttöliittymänä toimi DSKY (display and keyboard, näyttö ja näppäimistö), jossa oli numero- ja merkkivalonäyttö, sekä komento- ja numeronäppäimistö. AGC:lle annettiin komentoja "verbin" (V) ja "substantiivin" (N) yhdistelminä, jotka ilmaistiin kahden numeron yhdistelminä. Verbi ilmaisi komennon, ja substantiivi komennon lisämääreen. ROM-muistiin tallennettu yksinkertainen käyttöjärjestelmä kykeni ajamaan kahdeksaa prosessia yhtä aikaa. Ajettavat ohjelmat pystyttiin priorisoimaan. Ja koodi oli langoitettu Margaret Hamilton 31.08.2015 TTY TIE-02300/Kari Systä 23
Se varsinainen softa (https://www.netjeff.com/humor/item.cgi?file=apollocomputer) Allan Klumpp, his friend Don Eyles, and about 300 others wrote their programs in the first high-order computer language, called MAC (MIT Algebraic Compiler), then compiled it BY HAND into assembly language, which they typed onto punched cards (there were no terminals or text editors). [Incidentally, the Shuttle's software is written in a language called HAL/S, named after Hal Lanning, the author of MAC. HAL/S is an improved version of MAC.] For debugging, the programmers at MIT had an IBM 360 model 175 mainframe computer that acted as a simulator of the LM. Allan and his colleagues would test their software in this simulator, which interfaced with their software just as the real LM, with its associated dynamics, would. The IBM 360 produced printed output as well as plots of the trajectories of the simulated landings. 31.08.2015 TTY TIE-02300/Kari Systä 24
Esimerkki: Internet-palvelu Mainospalvelin HTML generointi Sovellus Pankki Sosiaalinen media Varasto Tietokanta TTY TIE-02300/Kari Systä 31.08.2015 25
Ohjelmistojen ominaisuuksia Ohjelmistojen koko Yleisin, mutta aika huono, mittari on koodirivien määrä Reaaliaikaisuus Hajautus ja sulautus Käyttöliittymä, käytettävyys, käyttökokemus Luotettavuus Turvallisuus Millaiset vahingot mahdollisia a) ohjelmistovirheen b) väärän käytön vuoksi Tehokkuus, resurssien kulutus Prosessori, muisti, energia, tietoliikenne Skaalautuvuus Avoimuus, muunneltavuus 31.08.2015 TTY TIE-02300/Kari Systä 26
TTY TIE-02300/Kari Systä 27 Ohjelmistotekniikka on geneeristä 27
Taas uutisista http://yle.fi/uutiset/montako_tietojarjestelmaa_tyopaikallasi_on trafissa_niit a_on_170/7252898 Lainauksia: Suurinta ärsytystä aiheuttaa, jos järjestelmät eivät keskustele keskenään ja tietoa joudutaan siirtämään käsin järjestelmästä toiseen. Esimerkiksi tuntikirjausjärjestelmässä toisesta saa minuutteina 30 minuuttia ja toiseen pitää syöttää se tunteina eli 0,5 tuntia. Liikenteen turvallisuusvirasto Trafia on vaikea voittaa tietojärjestelmien määrässä. Kaikkiaan niitä on 170. Esimerkiksi kehittämispäällikkö Pipsa Eklundilla on päivittäin käytössään kymmeniä tietojärjestelmiä. Osaa näistä käytetään niin harvoin, että tarkkaa määrää hän ei edes tiedä. Ehkä ongelma on siitä, että meillä ei vielä koneelle kirjauduttaessa pääse kaikkiin järjestelmiin, vaan ne kysyvät vielä omia salasanoja 31.08.2015 TTY TIE-02300/Kari Systä 28
Tarve/idea Esiselvitys unohdetaan Tehdään itse Teetetään Ostetaan Vaatimusmäärittelyt Toimittajan valinta Räätälöidään Suunnittelu Toteutus Testaus Käyttöönotto Ylläpito Poisto 31.08.2015 TTY TIE-02300/Kari Systä 29
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) Asiakkaalle projekti on usein osa isompaa kokonaisuutta (hanketta) Ohjelmiston lisäksi laite, liiketoimintamuutos, Elinkaari: esiselvitys, määrittely, toteutus, testaus, käyttöönotto, ylläpito, käytöstä poisto Tämä kurssi on suunniteltu (myös) tuleville asiakkaille 30 31.08.2015 TTY TIE-02300/Kari Systä
Kännyfirma Eri tapoja organisoida kehitys Ohjelmistofirma Tekee itse oman käyttöliittymänsä Tekee laiteajurit omaan rautaansa Sovittaa kolmannen osapuolen tekemän käyttöjärjestelmän omiin tarpeisiinsa Omien resurssien puutteessa vuokraa ohjelmistofirman ihmisiä auttamaan varusohjelmien tekemisessä Ostaa avaimet käteen projektina henkilöstöhallinnon järjestelmän Ohjelmistotuotteiden myynti Räätälöityjen projektien myynti Ohjelmistotyön myynti 31.08.2015 TTY TIE-02300/Kari Systä 31
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 voivat olla hajallaan Kustannusten vuoksi halutaan siirtää työtä halvan kustannuksen maihin. Monessa yrityksessä edustus asiakkaan luona, loput esim. Intiassa 32 31.08.2015 TTY TIE-02300/Kari Systä
CASE RITU http://www.tekniikkatalous.fi/tekniikka/ict/2014-01-07/ritu-osoittautui- petturiksi---tiedon-kehitt%c3%a4m%c3%a4- j%c3%a4rjestelm%c3%a4-aiheuttaa- p%c3%a4%c3%a4ns%c3%a4rky%c3%a4-tuomioistuimille- 3254499.html http://www.tivi.fi/uutiset/2014-03-09/it-hanke-ep%c3%a4onnistuit%c3%a4ysin---tiedolla-oli-sis%c3%a4isi%c3%a4-haasteita-jakommunikaatio-ongelma-3208580.html 31.08.2015 TTY TIE-02300/Kari Systä 33
Konsultin arvio Alkuvaiheessa virhe oli se, että tuomioistuinten johtoa ja samalla tulevia käyttäjiä ei saatu mukaan valmisteluun. Tämä johti siihen, etteivät määrittelyt vastanneet todellisia tarpeita, HPMG arvioi. 31.08.2015 TTY TIE-02300/Kari Systä 34
CASE IDLE 31.08.2015 TTY TIE-02300/Kari Systä 35
IDLE Mielenkiintoinen esimerkki tämän kurssin kannalta Alunperin rakennettu tietokantakurssien opetuksen apuvälineeksi IDLE:een on vuosien varrella rakennettu paljon toimintoja (lista perustuu käyttöohjeeseen) Sisäänkirjautuminen ja integrointi TUT:n identiteetin hallintaan Kielen vaihtaminen (suomi, englanti, ranska) Kurssille ilmoittautuminen Harjoitusryhmiin ilmoittautuminen Harjoitustöiden tekeminen ja palauttaminen Luokka-toiminto harjoituksissa tapahtuvaa toimintoa varten Harjoitustyöryhmän muodostaminen Välinäyttöajan varaaminen Ohjelma on siis syntynyt käytännön tarpeista 31.08.2015 TTY TIE-02300/Kari Systä 36
IDLE on kotikutoinen järjestelmä Tehty itse ja räätälöity omiin tarpeisiin Nimenomaan oman laitoksen Toisin kuin monet kotikutoiset toteutus on ammattimainen Silloin kun järjestelmä rakennettiin kilpailevia vaihtoehtoja ei ollut Nyt meillä on POP/ROCK, MOODLE ja CANVAS (http://fi.wikipedia.org/wiki/moodle, https://mooc.tut.fi/) MOODLE:n räätälöintiä tehdään kaupallisena palveluna POP/ROCK työkalun käyttämiselle ei ole vaihtoehtoa koska laitoksemme on osa yliopistoa 31.08.2015 TTY TIE-02300/Kari Systä 37
MOODLE vai IDLE Ominaisuudet Osaaminen Raha/resurssit MOODLE Opiskelijat tottuneet muiden laitosten kursseilla Laitoksen ei tarvitse investoida. (Kustannukset jaetaan laajemmin) Siirtyminen edellyttää henkilökunnalta opettelua ja kurssijärjestelyiden uudistamista IDLE Sovitettu meidän laitoksen tarpeisiin Laitoksen henkilökunta osaa IDLE:n käytön Vaatii osapäiväisen ylläpitäjän. 31.08.2015 TTY TIE-02300/Kari Systä 38
MOODLE vai CANVAS Ominaisuudet Osaaminen Käyttöliittymä Muuta MOODLE Opiskelijat tottuneet muiden laitosten kursseilla MOODLE-II ok (mm. mobiilikäyttö) CANVAS Mahdollistaa kurssin kotisivun luomisen Voi käyttää myös ilman kirjautumista Kurssin henkilökunta osaa CANVAS-kalun käytön Jatkokurssi käyttää myös Modernimpi ilme kuin MOODLE-I; mobiilikäyttö Käyttöä mietitään TTY:llä laajemminkin. 31.08.2015 TTY TIE-02300/Kari Systä 39
Luennon sisältö Käytännön järjestelyistä ja kurssin ohjelmasta Lyhyt kertaus viime viikon sisällöstä Erilaisista ohjelmistoista ja niiden ominaisuuksista Vaatimusmäärittelyistä 31.08.2015 TTY TIE-02300/Kari Systä 40
KOHTI VAATIMUSMÄÄRITTELYITÄ 31.08.2015 TTY TIE-02300/Kari Systä 41
Spekulointia TTY:n tarpeista Opettajien työajan koordinointi Opiskelijoiden lukujärjestyksen koordinointi Tenttien koordinointi Opetustilojen tilavaraukset KELA/Opintotuki Tiedotus Opetusohjelmat Opintokokonaisuudet Opintorekisterit Webbisivut Kurssit Luennot Harjoitukset h.työt Tentit TTY TIE-02300/Kari Systä 31.08.2015 42
Asiakasvaatimuksista tuotteeseen asiakasvaatimukset Määrittely Suunnittelu& toteutus ohjelmistovaatimukset 31.08.2015 TTY TIE-02300/Kari Systä 43
Erilaisia vaatimuksia - esimerkki Asiakasvaatimus tyypillisesti asiakkaan ongelma, jolle toivotaan ratkaisua: tuotetaan mahdollisimman virheettömiä dokumentteja. Ominaisuus, feature jokin asiakkaan kannalta mielekäs kokonaisuus ohjelmiston toiminnallisuudesta: tuki oikeinkirjoituksen tarkastamiselle. Ohjelman toiminto yksittäinen ohjelmistolla tehtävä asia: tarkasta oikeinkirjoitus, ehdota korjausta, korjaa automaattisesti... Tekniset vaatimukset miten ohjelmisto toteutetaan: tiedostopuskuri, dialogin toteutus,... Kannattaa huomata, että luokittelu ei ole mitenkään itsestään selvä. Asiakasvaatimukset Ohjelmistovaatimukset 31.08.2015 TTY TIE-02300/Kari Systä 44
Harjoitustyön juoni RYHMÄ A/B RYHMÄ B/A Asiakasvaatimukset Ohjelmiston määrittely 31.08.2015 TTY TIE-02300/Kari Systä 45
Alkukurssin aikataulusta Päivä Aihe Materiaali 24.08.2015 Kurssin esittely, johdanto ohjelmistotuotantoon Kalvot: 01Johdant o3.pdf 01.09.2015 Erilaisista ohjelmistoista ja niiden ominaisuuksista; johdantoa vaatimuksiin; ensitietoa harjoitustyöstä. 08.09.2015 Vaatimusmäärittelyt ja käyttötapaukset. 14.09.2015 Vaatimukset osa 2: tiedon mallintaminen. 21.09.2015 Tuotantoprosesseista ja elinkaarimalleista, sekä mitä asiakkaan on niistä ymmärrettävä. 31.08.2015 TTY TIE-02300/Kari Systä 46