1 / 22

Yleistä

Yleistä. Ohjelmistotekniikan sovellukset 1960- luvulta Viimeiset 20 v: Sulautetut järjestelmät : bensamittarit, puhelin, pesukone Laitteiden ohjaus: metsäkone, paperikone, pullonpalautusautomaatti. Määritelmiä. Software Engineering Ohjelmistotekniikka, ohjelmistotuotanto

Download Presentation

Yleistä

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ä • Ohjelmistotekniikan sovellukset 1960- luvulta • Viimeiset 20 v: • Sulautetut järjestelmät : bensamittarit, puhelin, pesukone • Laitteiden ohjaus: metsäkone, paperikone, pullonpalautusautomaatti 1. Ohjelmistotekniikka - Software Engineering

  2. Määritelmiä • Software Engineering • Ohjelmistotekniikka, ohjelmistotuotanto • ”Ohjelmistotyö, jonka tuloksena syntyvät järjestelmät täyttävät käyttäjiensä kohtuulliset toiveet ja odotukset ja tämän lisäksi valmistuvat laadittujen aikataulujensa ja kustannusarvioidensa puitteissa.” • Käsittää • Ohjelmiston tuotantoprosessin osa-alueet: laatujärjestelmä, projektinhallinta, dokumentointi, tuotteenhallinta, laadunvarmistus, testaus, määrittely, suunnittelu, toteutus, käyttöönotto ja ylläpito 1. Ohjelmistotekniikka - Software Engineering

  3. Sovellusalueita • Ohjelmistotekniikalla ei erityistä, omaa sovellusaluetta • Ohjelmistotyypit • Varus- ja työkaluohjelmistot (system software, software tools) • Teknis- tieteelliseen laskentaan tarkoitetut ohjelmistot (Engineering and scientific software) • Tietämyspohjaiset järjestelmät (knowledge-based system) • Kaupallis-hallinnolliset ohjelmistot (business software) • Prosessiohjaus- ja prosessiautomaatiojärjestelmät (process control system, process automation system) • Sulautettu järjestelmä (embedded system) • Reaaliaikajärjestelmä (real-time system) • Prosessinohjaus- ja sulautetut järjestelmät • Reaktiivinen järjestelmä • Vuorovaikutus ympäristöön • Esim. prosessiautomaatiojärjestelmät; auton vakionopeuden säädin 1. Ohjelmistotekniikka - Software Engineering

  4. Ohjelmiston ominaisuuksia • Ohjelmiston koko ja käsiteltävän tiedon määrä • Tavuina, ohjelmariveinä • Sähkömittari: muutama tuhat riviä • Avaruussukkula: kymmeniä miljoonia rivejä • Toimintoina/näyttöine • Esim. varastonvalvontasovellus: muutamia kymmeniä toimintoja ja näyttöjä • Tietokannan koko ja monimutkaisuus • Vasteaika- ja reaaliaikaisuusvaatimukset • Ohjelmiston kyky reagoida ympäristön ärsykkeisiin 1. Ohjelmistotekniikka - Software Engineering

  5. Ohjelmiston ominaisuuksia • Luotettavuus • Suojautumista sekä ohjelmiston virheitä (puolustautuva ohjelmointi, defencive programming; elektroniikkatason, mekaniikkatason varmistukset) että laitteiston ja ympäristön häiriöitä vastaan (osien moninkertaistus, toipumismenettelyt ) • Hajautus • Työasemaverkko • Sulautettu järjestelmät: hissi • Tuotteistusaste • Räätälöinti   tuotteistus, tuotekehitys   massatuote 1. Ohjelmistotekniikka - Software Engineering

  6. Esimerkkijärjestelmiä (kuv.) 1. Ohjelmistotekniikka - Software Engineering

  7. Yrityksen tietotekniikka • Tietojärjestelmiä voi olla useita kymmeniä • Syntyneet pitkän aikavälin kuluessa • kirjavuus, tiedonsiirto järjestelmien välillä hankalaa • Integrointi • Liiketoimintanäkökulmasta • Avainprosessien kehittäminen tietojärjestelmien ja tietotekniikan avulla (liiketoimintaa tukevat kehityshankkeet  projektit) • Tietohallintostrategia • Tietohallinto (osasto, organisaatioyksikkö) 1. Ohjelmistotekniikka - Software Engineering

  8. Tietojärjestelmien roolit toimintayksikössä Tuotannonohjaus-järjestelmät Prosessinohjaus-järjestelmät Sulautetut järjestelmät … Päätöksentuki-järjestelmät Toimistoautomaatio-järjestelmät … TOIMINTAYKSIKKÖ OHJAUSTOIMINNOT SUORITTAVA TOIMINTA PERUSTOIMINNOT Taloushallinnon järjestelmät Henkilöstöhallinnon järjestelmät Toimistoautomaatio-järjestelmät … TUKITOIMINNOT 1. Ohjelmistotekniikka - Software Engineering

  9. Liiketoiminta Tietojenkäsittelytehtävät hyväksikäyttö Tietojärjestelmä Tietojärjestelmä • Tietojärjestelmä • käyttäjät, ohjelmistot, • laitteistot ja tietovarastot, • jotka tarvitaan jonkin • tietojenkäsittelytehtävän • suorittamiseksi • tehostaa tai järkeistää • tietojenkäsittelypalvelun • tuottaja • tyydyttää tietotarpeen 1. Ohjelmistotekniikka - Software Engineering

  10. tietotarve Tietojärjestelmä 2 Tietojärjestelmä 1 Palvelu 1.1 Palvelu 2.1 Palvelu 1.2 Tietojärjestelmä 3 Palvelu 3.1 Palvelun tuottaminen 1. Ohjelmistotekniikka - Software Engineering

  11. Tietojenkäsittelyn kehittäminen • Tietojenkäsittelyn kehittämisen osa-alueet • laitteistot ja verkot • perusedellytys • sovellusratkaisut • hallitaan olemassa olevia laitteita ja tietoverkkoa sekä ohjataan yrityksen liiketoimintaprosesseja • laitteet ja tietoverkkoratkaisut sekä sovellukset muodostavat luotettavan, yhteensopivan ja helposti ylläpidettävän perusrakenteen • osaaminen • laitteiden ja sovellusten tehokkaan käytön edellytys • toimintatavat • yhtenäiset ja järkeistetyt toimintatavat tukevat laitteiden ja sovellusten hyötykäyttöä ja tiedonkulkua työntekijöiden välillä 1. Ohjelmistotekniikka - Software Engineering

  12. Tietojenkäsittelyn kehittäminen • Tietojenkäsittelyn kehittäminen on siis • tietojärjestelmien kehittämistä (information systems development, ISD) • olemassa olevien tai uusien tietojärjestelmien kehittämistä ja laatimista asetettujen tavoitteiden mukaisesti • rinnakkaistermi: systeemityö • ja toiminnan sekä osaamisen kehittämistä • kokonaisvaltaisesti ja suunnitelmallisesti • ottaen huomioon liiketoiminnan tavoitteet 1. Ohjelmistotekniikka - Software Engineering

  13. Tietojenkäsittelyn kehittäminen • Tietojenkäsittelyn kehittämisessä on otettava huomioon seuraavia kysymyksiä: • Mikä on kehittämisen tavoite? • Mitä tuloksia halutaan ja millä aikajaksolla tulosten on toteuduttava? • Miten suurta osaa henkilöstöstä kehittämisen tulokset koskevat? • Paljonko tarvitaan taloudellisia resursseja ja henkilöresursseja? • Miten paljon voidaan hyödyntää yrityksen omaa osaamista ja missä määrin tarvitaan ulkopuolista osaamista? • Miten tietojenkäsittelyn kehittämisprojekti ja sen aiheuttama muutos hallitaan? 1. Ohjelmistotekniikka - Software Engineering

  14. Kehittämisprosessi KEHITYSRYHMÄ asettaa TAVOITTEET ovat ominaisuuksia havainnoi suorittaa ohjaa KOHDE- JÄRJESTELMÄ KOHDE- JÄRJESTELMÄ muutosprosessi YMPÄRISTÖ 1. Ohjelmistotekniikka - Software Engineering

  15. Kehittämistyön luonne on muuttunut • 40-50 luvulla • laskennalliset sovellukset • ohjelmistojen kehittäjät olivat itse käyttäjiä • 60-luvulla kehittäjän ja käyttäjän roolien erkaneminen • suurempia ohjelmistohankkeita • integrointi • tietoliikenneratkaisut • 70-80 luvulla pc:n myötä • henkilökohtaiset tietojärjestelmät • käyttäjien osallistumien kehittämistyöhön • toimintokeskeiset ohjelmistot (varasto, tilaustenkäsittely) • 90-luvulla Windows-aikakausi • useat yhtäaikaiset sovellukset työpöydällä • 2000-luvolla • asiakaslähtöisyys, ryhmätyö • laajat, monimutkaiset integroidut tietojärjestelmät • ERP 1. Ohjelmistotekniikka - Software Engineering

  16. Ohjelmistotuotannon ongelmia • Alan teknologian nopea kasvu  ohjelmistotuotteiden koko on kasvanut kaksinkertaiseksi muutaman vuoden välein • Ohjelmistotuotteet ovat monimutkaisia ja laajoja • Ohjelmistotuotteet eivät ole virheettömiä • virheet ja puutteet ohjelman toiminnassa • ei vastaa asiakkaan tarpeita • ei voida muusta syystä ottaa käyttöön (yhteensopimattomuus, koulutus,…) • Hankkeet ovat kalliita ja joskus myös epäonnistuvat • aikataulu, talous, henkilöresurssit • tekniset ongelmat vs. projektinhallintaan liittyvät ongelmat • kommunikointi, ryhmätyön organisointi • Toteuttamistyön arviointi hankalaa • yli puolet ohjelmistohankkeista myöhästyy ja ylittää kustannuksensa • systeemityön tuottavuus ja kustannukset • monimutkaisempi ohjelmistotuote vaatii kalliimman kehittämisprosessin, mutta ei ole samassa suhteessa tuottava • ylläpito • ”mitä aikaisemmin kehitystyössä virhe on tapahtunut, sitä kalliimpi on sen korjaus” • vanhat ns. perinnejärjestelmät (legacy systems) 1. Ohjelmistotekniikka - Software Engineering

  17. Ongelmien hallinta • 1960- luvulla alettiin kiinnittää ongelmiin huomiota (ohjelmistokriisi) • menetelmiä ja tekniikoita kehitellään  eivät toisin ratkaise itse ongelmaa (tuotantoprosessi) • ohjelmistoprosessin hallinta (software process) • = kokonaisuus, jolla ohjataan tietojärjestelmän kehittämistä ideasta ohjelmasta luopumiseen saakka; kattaa koko elinkaaren • vuorovaikutuksessa ympäristön kanssa (laatujärjestelmä, projektien hallinta, liiketoiminta, johtaminen, yms. vaikuttavat) • organisaation systeemityön kypsyysaste • mitä tarkemmin määritelty, noudatettu, toistettavissa oleva, optimoitu ja hyväksytty ohjelmistoprosessi on, sitä korkeammalla kypsyystasolla (maturity) organisaatio on • ks. http://cs.joensuu.fi/tSoft/ 1. Ohjelmistotekniikka - Software Engineering

  18. Haasteita menetelmäkehitykselle • Alan kehittymättömyys  ei ole olemassa yksiselitteistä suunnittelumenetelmää • Kehitysmenetelmien kehittely vasta käynnissä • Järjestelmä ”keinolla millä tahansa, ad hoc” • Löytyy useimmassa tilanteessa sopiva ratkaisu • Ratkaisu muotoutuu yleisesti käytettäväksi menetelmäksi • Menetelmät hioutuvat järjestelmällisiksi, tukevat malleja ja teorioita, voidaan kuvata formaalisti • Löytyy uusia sovellusalueita, joihin mallit eivät sovi  alkaa uuden mallin kehittely (palataan kohtaan 1) 1. Ohjelmistotekniikka - Software Engineering

  19. Haasteita menetelmäkehitykselle • Ohjelmistotuotanto eroaa muista perinteisistä ns. insinööritieteistä • Monimutkaisuus • Monimutkaisuuden minimointi, rajapintojen yksinkertaisuus • Näkymättömyys • Valmiusasteen määrittely ongelmallista  vaiheistus • Muunnettavuus • Vaatimusten muuttuminen, virheiden korjaamisesta aiheutuvat muutokset, toimintaympäristön muutokset  ylläpideetävyys • Ainutkertaisuus • skaalautumattomuus • Epäjatkuvuus • Pienikin virhe voi kaataa koko järjestelmän 1. Ohjelmistotekniikka - Software Engineering

  20. Ohjelmistokehittäjän ”huoneentaulu” • Mikään ei korvaa ratkaistavan ongelman perusteellista ymmärtämistä – joskus voi tosin käydä hyvä tuuri. • Mikään ratkaisu ei sovellu kaikkiin tehtäviin ja johonkin tilanteeseen parhaiten soveltuva lähestymistapa voi olla toisessa tilanteessa kaikista huonoin. • On olemassa monia hyödyllisiä lähestymistapoja, jotka toimivat useammassa kuin yhdessä tilanteessa, joten kannattaa tutustua sellaiseen mikä on toiminut aikaisemmin. 1. Ohjelmistotekniikka - Software Engineering

  21. ”huoneentaulu” jatkuu… • Ongelman ratkaisun niksi ei ole pelkästään miten menetelmiä sovelletaan (know-how) vaan mieluummin milloin niitä sovelletaan (know-when) – tämä antaa mahdollisuuden sovittaa ratkaisumenetelmä ongelmaan eikä päinvastoin. • Riippumatta siitä, kuinka hyvin taidat edellisen kohdan ”miten” ja ”milloin”, on olemassa ongelmia, jotka ovat nykytietämyksellä mahdottomia ratkaista tai joiden perimmäisiä ominaisuuksia kukaan ei ymmärrä riittävän hyvin: nöyryys on siis paikallaan 1. Ohjelmistotekniikka - Software Engineering

  22. Kannattaako siis edes yrittää? • Poppakonsteja ei ole olemassa • Systemaattisella ja määrätietoisella toimintatapojen kehittämisellä voidaan päästä hyviin tuloksiin • Keskeistä on • Tunnistaa ongelmat • Tunnistaa ohjelmistotyön osa-alueet • Ymmärtää ohjelmistotuotanto prosessina • Ymmärtää terminologia – yhteinen kieli • Menetelmien osaaminen voi olla hyödyksi vasta kun on ymmärrys, mihin niitä voi käyttää. 1. Ohjelmistotekniikka - Software Engineering

More Related