1 / 14

Yleistä ohjelmistosuunnittelusta

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

lilia
Download Presentation

Yleistä ohjelmistosuunnittelusta

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Yleistä ohjelmistosuunnittelusta RASE 8.5.2006

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

  3. Yleistä ohjelmistotuotannosta • Software Engineering • = 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

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

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

  6. Ohjelmistojen luonne • Ohjelmiston koko ja käsiteltävän tiedon määrä • 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 • 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…)

  7. Ohjelmistojen luonne • Luotettavuus • 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 • nykyajan järjestelmät tyypillisesti hajautettuja • myös sulautetut järjestelmät ja prosessinohjausjärjestelmät voivat olla hajautettuja

  8. Ohjelmistojen luonne • Tuotteistusaste • 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ä

  9. Ohjelmistotuotannon ongelmia • Ohjelmistotuotannon historia on lyhyt • teollisia tuotteita tuotettu vasta muutamia vuosikymmeniä • 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 • kymmenien tuhansien koodirivien määrä yleistä, suurimmat kymmeniä miljoonia rivejä… • Ohjelmistotuotteet ovat monimutkaisia • 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ä • 2/3 alan työstä on vanhojen ohjelmien korjaamista, muuttamista ja jatkokehittelyä

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

  11. Ohjelmistotuotannon ongelmia • Yritysten kannalta ongelmia aiheuttavat korkeat kustannukset ja myttyyn menneet hankkeet • Suomessakin on yrityksiä ajautunut konkurssiin ohjelmistotekniikan vuoksi • Työmäärät ja aikataulut arvioidaan yleensä väärin • tutkimuksen mukaan yli puolet ohjelmistoprojekteista myöhästyy ja ylittää kustannuksensa • Miksi kustannukset ja työmäärät arvioidaan väärin? • 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…)

  12. Ohjelmistotekniikan kehitys Frederik Brooks ”There is no silver bullet”: • Monimutkaisuus • 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 • 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ä helpompaa on projektin etenemisen seuranta

  13. Ohjelmistotekniikan kehitys • Muunnettavuus • 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 • 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?

  14. Ohjelmistotekniikan kehitys • Skaalautumattomuus • 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 • 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

More Related