Title: Johdatusta ohjelmistotekniikkaan
1Johdatusta ohjelmistotekniikkaan
2OTn 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)
- Enemmän ja suurempia tietokoneita
- Monen käyttäjän (100) ajantasaiset järjestelmät
- Tietokannat
- Kaupallinen hyödyntäminen -gt Ensimmäiset
ohjelmistotalot - Ohjelmistokriisi!!!
3OTn historiaa 4 vaihetta (2/2)
- Vaihe (70-luvun alku 80-luvun loppu)
- Henkilökohtaisia tietokoneita hajautettuja
järjestelmiä - Ohjelmistokustannukset gt laitteistokustannukset
- Ohjelmistoilla paljon käyttäjiä (100 000)
- -gt massamarkkinet
- -gt laatuvaatimukset nousivat
- Vaihe (80-luvun loppu - )
- Tehokkaat PCt (myös kannettavat)
- Oliotekniikat
- Case-välineet
- Valtavat käyttäjämäärät (10 000 000)
4Tietotekniikan hyödyntäminen
Kotitaloudet
Yritykset
Akateeminen maailma
Aika
5Ohjelmistotekniikan 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
6OT 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 - CMMn tilastoissa 65 viimeisen viiden vuoden
aikana luokitelluista yrityksistä on jäänyt alle
tason kolme (tasot 1-5)
7Ongelmien lähteitä
- Ohjelmistotekniikalta odotetaan liikaa
- Tekniikka on kehittynyt nopeammin kuin
ohjelmistotuotannon tehokkuus - Kompleksisuus on samalla kasvanut
Mobiilipääte- laitteet
Laatuvaatimukset
Kompleksisuus
PCn suori- tuskyky
Internet
8Ongelmien lähteitä
- Teknologiasiirron hitaus
- Uudet menetelmät siirtyvät käytännön
ohjelmistotyöhön jopa 10-20 vuoden viiveellä - Liian suuret laatuvaatimukset
9Tekniikan kehitys tieteeksi (Shaw 1990)
- Mikä tahansa toimiva (ad hoc) ratkaisu kelpaa.
- Löydetään ratkaisuja, jotka toimivat useammassa
kuin yhdessä tapauksessa (kansanperinne) - Otetaan käyttöön systemaattisia menetelmiä
- Kehitetään malleja, teorioita ja formaaleja
menetelmiä - Löydetään uusia ongelmia, ja palataan taas alkuun
10Ohjelmistotekniikan kuvailua
- Software Engineering means how to program if you
cant (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
11Ohjelmistotekniikan 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.
12Ohjelmistotekniikan 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).
13Virheen suhteellinen kustannus (Boehm 1981)
14Ohjelmistotekniikan 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
15Ohjelmistotekniikan erityispiirteitä 1/2
- Ohjelmistot ovat abstrakteja, eivät fyysisiä
- -gt joustavuus, monimutkaisia
- Ohjelmistojen käyttäytyminen on epäjatkuvaa -gt 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
16Ohjelmistotekniikan 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.
17Keskeiset 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
18Ongelmakysymyksiä
- 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?
19Tuottavuustekijä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
20Riskitekijät 1/3
Riskitekijä Riskinhallintatavat
Henkilöstöresurssien riittämättömyys Asiantuntijan palkkaus Työtehtävien ja kykyjen vastaavuuden tarkistaminen Koulutus
Epärealistiset aikataulut ja budjetit Vähittäinen kehittäminen Uudelleenkäyttö Vaatimusten selkeyttäminen
Väärien toimintojen ja ominaisuuksien kehittäminen Organisaatioanalyysi Käyttäjien osallistuminen Protoilu
21Riskitekijät 2/3
Riskitekijä Riskinhallintatavat
Vääränlaisen käyttöliittymän kehittäminen Protoilu Käyttäjien osallistuminen
Liiat/turhat ominaisuudet Vaatimusten selkeyttäminen Protoilu Kustannus-hyöty analyysi
Jatkuva vaatimusten muuttuminen Korkea muutoskynnys Muutosten lykkääminen
Puutteet ulkopuolisissa komponenteissa tai työtehtävissä Laatukriteerien määrittely Tarkastukset Tieto aiemmista asiakkaista
22Riskitekijät 3/3
Riskitekijä Riskinhallintatavat
Reaaliaikaisuuden puutteet Simulointi Laatukriteerien määrittely
Tietojenkäsittelyresurssien ylikuormitus Tekninen analyysi Protoilu
23Kustannustekijä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
24Kustannustekijä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
25Weinbergin teesit 1/2
- Parhaiten menestyvät ne, jotka eivät luota liikaa
uusiin poppakonsteihin, mutta ovat valmiita
kokeilemaan uusia ideoita. - Mikään ei korvaa ratkaistavan ongelman
perusteellista ymmärtämistä - Mikään ratkaisutapa ei sovi kaikkiin tehtäviin.
Jossain tapauksessa paras ratkaisu voi olla
toisessa tapauksessa huonoin - On monia hyödyllisiä lähestymistapoja, jotka ovat
toimineet useammassa kuin yhdessä tilanteessa,
joten kannattaa tutustua sellaiseen, mikä on
toiminut aikaisemmin
26Weinbergin teesit 2/2
- Ongelman ratkaisun niksi ei ole pelkästään miten
menetelmiä sovelletaan (know-how), vaan
mieluummin milloin niitä sovelletaan (know-when) - 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.
27Monimuotoisuus
- 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!