Johdanto Ohjelmistotuotannon perusteiden kurssilla annetaan yleiskuva ohjelmistotuotannosta, sen eri osa-alueista ja ohjelmistotuotantoon vaikuttavista tekijöistä. Tavoitteena on luoda toiminnalliset ja tekniset valmiudet järjestelmän määrittelyprojektiin osallistumiseen. Kurssi on suunnattu asiakkaan ja toimittajan väliseen vuorovaikutukseen, jossa korostuu järjestelmäkuvauksiin perustuva kommunikaatio. Kuvausmenetelmien pohjan luo UMLkuvausstandardi. Kurssi edellyttää itseopiskeluun liittyvää omatoimista työskentelyä harjoitustehtävien ja laajahkon harjoitustyön muodossa. Itseopiskelumateriaali pohjautuu oppikirjaan Haikala Ilkka, Märijärvi Jukka, Ohjelmistotuotanto, jonka luvut 1-10 tämä kurssi kattaa. Kirjan luvut 10-19 sisältyvät jatkona olevaan Ohjelmistotuotannon menetelmät - kurssiin. Exit
Sisältö: Kurssin perustelu Tämän päivän ohjelmistot Tuotantoprosessi Vain muutos on pysyvää Kustannusten syntyminen Määrittelyn ongelmat ja riskit Lisää pohdintaa Kertauskysymykset 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 2
Miksi tämä kurssi? Exit
Ohjelmistotuotannon kehitys Teollinen ohjelmointi: vain joitakin vuosikymmeniä Ohjelmien koko kaksinkertaistuu muutamien vuosien välein Ohjelmistotyön tuottavuus kasvaa vuosittain vain noin 4 % Yli puolet ohjelmistoprojekteistä myöhästyy ja ylittää kustannusarvionsa Repeated Repeatedstudies have have shown shown that that the the failure failure rate rate for for custom custom software softwareprojects is is above above 70% 70% 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 4
Toimialakatsaus Suomi Tietoteollisuuden taloudellinen merkitys kasvaa jatkuvasti» Suomen BKT (2000) oli 783 Mrd mk, josta tavaravienti 334 Mrd mk» sähkö- ja elektroniikkateollisuuden tuotannon bruttoarvo 140 Mrd mk, josta vienti 95 Mrd mk (~60%); työllistää n. 70.000 työntekijää suurempi kuin metsä- ja metalliteollisuus» ohjelmistoliiketoiminnan arvo (2000) oli n. 5 Mrd mk, josta vienti n. 2 Mrd mk; työllistää n. 12.000 työntekijää» ohjelmistoliiketoiminnan odotetaan kasvavan lähivuosina merkittävästi sähkö- ja elektroniikkateollisuutta nopeammin... 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 5
Suomen tietoteollisuus alle kymmenen miljardiluokan ( ) yritystä n. 10 yritystä joiden liikevaihto ylittää 100 M suuri yritys - liikevaihto kymmeniä M tyypillinen ohjelmistoyritys - liikevaihto luokassa M Liikevaihtotilastoja ohjelmistoteollisuus ~ 100 t /hlö laite- ja ohjelmistomyynti: laaja skaala; moninkertainen edelliseen verrattuna Suomen Suomen tietoteollisuus tietoteollisuus (2001): (2001): 1. 1. Nokia Nokia 30 30 Mrd Mrd 2. 2. Sonera Sonera 2Mrd 2Mrd 10. 10. Compaq Compaq Computer Computer 0,3 0,3 Mrd Mrd 50. 50. Proha Proha 35 35 M M 100. 100. Tieto-X Tieto-X 20 20 M M 200. 200. Helsoft Helsoft 5M 5M 250. 250. Mikkelin Mikkelin SavoData SavoData 3 3 M M Suomen tietoteollisuus - 250 suurinta 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 6
Ohjelmointi Suomessa ohjelmistovienti tapahtuu vielä pääosin sulautettuna eri järjestelmiin» puhdas ohjelmistovienti on kuitenkin voimakkaassa kasvussa (kasvuodotukset kymmenprosentti-tasolla) Ohjelmistyö on jo monessa maassa (Intia, Pakistan, Irlanti,...) muuttumassa kaikkein tärkeämmäksi vientialaksi Ohjelmointi on tuotannonala ja sen ohjaaminen ja hallinta on tieteellisten, taloudellisten ja insinöörintoiminnan menetelmien ja lähestymistapojen sovellusalue. 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 7
What Weinberg says: Mikään ei ei korvaa korvaa ratkaistavan ongelman perusteellista ymmärtämistä joskus joskus voi voi tosin tosin käydä käydä hyvä hyvä tuuri tuuri Mikään ratkaisu ei ei sovellu sovellu kaikkiin tehtäviin ja ja johonkin tilanteeseen parhaiten soveltuva lähestymistapa voi voi olla olla toisessa tilanteessa kaikista huonoin On On olemassa monia monia hyödyllisiä lähestymistapoja, jotka jotka toimivat useammassa kui kui yhdessä tilanteessa, joten joten kannatta tutustua sellaiseen mikä mikä on on toiminut aikaisemmin Gerald Gerald Weinberg Weinberg :: 1956..1969 1956..1969 --software software developer, developer, researcher, researcher, teacher, teacher, and and designer designer of of software software curricula curricula at at IBM; IBM; after after that that formed formed consulting consulting firm firm to to help help software software engineering engineering organizations manage manage the the change change process process in in a more more fully fully human human way; way; has has written written several several hundred hundred articles articles and and more more than than 30 30 books books I've I've discovered that people are are at at the the bottom of of just just about every problem. When I'm I'm not not starting a new social system, I'm I'm often repairing an an old old one; in in this this role, I'm I'm an an organizational therapist I I like like to to think of of my my profession as as restoring human works of of art. art. Exit Weinberg & Weinberg and Friends 11/04/2002 "Ohjelmistotuotanto", Hannu Jaakkola 8
Fairley: It may well be that great Software Engineers are born rather than taught. However, they don t grow great software engineers themselves; without training they may become great hackers instead CSEE 95 Dr. Richard E. (Dick) Fairley 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 9
Työkalut Ala nähdään helposti työkalusidonnaisena» työkalut ovat vain apuväline mm. kuvata, tuottaa ja hallita syntyneitä (vaihe)tuotteita» konservatismi - sidos "menneisyyden" työkaluihin vaikeuttaa rationaalista valintaa» kehitystyön paradigmat ohjaavat työkalujen valintaa (esimerkiksi nyt oliomenetelmät) Keskeisenä kurssilla ovat kuvaamisen työkalut, esimerkiksi Rational Rose MS-Visio myös toimisto-ohjelmat (PowerPoint, Word, ) 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 10
Tarvittavat valmiudet Ohjelmistoprosessien kehittäminen Erikoiskurssit Ohjelmistoprojekti Ohjelmointi Ohjelmistotuotannon perusteet Ohjelmistotuotannon menetelmät Tiedonhallinta 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 11
Tämän päivän ohjelmistot Ohjelmistot on perinteisesti totuttu jakamaan soveltamisalueidensa mukaisesti kaupallishallinnollisiin ohjelmistoihin, tuotantoprosessien tietotekniikkaan sekä sulautettuihin järjestelmiin. Luokittelu perustuu ajatukseen siitä, että erityyppisissä sovelluksissa korostuvat erilaiset käsittelytarpeet ja toteutuksen tekniikat. Kaupallishallinnollisille ohjelmistoille ominaista on suurten tietomäärien hallinta. Tuotantoprosessien tietotekniikassa voidaan erottaa toisistaan prosessiautomaatio ja tuotantoautomaatio. Prosessiautomaatiojärjestelmissä tietotekniikka on integroitu ohjaamaan ja valvomaan tuotantojärjestelmää esimerkiksi paperikonetta; tuotantoautomaatiossa taas on kyse yksittäisten tuotantosolujen (työstökoneet, robotit) ja niiden muodostaman kokonaisuuden (kuljettimet) ohjauksesta tietokoneiden avulla. Esimerkkejä tästä ovat pitkälle automatisoidut tehtaat ja automaattivarastot. Kasvava osuus ohjelmistoista on ns. sulautettuja ohjelmistoja, jotka on tarkoitettu erilaisten toimilaitteiden ohjaukseen. Esimerkiksi matkapuhelimeen sisältyvää tietotekniikkaa ohjataan useiden satojen tuhansien ohjelmarivien muodostamalla ohjelmistolla. Edellä esitetty luokittelu on itse asiassa hieman keinotekoinen, koska käytännössä nykyaikaiset ohjelmistot sisältävät monipuolisesti erityyppisten sovellusluokkien piirteitä: vaikka matkapuhelin on tyyppiesimerkki sulautetusta järjestelmästä, sisältää sen ohjelmisto mm. tietokantojen käsittelyä ja jopa prosessinohjausta Exit
Tämän päivän ohjelmistot Tavanomainen atk Prosessinohjaus Tuotantoautomaatio Sulautetut järjestelmät Edellisten kombinaatiot 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 13
Ohjelmistot ennen ja nyt 20 vuotta sitten Nyt pienet ohjelmat päättyvät ohjelmat eräajo toimintaa tukeva gurut ja sankarit räätälöity 1000-5000 kloc Microsoft Word, Microsoft Excel - > 10000 KLOC suuret järjestelmät 24h/vrk, 7 pv/vkko RT interaktiivinen kriittinen ryhmätyö tuotteet 10-50 kloc "Serious" programs 1997 2000 The TheAI AIsystem systemcyc encompasses encompasses more more than than 1.4 1.4 million million assertions, assertions, has has consumed consumed some some $50 $50 million million and and500 500 person-years person-years of of development development effort effort 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 14
Mutta... Mikä ei ole muuttunut : ohjelmistoissa on vakavia laatuongelmia ohjelmistotyön tuottavuus on alhainen onnistuminen riippuu ratkaisevasti projektiin osallistuvien ammattitaidosta ohjelmistokehitys on ratkaisevasti kalliimpaa ja hitaampaa kuin osataan ennakoida 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 15
Osaamisalueet Tekniikka Tuotantoprosessi Sovellusalue Painotukseen vaikuttavat projektin koko sovelluksen luonne laatuvaatimukset tehtävän selkeys... 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 16
Motto If you always do what you always did, you ll always get what you always got anon Lesson learned: Parhaiten onnistuvat ne, jotka eivät luota liikaa viimeisimpiin poppakonsteihin, mutta ovat silti valmiita kokeilemaan uusia ideoita Weinberg 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 17
Tuotantoprosessi...ohjelmistojen tuotantoprosessi on vaiheittainen kuvaus käyttäjien tarpeista toimivaksi järjestelmäksi Haikala&Märijärvi, s.1. Exit
Järjestelmän kehitysvaiheet vaatimukset ja määrittely suunnittelu ja ja toteutus testaus ja ja integrointi Development Development Life Life Cycles Cycles (Murphy (Murphy 1): 1): Order Order T-shirts T-shirts Announce Announce delivery delivery date date Write Write manuals manuals Write Write software software Hire Hire product product manager manager Write Write specifications specifications Ship Ship Test Test Sack Sack the the manager, manager, announce announce uppgrade uppgrade Mikään Mikäänei eikorvaa ratkaistavan ratkaistavanongelman perusteellista perusteellistaymmärtämistä tarpeet tyydyttävä ratkaisu 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 19
Ohjelmistoprojekti tarpeet, ideat, vaatimukset, reunaehdot Projekti Development Development Life Life Cycles Cycles (Murphy (Murphy 2): 2): Pick Pick Code Code Name Name Change Change Code Code Name Name Leak Leak Old Old Code Code Name Name Claim Claim compatibility compatibility Write Write Software Software Develop Develop Technical Technical Design Design Ship Ship Blame Blame developers developers tietojärjestelmä The Software Project Manager's handbook 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 20
Kehitysprosessin vaiheet Määrittely Tuote asiakkaan kannalta Arkkitehtuurisuunnittelu Jako moduuleiksi, rajapintojen määrittely Moduulisuunnittelu Moduulien suunnittelu ja toteutus 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 21
Prosessimalli Liiketoiminta, johtaminen Laatujärjestelmä Hankkeiden hallinta (tuotteen tasolla) Projektinhallinta Projektinhallinta Projektinhallinta ohjelmointi suunnittelu testaus määrittely käyttöönotto, ylläpito tuotteenhallinta laadunvarmistus dokumentointi vaatimustenhallinta... 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 22
Vesiputousmalli Esitutkimus Mikä on ratkaistava ongelma, onko ratkaisua olemassa, mitä se saa maksaa, mitä reunaehtoja sillä on... Määrittely Millainen järjestelmä täyttää ongelman vaatimukset Suunnittelu Miten järjestelmä toteutetaan, järjestelmän osittaminen Toteutus Osien ohjelmointi Integrointi ja testaus Osien yhteenliittäminen Käyttöönotto ja ylläpito Määrittelyprojekti Toteutusprojekti Software Lifecycles 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 23
Toimintatapa Laatujärjestelmä määrittelee yrityksen tavan toimia Toiminta voidaan mallintaa tarkastelemalla yrityksen toimintaprosesseja, joihin ohjelmiston tuotantoprosessi liittyy Määrittely- ja suunnittelumenetelmä kattaa yleensä vain pienen osan koko prosessia Esimerkki laatukäsikirjasta (HYTT) 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 24
Overflow Oy:n asiakasprosessi Palaute Overflow Oy resurssit, ideat neuvottelut/ valmistelu projekti tai hanke asettaminen käyttöönotto käyttö asiakas tarpeet tehtävää koskevat asiakirjat tuotekansio 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 25
Ohjelmiston tuotantoprosessi Ohjeistukset -Projektiohje - Määrittelyohje - Tarkastusohje alustava projektisuunnitelma - Suunnitteluohje - Ohjelmointiohje - Testausohje loppuraportti määrittely tarkastukset Työn vaiheistus järjestelmätestaussuunnitelma suunnittelu tarkastukset ohjelmointi tarkastukset integrointitestaus järjestelmätestaus projektin käynnistäminen projektin päättäminen toiminallinen määrittely tekninen määrittely ohjelmakoodi testausraportti määrittelykatselmus hyväksymiskatselmus Katselmukset suunnittelukatselmus Pöytäkirjat Projektisuunnittelu, seuranta ja ohjaus tarkennettu projektisuunnitelma kokouspöytäkirjat 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 26
OMT-prosessi Vaatimusten kartoittaminen Feasibility Study -vaatimukset -käyttötapaukset olioanalyysi käyttäytymisanalyysi kälimäärittely kälitehtävien määrittely ohjelmalohkon määrittely User Interface Specification - dialogikaaviot (tilakaaviot) - tehtäväkuvaukset (tapahtumasekvenssikaaviot) olioiden suunnittelu ohjelmalohkon rajapintamäärittely käyttäytymisen suunnittelu luokkamäärittely luokkien toteutus Program Block Technical Specification -suunnittelun oliomallit -suunnittelun tapahtumasekvenssikaaviot testaus Vaiheiden eteneminen - normaalisti peräkkäistä -myös o rinnakkaista o iteratiivista Service Block Functional Specification - analyysin oliomalli - operaatiokuvaukset (tapahtumasekvenssikaaviot) Service Block Technical Specification -ohjelmalohkojen rajapinnat -ohjelmalohkojen kommunikointikaaviot (tapahtumasekvenssikaaviot) Ohjemakoodi -luokkamäärittely -luokkien toteutus 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 27
Rationaalinen tuotantoprosessi Todellisuus ei vastaa koskaan laatukäsikirjan ja oppikirjojen siloiteltuja prosessimalleja. Miksi prosessimalleja tarvitaan? rationaalinen prosessi antaa kuitenkin ohjeita siitä, mitä missäkin vaiheessa pitää tehdä ihmisten on helpompi siirtyä projektista toiseen jos projektien toimintatavat muistuttavat toisiaan ja dokumentaation on kunnossa kun tiedetään mitä prosessissa pitää tapahtua, tulee ulkopuolinen seuranta helpommaksi ulkopuolisen arvioijan on helpompi arvioida projektin tilannetta 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 28
Mikä on todellisuus? No No matter where you you are arein in the the system development life life cycle, the the system will will change, and and the the desire to to change will will persist troughout the the life life cycle. [Bersoff et et al. al. 1980] The The top top five five causes for for poor poor cost cost estimation all all relate to to the the requirements process 1. 1. Frequent requirements changes 2. 2. missing requirements 3. 3. insufficient communication with users 4. 4. poor poor specification requirements 5. 5. insufficient analysis [Lederer & Prasad 1992] Murphy's Murphy's Law Law of of Software Software Development: Development: Blessed Blessed is is the the end end user user who who expects expects nothing, nothing, for for he/she he/she will will not notbe be disappointed. disappointed. 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 29
Vain muutos on pysyvää Exit
Vain muutos on pysyvää, koska Kaikkia asiakasvaatimuksia ei välttämättä ymmärretä oikein projektin alkuvaiheessa Asikasvaatimuksia voi jäädä huomaamatta Ohjelmiston toimintaympäristössä voi tapahtua muutoksia projektin aikana (asiakkaan toimintatavat, laitteisto, ohjelmistot,...) Jonkin asiakasvaatimuksen täyttämiseksi määritelty ominaisuus osoittautuu syystä tai toisesta käyttökelvottomaksi Aikataulupaineista johtuen jokin ominaisuus jätetään toteuttamatta 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 31
... Kilpailija julkistaa kehitysprojektin aikana uuden tuotteen Markkinatilanteen muuttumiseen reagoidaan muuttamalla ja lisäämällä vaatimuksia Projektin alkuvaiheessa on tehty teknologiavalintoja, jotka hallitsevassa markkinaasemassa olevan teknologiatoimittajan suunnanmuutosten johdosta osoittautuvat epäonnistuneiksi... 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 32
Iteratiivinen kehitysmalli Määrittely Määrittely Määrittely... Suunnittelu Suunnittelu Suunnittelu Toteutus Toteutus Toteutus Testaus Testaus Testaus Versio 1 Versio 2 Versio 3 onnistuneen tuotekonseptin tärkeys: tuotteistettavissa ja samalla mukautettavissa asiakkaan vaatimuksiin asiakasvaatimusten ja muutosten hallinta => tuotekonsepti pysyy eheänä muutoksesta huolimatta on varauduttava tekemään asioita uudestaan 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 33
Asiakasvaatimusten analysointi, priorisointi ja hallinta Alustavat asiakasvaatimukset Vaatimustenhallinta: kartoitus, analysointi, jäljitettävyys, muutokset Vaatimukset Hallitut muutokset Kelpuutetut 1 5 Myöhempään versioon Toiminto 1 Toiminto 2 3 8 7 6 Toiminto 3 Hylätty 4 Analysoidut vaatimukset 2 2 ominaisuus 1 2 1 5 ominaisuus 2 Ohjelmistovaatimukset: Järjestelmän toiminnallinen määrittely moduuli a 1 moduuli b moduuli c 2 moduuli d moduuli e moduuli f Järjestelmän tekninen määrittely 2 1 5 25 5 5 2 5 1 5 1 1 2 5 5 1 2 5 5 2 2 2 1 1 1 5 1 1 2 5 5 2 2 2 1 2 1 1 Toteutettu järjestelmä 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 34 5 2 5 1 2 2 2 5 2 1 5 5
Kustannusten syntyminen It's It's morally morally wrong wrong to to allow allow naive naive end end users users to to keep keep their their money. money. Murphy's Murphy's Laws Laws of of Software Software Development Development Exit
rest Kustannusten syntyminen Infrastructure - 7 % Human resource management - 3% 1% Technology Development - 3% 5% 1% Management - 7% Quality assurance, configuration. management 5% Marketing and sales Inbound Logistic 1% 4% 3% preliminary design 8% 5% 8% 13% rework detailed code and integration design unit test and test 11% 8% 7% Outbound logistics Service Margin Boehm 1987 Operations 80% 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 36
Kustannusten jakautuminen, määrittely vaatimukset suunnittelu 5% 3% 7% koodaus 6% moduulitestaus 7% integrointi 6% 67% ylläpito Johtopäätös: Hankintahinta on vain alku tuleville kustannuksille Schach 1999 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 37
Virhekustannusten lumivyöryefekti Virheiten korjauskustannusten kerroin 35 30 25 20 15 10 5 0 määrittelyvirheet suunnitteluvirheet määrittely suunnittelu moduulisuunnittelutestaus hyväksymistestaus Virhe on kalliimpi korjata myöhemmin kuin lähellä syntyhetkeä Johtopäätös: Huolelliseen määrittelyyn tarkastuksiin kannattaa uhrata aikaa 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 38
Määrittelyn ongelmat ja riskit Exit
Top Risks, USA Avainhenkilö vaihtaa työpaikkaa Epärealistiset aikataulut ja budjetit Kehitetään ohjelmistoon vääriä toimintoja ja turhia piirteitä Huono käyttöliittymä Muutokset määrittelyssä Ongelmat muualta hankituissa komponenteissa ja/tai palveluissa Tekniset ongelmat (suoritusteho, reaaliaikaisuus, muistitila) Boehm 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 40
Epäonnistumiset case study Miten : aikataulu petti kustannukset ylittyivät asiakas tyytymätön tuotteeseen (ei vastaa tavoitteita, liiketaloudelliset menetykset) jälkihoidon suuri työmäärä Johtopäätös: syyt ongelmiin eivät juuri koskaan ole teknisiä, vaan liittyvät ihmisiin, organisaatioon ja projektin johtamiseen Miksi : työmääräarvio virheellinen määrittely puutteellinen muutosvastarinta liian suuri projekti asiakkaan / toimittajan asiantuntemattomuus suunnittelematon käyttöönotto henkilöstövaihtuvuus huono projektipäällikkö ongelmat työvälineissä / laitteissa The Risks Digest 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 41
Epäonnistumiset a case study Mars Climate Orbiter: due to a conversion error in which commands to the spacecraft were sent in English units rather than metric units, the spacecraft entered the atmosphere at too low altitude which led to the destruction of the spacecraft; the combined cost of losses was 327.6 million dollars some communications channels among project engineering groups were too informal ( e. g. not documented! ) the small mission navigation team was oversubscribed and its work did not receive peer review by independent experts no review ( e. g. verification), insufficient training informal processes in place, formal processes ignored Mission and Operations - 42.8 million unofficially, the problem had been detected but due to politics a fix was never deployed Some disasters caused by numerical errors 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 42
Epäonnistumiset a case study Explosion of the Ariane 5: On June 4, 1996 an unmanned Ariane 5 rocket launched by the European Space Agency exploded just forty seconds after lift-off. The rocket was on its first voyage, after a decade of development costing $7 billion. The destroyed rocket and its cargo were valued at $500 million. The cause of the failure was a software error: a 64 bit floating point number was converted to a 16 bit signed integer, but the number was larger than the largest integer storeable in a 16 bit signed integer, and thus the conversion failed. The error occurred in a software system that was not needed during launch! it was an inappropriate reuse of a 10- year old software component exception handlers had been placed around 4 of 7 variables; unfortunately, the data conversion error occurred in one of the 3 variables, which were left unprotected, since exception handling code makes the system slower A Bug and a Crash 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 43
Ohjelmistotyö on kommunikointia Menetelmät, kuvaustekniikat käyttäjien tarpeet, ideat, rajoitukset reunaehdot mitä esitutkimus määrittely miten mitä miten mitä miten mitä miten mitä toiminnallinen määrittely tekninen määrittely asiakasvaatimukset arkkitehtuurisuunnittelu moduulisuunnittelu moduulisuunnitelmat verifiointi verifiointi verifiointi verifiointi hyväksymistestaus järjestelmätestaus integrointitestaus moduulitestaus ohjelmointi miten ohjelmakoodi verifiointi 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 44
... Ohjelmistojen tuottaminen on spesifikaatioiden tuottamista, so. asioiden määrittelyä Spesifikaatioiden kommunikoimiseksi tarvitaan» luonnollista kieltä» kuvaustekniikoita» sopimuksia Menetelmät ohjeistavat spesifikaatioiden tuottamista 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 45
Lisää pohdintaa Tämän päivän tietotekniikka Exit
Keskeisiä kehityskulkuja Hajautetut ratkaisut» tietoliikenne olennainen osa järjestelmiä Langattomien ratkaisuiden merkitys kasvaa» useita rinnakkaisia ratkaisuita Yhteistoiminnallisuus ja sovellusten integroituminen - myös laitetasolla» välillinen seuraus: riippuvuus vaikutusmahdollisuuksien ulkopuolella olevista ratkaisuista Tietotekniikka integroituu ympäristöön 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 47
Tulevaisuutta? Andy Grove, Intelin pääjohtaja (1998) : [klikkaa kuvaa] http://www.bluetooth.com Vaikutukset järjestelmäkehitykseen? 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 48
Kertauskysymykset Mitä ominaispiirteitä odotetaan ohjelmistotyön ammattilaiselta. Ohjelmistojen jaottelu niiden käyttökohteen mukaan. Miten käyttökohde vaikutta ohjelmistotyöhön. Miten eroavat toisistaan tuotantoprosessin näkökulmasta ohjelmistot, joiden koko on 100 LOC, 1 kloc, 10 kloc, 100 kloc, 1 MLOC. Ohjelmistotyön keskeiset ongelmat. Ohjelmistotyön prosessimallin keskeiset osat ja niiden rooli työn kokonaisuudessa. Mikä on laatukäsikirja. Mitä ongelmia liittyy asiakasvaatimusten kartoittamiseen. Mikä on vesiputousmallin ja iteratiivisen kehitysmallin ero kehitystyön organisoinnin näkökulmasta. Ohjelmistotyö on kommunikointia. Mitä tämä tarkoittaa ja miten kommunikointi hoidetaan. Johdannon viimeisellä kalvolla on esitelty eräitä ohjelmistoille tyypillisiä kehityskulkuja. Miten nämä vaikuttavat ohjelmistotyöhön. Suomessa ohelmistoteollisuus on voimakkaasti kasvava liiketoiminnan alue. 1990-luvulla ohjelmistovienti tapahtui pitkälti erilaisten tietoliikennetuotteiden muodossa ja edelleenkin tämä tuotannon ja viennin sektori on selkeästi eri suuruusluokassa kuin tavanomainen ohjelmistotuotteiden vienti. Mitä tämä vaikuttaa ohjelmistotyön luonteeseen. Ohjelmistoliiketoiminta on pienyritysvaltainen toimiala, jolle ominaista on verkottuminen ja alihankintarakenteiden kehittyminen. Pohdi miten ohjelmistotyön ja liiketoiminnan näkökulmasta toimiminen alihankkijana eroaa itsenäisesti ohjelmistotyötä tekevän yrityksen toiminnasta. 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 49
kertauskysymykset Termi software industrialization tarkoittaa sitä, että ohjelmistoja aletaan tuottaa teollisten tuotteiden kaltaisesti. Käytännön ilmentymänä on mm. se, että ohjelmistotuotteen osia ostetaan ja myydään kuten mitä tahansa kauppatavaraa. On olemassa yrityksiä, jotka ovat erikoistuneita tuottamaan ohjelmistoja, siihen liittyviä rakenteita ja ohjelmiston osia toisten tarpeita varten. Mitä tällainen toimintamuoto vaikuttaa ohjelmistoliiketoimintaan eri näkökulmista asiaa tarkastellen. Ylläpitotyö aiheuttaa tilastojen mukaan noin 2/3 ohjelmiston elinkaaren aikaisista kokonaiskustannuksista. Millä tavalla ohjelmistotyössä voidaan vaikuttaa näiden kustannusten pienentämiseen. Millä keinoilla ohjelmistoyritys voi alentaa virheistä aiheutuvien kokonaiskustannusten suuruutta. Vertaile eri keinoja vaikutusten näkökulmasta toisiinsa. Arvioi myös sitä, miten ohjelmiston elinkaaren eri vaiheissa tehdyt toimenpiteet vaikjuttavat näihin kustannuksiin. Johdannon lopussa on pieni videoleike. Luettele siinä esiintyviä teknologia ja tietojärjestelmäratkaisuita ja arvioi mitä ongelmia niiden tekemiseen liittyy. Miten nämä ongelmat voidaan ratkaista ohjelmistotyössä. Ohjelmistoliiketoiminta kansainvälistyy. Työtä voidaan ostaa ja on tarjolla eri puolilla maailmaa. Mitä tämä merkitsee ohjelmistotyötä ostavan yrityksen toiminnan käytäntöihin. 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 50
kertauskysymykset Tutki Internetissä saatavissa olevaa aineistoa käyttäen suomalaisen tietoteollisuuden luonnetta tarkentaen kurssimateriaalin esitystä. Hyviä lähteitä työlle ovat esimerkiksi tilastokeskuksen verkkosivut (http://www.tilastokeskus.fi) tietoviikon katsaukset (http://www.tietoviikko.fi) sähkö- ja elektroniikkateollisuusliiton verkkosivut (http://www.electroind.fi) tietotekniikan kehittämiskeskuksen tietoyhteiskuntasivut (http://www.tieke.fi) Sitran tietoyhteiskuntasivut (http://www.sitra.fi) tidotusporttaalin verkkosivu (http://www.digitoday.fi) Laadi aiheesta lyhyt tutkielma pohtien alan kehitystä, kansantaloudellista merkitystä, työllisyysvaikutuksia (sekä välittömät että välilliset), alan tuotavuutta, palkkakehitystä, yrityskannan rakennetta toimialapohjaisesti jne. 11/04/2002 Exit "Ohjelmistotuotanto", Hannu Jaakkola 51