Yleist ohjelmistosuunnittelusta RASE 8 5 2006 1 Yleist

  • Slides: 14
Download presentation
Yleistä ohjelmistosuunnittelusta RASE 8. 5. 2006 1

Yleistä ohjelmistosuunnittelusta RASE 8. 5. 2006 1

Yleistä ohjelmistotuotannosta ATK osaksi jokapäiväistä toimintaa 1960 ja 1970 -luvuilla ¡ Ohjelmistotekniikkaa hyödynnetään päivittäin

Yleistä ohjelmistotuotannosta ATK osaksi jokapäiväistä toimintaa 1960 ja 1970 -luvuilla ¡ Ohjelmistotekniikkaa hyödynnetään päivittäin ¡ l l l pankkiautomaatit puhelimet kaukosäätimet potilashallintojärjestelmät toimistosovellukset Jne. . 2

Yleistä ohjelmistotuotannosta ¡ Software Engineering l l = ohjelmistotekniikka tai ohjelmistotuotanto tarkoittaa ohjelmistotyötä, jonka

Yleistä ohjelmistotuotannosta ¡ Software Engineering l l = ohjelmistotekniikka tai ohjelmistotuotanto tarkoittaa ohjelmistotyötä, jonka tuloksena syntyvät järjestelmät täyttävät käyttäjiensä kohtuulliset toiveet ja odotukset, valmistuvat määritellyn aikataulun ja arvioitujen kustannusten puitteissa 3

Sovellusalueet ¡ ¡ Ohjelmistotekniikalla ei ole mitään tiettyä sovellusaluetta varus- ja työkaluohjelmistot l ¡

Sovellusalueet ¡ ¡ Ohjelmistotekniikalla ei ole mitään tiettyä sovellusaluetta varus- ja työkaluohjelmistot l ¡ teknis-tieteellinen laskenta l ¡ Esim. tekstinkäsittely, kääntäjät, käyttöjärjestelmät Esim. luonnonilmiöiden mallinnus tietämyspohjaiset järjestelmät l Esim. lainsäädäntöä toteuttavat sovellusalueet, asiantuntijajärjestelmät, sairaalajärjestelmät 4

Sovellusalueet ¡ kaupallishallinnolliset ohjelmistot l ¡ prosessinohjaus- ja prosessiautomaatiojärjestelmät l ¡ Esim. kaukosäätimet, auton

Sovellusalueet ¡ kaupallishallinnolliset ohjelmistot l ¡ prosessinohjaus- ja prosessiautomaatiojärjestelmät l ¡ Esim. kaukosäätimet, auton vakionopeuden säädin, graafinen käyttöliittymä verkko-opetus l ¡ Esim. television, videon, matkapuhelimen ja pesukoneen toimintaa ohjaavat ohjelmistot reaaliaikajärjestelmät (reaktiiviset järjestelmät) l ¡ Esim. paperikoneen ohjaus, matkapuhelinverkon hallintajärjestelmä sulautetut järjestelmät l ¡ Esim. palkanlaskenta, varastonvalvonta Esim. verkko-oppimisalusta Monet järjestelmät ovat edellisten kombinaatioita 5

Ohjelmistojen luonne ¡ Ohjelmiston koko ja käsiteltävän tiedon määrä l l ¡ koko voidaan

Ohjelmistojen luonne ¡ Ohjelmiston koko ja käsiteltävän tiedon määrä l l ¡ koko voidaan ilmoittaa tavuina, koodiriveinä, toimintojen lukumääränä, näyttöjen määränä tai tietokannan koolla/monimutkaisuudella ohjelmistojen koot voivat vaihdella muutamasta sadasta koodirivistä kymmeniin miljooniin riveihin Vasteaika- ja reaaliaikaisuus l l vasteaika kuvaa järjestelmän nopeutta vastata tiettyihin ulkoisiin tapahtumiin termiä reaaliaikaisuus käytetään kuvaamaan vasteajan vaatimuksia eräajo-ohjelmistoissa ei yleensä vasteaikavaatimuksia prosessinohjausjärjestelmissä kovat vasteaikavaatimukset (kovuus ei tarkoita välttämättä lyhyttä vasteaikaa…) 6

Ohjelmistojen luonne ¡ Luotettavuus l l l ¡ tarkoitetaan suojautumista ohjelmiston virheitä ja laitteiston

Ohjelmistojen luonne ¡ Luotettavuus l l l ¡ tarkoitetaan suojautumista ohjelmiston virheitä ja laitteiston ja ympäristön häiriöitä vastaan ohjelmistojen virheitä vastaan voidaan suojautua ohjelmoimalla ylimääräisiä tarkistuksia laitteistojen ongelmia vastaan voidaan suojautua monistamalla laitteiston osia tai ohjelmoimalla laitteistoon toipumismenettelyjä Hajautus l l nykyajan järjestelmät tyypillisesti hajautettuja myös sulautetut järjestelmät ja prosessinohjausjärjestelmät voivat olla hajautettuja 7

Ohjelmistojen luonne ¡ Tuotteistusaste l l räätälöidyt ohjelmistot tehdään tietyn asiakkaan tarpeisiin ja tietylle

Ohjelmistojen luonne ¡ Tuotteistusaste l l räätälöidyt ohjelmistot tehdään tietyn asiakkaan tarpeisiin ja tietylle toimialalle räätälöinti voidaan toteuttaa täysin uudesta sovelluksesta tai muokataan käytössä olevaa sovellusta tuotekehitysprojekti tähtää tuotteeseen, joka soveltuu monille asiakkaille monet ohjelmistot näiden kahden tapauksen väliltä 8

Ohjelmistotuotannon ongelmia ¡ Ohjelmistotuotannon historia on lyhyt l ¡ ¡ Tietotekniikan nopea kehitys mahdollistanut

Ohjelmistotuotannon ongelmia ¡ Ohjelmistotuotannon historia on lyhyt l ¡ ¡ Tietotekniikan nopea kehitys mahdollistanut tuotteiden koon kaksinkertaistumisen muutaman vuoden välein Nykyiset isot järjestelmät / ohjelmistot ovat monimutkaisimpia insinöörityön näytteitä ihmiskunnan historiassa l ¡ kymmenien tuhansien koodirivien määrä yleistä, suurimmat kymmeniä miljoonia rivejä… Ohjelmistotuotteet ovat monimutkaisia l ¡ teollisia tuotteita tuotettu vasta muutamia vuosikymmeniä tavallisessa salapoliisiromaanissa noin 10 000 lausetta miljoonan rivin ohjelmisto vastaisi 100 -osaista salapoliisiromaanisarjaa, jossa henkilöt, johtolangat, murhaajat ja kaikki pienimmätkin asiat ovat ristiriidattomia Ohjelmistotuotannossa valmiiden tuotteiden muokkaaminen on yleistä l 2/3 alan työstä on vanhojen ohjelmien korjaamista, muuttamista ja jatkokehittelyä 9

Ohjelmistotuotannon ongelmia ¡ ¡ Mikään ohjelmisto ei ole virheetön Yritysten kannalta ongelmia aiheuttavat korkeat

Ohjelmistotuotannon ongelmia ¡ ¡ Mikään ohjelmisto ei ole virheetön Yritysten kannalta ongelmia aiheuttavat korkeat kustannukset ja myttyyn menneet hankkeet l ¡ Työmäärät ja aikataulut arvioidaan yleensä väärin l ¡ Suomessakin on yrityksiä ajautunut konkurssiin ohjelmistotekniikan vuoksi tutkimuksen mukaan yli puolet ohjelmistoprojekteista myöhästyy ja ylittää kustannuksensa Miksi kustannuksen ja työmäärät arvioidaan väärin? 10

Ohjelmistotuotannon ongelmia ¡ Yritysten kannalta ongelmia aiheuttavat korkeat kustannukset ja myttyyn menneet hankkeet l

Ohjelmistotuotannon ongelmia ¡ Yritysten kannalta ongelmia aiheuttavat korkeat kustannukset ja myttyyn menneet hankkeet l ¡ Työmäärät ja aikataulut arvioidaan yleensä väärin l ¡ Suomessakin on yrityksiä ajautunut konkurssiin ohjelmistotekniikan vuoksi tutkimuksen mukaan yli puolet ohjelmistoprojekteista myöhästyy ja ylittää kustannuksensa Miksi kustannukset ja työmäärät arvioidaan väärin? l l jos samassa yrityksessä tehty aikaisemmin saman alan vastaavanlainen projekti, niin onnistumisen mahdollisuudet paranevat ei ole laskentatietoa tarjolla ja yleensä vanhoja projekteja ei voida suoraan verrata uuteen saadaanko osaavimmat ja kokeneimmat resurssit projektiin. Ihmisten tuottavuus saattaa vaihdella huomattavasti todellinen työmäärä = arvioitu työmäärä * PII * 30% (alan humoristista kansanperinnettä, joka ei kyllä ole kaukana totuudesta…) 11

Ohjelmistotekniikan kehitys Frederik Brooks ”There is no silver bullet”: ¡ Monimutkaisuus l l l

Ohjelmistotekniikan kehitys Frederik Brooks ”There is no silver bullet”: ¡ Monimutkaisuus l l l ¡ ongelmat monimutkaisia->ohjelmistot monimutkaisia hyvälläkään ohjelmistosuunnittelulla monimutkaisuutta ei saada pois, mutta huonolla pystytään helposti lisäämään monimutkaisuuden minimointi ja rajapintojen määrän minimointi, selkeys ja yksinkertaisuus ohjelmistosuunnittelun keskeisiä periaatteita Näkymättömyys l l keskeneräisen projektin valmiusastetta erittäin vaikea arvioida projekti voi olla edellä aikataulua, vaikka yli puolet ajasta jo käytetty ja koodausta ei ole edes aloitettu. Toinen projekti taas saattaa olla myöhässä, vaikka puolet ajasta vielä käyttämättä ja ollaan jo testaus-vaiheessa projektin vaiheistaminen ja välietapit projektipäällikön työkalut mitä pienempiin osiin tehtävät voidaan jakaa sitä 12 helpompaa on projektin etenemisen seuranta

Ohjelmistotekniikan kehitys ¡ Muunnettavuus l l l ¡ yleensä jo projektin aikana ohjelmistoon tehdään

Ohjelmistotekniikan kehitys ¡ Muunnettavuus l l l ¡ yleensä jo projektin aikana ohjelmistoon tehdään jatkuvasti muutoksia ja ylläpitovaiheessa tahti kiihtyy jos kehitetään rinnan laitteistoa ja ohjelmistoa ja laitteistossa huomataan testeissä vikaa, niin yleensä ohjelmistoa muutetaan. toimintaympäristön muutokset, ohjelmiston virheet ja muuttuvat vaatimukset kasaavat ohjelmistolle muutospaineita koko sen elinkaaren ajan huolellinen määrittely ja suunnittelu vähentävät muutostarpeita, mutta eivät kokonaan poista niitä ohjelmistojen ylläpidettävyys on erittäin tärkeä ominaisuus Ainutkertaisuus l l l projektit yleensä ainutlaatuisia, kerran toteutettavia. Ei suoraan hyödynnettävää aikaisempaa kokemusta ja karttuvaa tietotaitoa ei voida välttämättä suoraan hyödyntää tulevissakaan projekteissa seurausta alan nopeasta kehityksestä ja nuoruudesta. Uutta teknologiaa virtaa alalle jatkuvasti ja tämän seurauksena uusia sovellusalueita millainen olisi rakennustyömaa, jos se tehtäisiin kuten ohjelmistoprojektit? 13

Ohjelmistotekniikan kehitys ¡ Skaalautumattomuus l l l ¡ se mikä toimii pienessä projektissa ei

Ohjelmistotekniikan kehitys ¡ Skaalautumattomuus l l l ¡ se mikä toimii pienessä projektissa ei välttämättä toimi ollenkaan isossa projektissa pienessä projektissa ei välttämättä tehdä kunnon suunnitelmia, kaikki tuntevat suurin piirtein koko ohjelmiston, dokumentaatiota ei välttämättä tehdä jne. Yksittäinen uroteko saattaa pelastaa uppoavissa olevan projektin suuri projekti vaatii hyvän projektinohjauksen, dokumentaation. Suurta projektia ei yksittäinen uroteko pysty pelastamaan. Auttaako resurssien lisääminen? Epäjatkuvuus l l perinteisen tekniikan kohdalla yleensä näin ei käy. Yhden pultin irtoaminen pilvenpiirtäjän katolta ei luhista taloa ohjelmistoissa oleva virhe aiheuttaa yleensä epäjatkuvuuskohdan. Ohjelma kaatuu yhdenkin bitin virhe saattaa aiheuttaa miljoonien eurojen vahingot testaamalla ei millään saada kaikkia epäjatkuvuuskohtia kiinni. Erikoistilanteita on niin paljon 14