yleistä

22
1. Ohjelmistotekniikka - Software E ngineering 1 Yleistä Ohjelmistotekniikan sovellukset 1960- luvulta Viimeiset 20 v: Sulautetut järjestelmät : bensamittarit, puhelin, pesukone Laitteiden ohjaus: metsäkone, paperikone, pullonpalautusautomaatti

Upload: alea-pacheco

Post on 03-Jan-2016

27 views

Category:

Documents


2 download

DESCRIPTION

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 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Yleistä

1. Ohjelmistotekniikka - Software Engineering 1

Yleistä

Ohjelmistotekniikan sovellukset 1960- luvulta Viimeiset 20 v:

Sulautetut järjestelmät : bensamittarit, puhelin, pesukone

Laitteiden ohjaus: metsäkone, paperikone, pullonpalautusautomaatti

Page 2: Yleistä

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

Page 3: Yleistä

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

Page 4: Yleistä

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

Page 5: Yleistä

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

Page 6: Yleistä

1. Ohjelmistotekniikka - Software Engineering 6

Esimerkkijärjestelmiä (kuv.)Omin./

Sovellus

Koko Tietokannan koko

Vasteaika, reaalisuus

Hajautus Luotettavuus Tuotteistus-aste

GSM ROM 1MB

- Suuri 2 väylällä yhdistettyä prosessoria

- Massa-tuote

Matka-puhelin keskus

15M koodi-riviä

Useita tieto-kantoja, kymmeniä Mb

Paikoitellen suuri

Hajautettu moniproses-sori järjestelmä

Kahden-nettuja komponent-teja

Tuotteis-tettu, asiakaskoh-taisia piirteitä

Televisio ROM 1MB

- Suuri 2 pross., useita sig-naaliproses-soreita

- massatuote

Vakuutus-järjes-telmä

300 000 koodir., 100 näyttöä

100 relaatio-tietokan-nan taulua

< 1 s Keskitetty, satoja päätteitä

Käyttökatkok-set haittaavat asiakaspal-velua

räätälöity

Page 7: Yleistä

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ö)

Page 8: Yleistä

1. Ohjelmistotekniikka - Software Engineering 8

Tietojärjestelmien roolit toimintayksikössä

TOIMINTAYKSIKKÖ

SUORITTAVA TOIMINTA

OHJAUSTOIMINNOT

PERUSTOIMINNOT

TUKITOIMINNOT

Tuotannonohjaus-järjestelmät

Prosessinohjaus-järjestelmätSulautetut

järjestelmät…

Taloushallinnon järjestelmät

Henkilöstöhallinnon järjestelmät

Toimistoautomaatio-järjestelmät

Päätöksentuki-järjestelmät

Toimistoautomaatio-järjestelmät

Page 9: Yleistä

1. Ohjelmistotekniikka - Software Engineering 9

Tietojärjestelmä

LiiketoimintaTietojenkäsittelytehtävät

Tietojärjestelmä

hyväksikäyttö

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

Page 10: Yleistä

1. Ohjelmistotekniikka - Software Engineering 10

Palvelun tuottaminen

tietotarve

Tietojärjestelmä 1 Tietojärjestelmä 2

Tietojärjestelmä 3

Palvelu 1.1

Palvelu 1.2

Palvelu 2.1

Palvelu 3.1

Page 11: Yleistä

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ä

Page 12: Yleistä

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

Page 13: Yleistä

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?

Page 14: Yleistä

1. Ohjelmistotekniikka - Software Engineering 14

Kehittämisprosessi

KEHITYSRYHMÄ

KOHDE-JÄRJESTELMÄ KOHDE-

JÄRJESTELMÄ

TAVOITTEETasettaa

YMPÄRISTÖ

muutosprosessi

suorittaa ohjaahavainnoiovatominaisuuksia

Page 15: Yleistä

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

Page 16: Yleistä

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)

Page 17: Yleistä

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/

Page 18: Yleistä

1. Ohjelmistotekniikka - Software Engineering 18

Haasteita menetelmäkehitykselle

Alan kehittymättömyys ei ole olemassa yksiselitteistä suunnittelumenetelmää

Kehitysmenetelmien kehittely vasta käynnissä1. Järjestelmä ”keinolla millä tahansa, ad hoc”

2. Löytyy useimmassa tilanteessa sopiva ratkaisu

3. Ratkaisu muotoutuu yleisesti käytettäväksi menetelmäksi

4. Menetelmät hioutuvat järjestelmällisiksi, tukevat malleja ja teorioita, voidaan kuvata formaalisti

5. Löytyy uusia sovellusalueita, joihin mallit eivät sovi alkaa uuden mallin kehittely (palataan kohtaan 1)

Page 19: Yleistä

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

Page 20: Yleistä

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.

Page 21: Yleistä

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

Page 22: Yleistä

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ää.