Yleistä
-
Upload
alea-pacheco -
Category
Documents
-
view
27 -
download
2
description
Transcript of 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
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.)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
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ä
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
…
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
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
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Ä
KOHDE-JÄRJESTELMÄ KOHDE-
JÄRJESTELMÄ
TAVOITTEETasettaa
YMPÄRISTÖ
muutosprosessi
suorittaa ohjaahavainnoiovatominaisuuksia
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ä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)
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ää.