27
Ohjelmistotekniikka kevät 200 Johdatusta ohjelmistotekniikkaan

Johdatusta ohjelmistotekniikkaan

  • Upload
    norris

  • View
    33

  • Download
    0

Embed Size (px)

DESCRIPTION

Johdatusta ohjelmistotekniikkaan. OT:n historiaa – 4 vaihetta (1/2). Vaihe (0 – 60-luvun alku) Vähän tietokoneita Eräajo-tyyppisiä ohjelmia Pääasiassa matemaattisia, pieniä yhden käyttäjän sovelluksia Ei kaupallista merkitystä Vaihe (60-luvun alku – 70-luvun alku) - PowerPoint PPT Presentation

Citation preview

Page 1: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Johdatusta ohjelmistotekniikkaan

Page 2: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

OT:n historiaa – 4 vaihetta (1/2)1. Vaihe (0 – 60-luvun alku)

– Vähän tietokoneita– Eräajo-tyyppisiä ohjelmia– Pääasiassa matemaattisia, pieniä yhden käyttäjän

sovelluksia– Ei kaupallista merkitystä

2. Vaihe (60-luvun alku – 70-luvun alku)– Enemmän ja suurempia tietokoneita– Monen käyttäjän (~100) ajantasaiset järjestelmät– Tietokannat– Kaupallinen hyödyntäminen -> Ensimmäiset

ohjelmistotalot– Ohjelmistokriisi!!!

Page 3: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

OT:n historiaa – 4 vaihetta (2/2)

3. Vaihe (70-luvun alku – 80-luvun loppu)- Henkilökohtaisia tietokoneita + hajautettuja

järjestelmiä- Ohjelmistokustannukset > laitteistokustannukset- Ohjelmistoilla paljon käyttäjiä (~100 000)

-> massamarkkinet-> laatuvaatimukset nousivat

4. Vaihe (80-luvun loppu - )- Tehokkaat PC:t (myös kannettavat)- Oliotekniikat- Case-välineet- Valtavat käyttäjämäärät (~10 000 000)

Page 4: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Tietotekniikan hyödyntäminen

”Akateeminenmaailma”

Yritykset

Kotitaloudet

Aika

Page 5: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Ohjelmistotekniikan trendit

• Programming-in-the-small (50-60 luvut)– Henkilökohtainen tehokkuus

• Programming-in-the-large (70-luku)– Tuotteen kompleksisuuden hallinta ja modularisointi

• Programming-in-the-small (80-luku)– Tuotantoprosessin ja projektityöskentelyn

kompleksisuuden hallinta

Page 6: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

OT tänään

• Krooniset ongelmat jatkuvat• Nyrkkisääntö (1994):

“Jopa hyvin suunnitellut ohjelmistohankkeet ylittävät budjettinsa keskimäärin 25 % ja

aikataulunsa 50 %”• OT ei ole vieläkään yhtä kehittynyt kuin monet

muut insinööritieteet• CMM:n tilastoissa 65 % viimeisen viiden

vuoden aikana luokitelluista yrityksistä on jäänyt alle tason kolme (tasot 1-5)

Page 7: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Ongelmien lähteitä

• Ohjelmistotekniikalta odotetaan liikaa:– Tekniikka on kehittynyt nopeammin kuin

ohjelmistotuotannon tehokkuus– Kompleksisuus on samalla kasvanut

Kompleksisuus

InternetPC:n suori-

tuskyky

Mobiilipääte-laitteet

Laatuvaatimukset

Page 8: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Ongelmien lähteitä

• Teknologiasiirron hitaus– Uudet menetelmät siirtyvät käytännön

ohjelmistotyöhön jopa 10-20 vuoden viiveellä

• Liian suuret laatuvaatimukset

Page 9: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Tekniikan kehitys tieteeksi (Shaw 1990)

1. Mikä tahansa toimiva (ad hoc) ratkaisu kelpaa.

2. Löydetään ratkaisuja, jotka toimivat useammassa kuin yhdessä tapauksessa (”kansanperinne”)

3. Otetaan käyttöön systemaattisia menetelmiä4. Kehitetään malleja, teorioita ja formaaleja

menetelmiä5. Löydetään uusia ongelmia, ja palataan taas

alkuun

Page 10: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Ohjelmistotekniikan kuvailua

• Software Engineering means how to program if you can’t (Dijkstra 1968)

• Mitään ihmeratkaisua ohjelmistotekniikan ongelmiin ei ole tulossa, vaan kehitys jatkuu edelleen vähäisenä (Brooks 1986)

• Ohjelmistotekniikka ei ole perinteisten insinööritieteiden tasolla, paitsi joillakin hyvin hallituilla osa-alueilla (Shaw 1990)

• Oliomenetelmien arvellaan yleisesti vaikuttavan tuntuvasti

Page 11: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Ohjelmistotekniikan myyttejä (johto)

• Meillä on dokumentoidut toimintatavat. Eivätkö työntekijät näe siitä kaiken tarpeellisen.

• Työntekijöillä on uusimmat kehitysvälineet – miksi ei synny parempaa tulosta?

• Jos jäämme aikataulusta jälkeen, voimme korjata sen lisäämällä ohjelmoijia.

Page 12: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Ohjelmistotekniikan myyttejä (asiakas)

• Yleinen tavoitteiden määrittely riittää, jotta ohjelmien kirjoittaminen voidaan aloittaa – yksityiskohdat voidaan täydentää myöhemmin.

• Projektin vaatimukset muuttuvat jatkuvasti, mutta muutokset voidaan toteuttaa helposti, koska ohjelmisto on joustavaa (vrt. laitteistot).

Page 13: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

13-6X

10X

15-40X

30-70X

40-1000X

(82X IBMkeskiarvo)

Vir

heen k

orjaam

isen s

uhte

elli

nen k

ust

annus

Vaatimus-määrittely

Suunnittelu Koodaus Kehitys-Testaus

Hyväksymis-Testaus

Käyttöönotto,Ylläpito

Virheen suhteellinen kustannus (Boehm 1981)

Page 14: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Ohjelmistotekniikan myyttejä (työntekijä)

• Työ on tehty, kun olemme kirjoittaneet ohjelman, joka toimii.

• Ennen kuin saan ohjelman pyörimään en voi mitenkään arvioida sen laatua

• Onnistuneen projektin ainoa toimitettava tuotos on toimiva ohjelma

Page 15: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Ohjelmistotekniikan erityispiirteitä 1/2

• Ohjelmistot ovat abstrakteja, eivät fyysisiä-> joustavuus, monimutkaisia

• Ohjelmistojen käyttäytyminen on epäjatkuvaa -> ei voida tehdä oletuksia, sillä pienikin virhe voi kaataa koko järjestelmän

• Ohjelmisto kehitetään, sitä ei koota peruskomponenteista

• ”ohjelmistotehdas” tuotekehitysosasto• Ohjelmistojen monistaminen on halpaa

Page 16: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Ohjelmistotekniikan erityispiirteitä 2/2

• Ei varastotavaraa – ohjelmistot räätälöidään asiakaskohtaisesti

• Ohjelmat eivät kulu, mutta ylläpito voi johtaa ränsistymiseen. Varaosia ei ole, kuten fyysisissä tuotteissa.

Page 17: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Keskeiset ongelma-alueet

• Vaatimusmäärittely– Vaatimusten oikeellisuus on tärkeää lopputuotteen

tehokkuuden ja laadun kannalta.

• Kompleksisuus• Integraation tarve

– Standardit

• Projektitoiminnan tarve (Windows 95 – 200 työntekijää)

• Muutostarpeet• Tuotteen hallinta• Ylläpito

Page 18: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Ongelmakysymyksiä

• Miksi ohjelmistotuotanto on niin kallista ja hidasta?

• Miksi ohjelmistoprojektien keston ja kustannusten arviointi on niin vaikeaa?

• Miksi kaupallisissa ohjelmissa on puutteita ja virheitä?

• Miksi ohjelmistojen suunnittelu on vaikeaa?• Miksi valmista ja toimivaa ohjelmaa täytyy

ylläpitää?• Miksi eri ohjelmistojen välillä on niin paljon

yhteensopivuusongelmia?

Page 19: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Tuottavuustekijät

Tekijöiden yhteisvaikutus maksimissaan n. 13x !!!

Tuottavuustekijä Vaikutus (max.)

Inhimilliset tekijät +90%

Ongelmatekijät +40%

Prosessitekijät +50%

Tuotetekijät +140%

Resurssitekijät +40%

Page 20: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Riskitekijät 1/3

Riskitekijä Riskinhallintatavat

Henkilöstöresurssien riittämättömyys

Asiantuntijan palkkausTyötehtävien ja kykyjen vastaavuuden tarkistaminenKoulutus

Epärealistiset aikataulut ja budjetit

Vähittäinen kehittäminenUudelleenkäyttöVaatimusten selkeyttäminen

Väärien toimintojen ja ominaisuuksien kehittäminen

OrganisaatioanalyysiKäyttäjien osallistuminenProtoilu

Page 21: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Riskitekijät 2/3

Riskitekijä Riskinhallintatavat

Vääränlaisen käyttöliittymän kehittäminen

ProtoiluKäyttäjien osallistuminen

Liiat/turhat ominaisuudet Vaatimusten selkeyttäminenProtoiluKustannus-hyöty analyysi

Jatkuva vaatimusten muuttuminen

Korkea muutoskynnysMuutosten lykkääminen

Puutteet ulkopuolisissa komponenteissa tai työtehtävissä

Laatukriteerien määrittelyTarkastuksetTieto aiemmista asiakkaista

Page 22: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Riskitekijät 3/3

Riskitekijä Riskinhallintatavat

Reaaliaikaisuuden puutteet SimulointiLaatukriteerien määrittely

Tietojenkäsittelyresurssien ylikuormitus

Tekninen analyysiProtoilu

Page 23: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Kustannustekijät – riskit 1/2

• Vaatimukset– Ohjelmiston koko– Laitteiston resurssirajoitukset– Sovelluksen reaaliaikavaatimus– Teknologian tuttuus– Vaatimusten pysyvyys

• Henkilöstö– Saatavuus ja vaihtuvuus– Osaamisalueet vs. sovellusalue– Kokemus– Henkilöstöjohtaminen

Page 24: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Kustannustekijät – riskit 2/2

• Uudelleenkäytettävä ohjelmisto– Saatavuus (alihankinta)– Muutostarpeet– Kielen sopivuus vaatimuksiin– Oikeudet– Laadun varmennus

• Työvälineet– Välineiden muutostarve– Saatavuus– Oikeudet– Konfiguraation hallinta

Page 25: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Weinbergin teesit 1/2

1. Parhaiten menestyvät ne, jotka eivät luota liikaa uusiin ”poppakonsteihin”, mutta ovat valmiita kokeilemaan uusia ideoita.

2. Mikään ei korvaa ratkaistavan ongelman perusteellista ymmärtämistä

3. Mikään ratkaisutapa ei sovi kaikkiin tehtäviin. Jossain tapauksessa paras ratkaisu voi olla toisessa tapauksessa huonoin

4. On monia hyödyllisiä lähestymistapoja, jotka ovat toimineet useammassa kuin yhdessä tilanteessa, joten kannattaa tutustua sellaiseen, mikä on toiminut aikaisemmin

Page 26: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Weinbergin teesit 2/2

5. Ongelman ratkaisun niksi ei ole pelkästään miten menetelmiä sovelletaan (know-how), vaan mieluummin milloin niitä sovelletaan (know-when)

6. Riippumatta siitä, kuinka hyvin taitaa edellisen kohdan miten ja milloin, on olemassa ongelmia, jotka ovat nykytietämyksellä mahdottomia ratkaista tai joiden perimmäisistä kukaan ei ymmärrä riittävästi.

Page 27: Johdatusta ohjelmistotekniikkaan

Ohjelmistotekniikka kevät 2003

Monimuotoisuus

Ohjelmistotyypit:• Systeemiohjelmisto• Reaaliaikaohjelmistot• Tieteellinen ohjelmisto• Hallinnollinen

ohjelmisto• Sulautettu ohjelmisto• Henkilökohtainen

ohjelmisto• Tekoälyjärjestelmät

Sovellusalueet:• Pankit• Vakuutusyhtiöt• Elektroniikkateollisuus• Vapaa-aika• Sotateknologia• Yms.

Vaaditaan erityisosaamista ohjelmistotyypistä ja sovellusalueesta!