Top Banner
1 010758000 010758000 Ohjelmistotekniikka Ohjelmistotekniikka - - Yleiskuva Yleiskuva ohjelmistotuotannosta ohjelmistotuotannosta Kevät 2003 Hanna-Kaisa Lammi LTKK/Tite .
41

010758000 Ohjelmistotekniikka - Yleiskuva ohjelmistotuotannosta

Jan 14, 2016

Download

Documents

leif

010758000 Ohjelmistotekniikka - Yleiskuva ohjelmistotuotannosta. Kevät 2003 Hanna-Kaisa Lammi LTKK/Tite. Sisältö. Ohjelmiston elinkaari Ohjelmistokehityksen vaihejakomalleja Ohjelmistokehityksen tukitoimintoja Ohjelmiston elinkaarikustannuksista. Ohjelmistotuotannon osa-alueita. - PowerPoint PPT Presentation
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

1

010758000 Ohjelmistotekniikka010758000 Ohjelmistotekniikka- -

Yleiskuva Yleiskuva ohjelmistotuotannostaohjelmistotuotannosta

Kevät 2003Hanna-Kaisa LammiLTKK/Tite

.

Page 2: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

2

SisältöSisältö

Ohjelmiston elinkaariOhjelmistokehityksen vaihejakomallejaOhjelmistokehityksen tukitoimintojaOhjelmiston elinkaarikustannuksista

Page 3: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

3

Ohjelmistotuotannon osa-alueitaOhjelmistotuotannon osa-alueitaLiiketoiminta, johtaminen

Laatujärjestelmä

Hankkeiden hallinta (tuotteen tasolla)

Projektinhallinta

Projektinhallinta

Projektinhallinta

tuotteenhallinta

laadunvarmistus

dokumentointi

määrit- tely

käyt- töönotto, ylläpito

testausohjel- mointi

suun- nittelu

vaatimustenhallinta...

Haikala, Märijärvi: Ohjelmistotuotanto, 2000.

Page 4: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

4

TermejäTermejä

Ohjelmiston elinkaari (life cycle) on aika, joka kuluu ohjelmiston kehittämisen aloittamisesta sen poistamiseen käytöstä

Vaihejakomallilla (process model) tarkoitetaan tapaa, jolla ohjelmiston kehitystyö tai koko elinkaari jaetaan vaiheisiin

Ohjelmisto vai tuote?

Page 5: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

5

Ohjelmiston elinkaariOhjelmiston elinkaari

Tuote versio 1 Tuote versio 2 Tuote versio N…

Tuotteen / ohjelmiston ylläpito

Tuotteen / ohjelmiston kehitys

TUOTTEEN / OHJELMISTON ELINKAARI

Page 6: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

6

Ohjelmistokehityksen vaiheetOhjelmistokehityksen vaiheet

Esitutkimus

Käyttöönottoja ylläpito

Määrittely

Suunnittelu

Integrointi jatestaus

Toteutus

Asetetaan asiakasvaatimukset: mitä asiakas haluaa?Miksi ohjelmisto tulisi tehdä?

Analysoidaan asiakasvaatimukset: mitä voidaan toteuttaa?Johdetaan ohjelmistovaatimukset: mitä projektissa tehdään?

Suunnitellaan, kuinka määrittelyssä kuvatut vaatimukset toteutetaan. (Arkkitehtuurisuunnittelu, modulisuunnittelu)

Toteutetaan suunniteltu.

Integrointi: yhdistetään toteutetut osat niin, että niistä saadaan yksi toimiva kokonaisuus.Testaus: etsitään ohjelmiston virheitä ja korjataan ne.

Käyttöönotto: toimitaan ohjelmisto asiakkaalleYlläpito: ratkotaan asiakkaan ongelmia, korjataan virheitä,muutetaan tarvittaessa ohjelmistoa uusia vaatimuksia vastaavaksi.

Page 7: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

7

Vaatimusten kertyminenVaatimusten kertyminen

Esitutkimus: asiakasvaatimukset

Järjestelmä- suunnittelu:

järjestelmävaatimukset

Ohjelmiston määrittely: ohjelmisto- vaatimukset

Laitteiston määrittely: laitteistovaatimukset

Page 8: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

8

Vaatimuksesta tuotteeksiVaatimuksesta tuotteeksi

Määrittely

Suunnittelu&toteutus

ohjelmistovaatimukset

asiakasvaatimukset

Page 9: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

9

Projektin eteneminenProjektin eteneminen

Projektissa toteutetaan vain juuri se, mitä asiakas halusi. Asiakas ei maksa ylimääräisistä ominaisuuksista!

Projektissa noudatetaan niin hyvää laatua, kuin asiakas halusi. Asiakas ei maksa ylihyvästä laadusta! Toisaalta jokainen projektissa työskentelevä on velvollinen tekemään niin hyvää työtä kuin aikataulun ja budjetin rajoissa on suinkin mahdollista.

Page 10: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

10

VaihejakomallejaVaihejakomalleja

vesiputousmalli (waterfall model)evoluutiomalli (evolutionary models)protoilumallit (prototyping models)spiraalimalli (spiral model)

Näistä kolme viimeistä mallia ovat iteratiivisia.

Page 11: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

11

Esimerkki vesiputousmallistaEsimerkki vesiputousmallista

Esitutkimus

Käyttöönottoja ylläpito

Määrittely

Suunnittelu

Integrointi jatestaus

Toteutus

Käytetään nopeassa komponenttipohjaisessa kehityksessä, jossavaatimukset ovat alussahyvin selvillä.

Page 12: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

12

Käytetään, kun heti alussa ei tarkasti tiedetä mitä halutaan.Vaatimukset tarkentuvat joka kierroksella: riski pienenee.

Page 13: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

13

Esimerkki evoluutiomallistaEsimerkki evoluutiomallista

Määrittely

Suunnittelu

Toteutus

Testaus

Määrittely

Suunnittelu

Toteutus

Testaus

Määrittely

Suunnittelu

Toteutus

Testaus

...

Versio 1 Versio 2 Versio 3

Haikala, Märijärvi: Ohjelmistotuotanto, 2000.

Page 14: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

14

Page 15: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

15

Esimerkki spiraalimallistaEsimerkki spiraalimallista

Tuotekonseptin-kehitysprojekti

Uuden tuotteenkehitysprojekti

Tuotteen kehitys-projekti

Tuotteen ylläpito-projekti

= Projektin aloituspiste

Page 16: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

16

RUP RUP (Rational Unified Process) (Rational Unified Process) esimerkkinä esimerkkinä EVO- ja spiraalimalleistaEVO- ja spiraalimalleista

Inception Elaboration Construction Transition

- Tuotteen ominaisuudet- Alustavat mallit- Alustava tuotearkkitehtuuri- Tarvittaessa proto- Riskit- Alustava projektisuunnitelma- Onnistumiskriteerit

- Täydennetyt mallit- Toteutettu toimiva perusarkkitehtuuri- Arkkitehtuurikuvaus- Riskit- Seuraavan vaiheen projektisuunnitelma- Onnistumiskriteerit- Alustava käyttöohje

- Lähes täydelliset mallit- Beta-versio- Arkkitehtuurikuvaus- Seuraavan vaiheen projektisuunnitelma- Onnistumiskriteerit- Käyttöohje

- Installointivalmis ohjelmisto- Byrokratiadokumentit- Täydelliset mallit- Arkkitehtuurikuvaus- Käsikirjat- WWW-palvelut yms.

Iter. Iter.Iter. Iter. Iter.Iter.Iter.Iter. Iter.Iter.

Iter. Iter.Iter.

Haikala, Märijärvi: Ohjelmistotuotanto, 2000. Alkuperäinen lähde: Jacobson et al. 1998

Page 17: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

17

RUP-iteraation vaiheetRUP-iteraation vaiheet

Iteration

Requirements Analysis DesignImplemen-

tationTest

Page 18: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

18

Työmäärien jakautuminen RUP-Työmäärien jakautuminen RUP-prosessissaprosessissa

Inception Elaboration Construction Transition

Requirements

Analysis

Design

Implementation

Test

iter. 1 iter. 2 ... ... ... .... .... .... ...

Haikala, Märijärvi: Ohjelmistotuotanto, 2000. Alkuperäinen lähde: Jacobson et al. 1998

Page 19: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

19

Esimerkkejä protoilumallistaEsimerkkejä protoilumallista

nopea suunnittelu

proto-tyypinteko

asiakkaanarvio prototyypistä

proto-tyypinkehittä-minen

tuote

vaatimustenmäärittely

alku

loppu

nopea suunnittelu

proto-tyypinteko

asiakkaanarvio prototyypistä

proto-tyypinkehittä-minen

tuote

vaatimustenmäärittely

alku

loppu

Määrittely

Suunnittelu

Toteutus

Testaus

Määrittely

Suunnittelu

Toteutus

Testaus

Prototyyppi Tuote v. 1.0

Protoiluprojekti Tuoteprojekti

Haikala, Märijärvi: Ohjelmistotuotanto, 2000.

Page 20: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

20

Muita prosessimalleja Muita prosessimalleja

Prosessimalleja on lukuisia muitakin, esim:– Component Assemble Model: kun käytetään

paljon jo valmiita komponentteja– Concurrent Process Model: projektin eri osia

tehdään rinnakkain toisistaan erillään– Formal Methods: matemaattisia ohjelmistoja

rakennettaessa– Cleanroom software engineering: pyritään

löytämään ohjelmistovirheet ennen testausta

Page 21: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

21

Esimerkki sulautettujen Esimerkki sulautettujen järjestelmien kehittämismallistajärjestelmien kehittämismallista

Järjestelmäsuunnittelun ohjaus ja koordinointi

Järjestelmän kenttätestaus,

asiakkaan hyväksyminen

ja arviointi

Järjestelmän integrointi-

testaus

Ohjelmiston moduuli-

suunnittelu

Laitteiston yksityis-

kohtainen suunnittelu

Laitteiston alustava

suunnittelu

Ohjelmiston määrittely

Laitteiston rakentaminen,

testaus ja integrointi

Ohjelmointi, testaus,

integrointi

Ohjelmiston arkkitehtuuri-

suunnittelu

Järjestelmän suunnittelu

Laitteiston määrittely

Järjestelmän määrittely

Järjestelmän toiminnalliset vaatimukset

Page 22: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

22

Prosessimallin soveltaminenProsessimallin soveltaminen

Prosessimallia tulee aina soveltaa juuri kyseiseen projektiin sopivalla tavalla!

Soveltamistapa riippuu projektin koosta ja sen erityispiirteistä.

Maalaisjärjen käyttö on erittäin suotavaa ellei jopa pakollista!

Page 23: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

23

Asiakas- ja tuotekehitys-Asiakas- ja tuotekehitys-prosessien suhdeprosessien suhde

Ohjelmistotuotantoprosessi

Asiakkaan prosessit

- tuoteideat- markkinatutkimukset ja kilpailija-analyysit- myynti ja markkinointi- tuotteen/ohjelmiston testaaminen ja koulutus- …

Toiminta on siis koko ajan rinnakkaista ja molempien tahojen tulisi koko ajan saada tietoa toistensa edistymisestä.

Page 24: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

24

Tarvittavat tukitoiminnotTarvittavat tukitoiminnot

LaadunvarmistusDokumentointiTuotteenhallintaVaatimustenhallinta…

Page 25: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

25

Mitä on laatu?Mitä on laatu?

Ohjelmistotuotteen kykyä täyttää käyttäjänsä kohtuulliset toiveet ja odotukset

Laatu on subjektiivinen, käyttäjästä ja käyttöympäristöstä riippuva käsite

Toiminnan laatu ja tuotteen laatu on erotettava toisistaan

Toiminnan hyvä laatu tarkoittaa lopputuotteen laatuun positiivisesti vaikuttavia toimintatapoja

Page 26: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

26

Yrityksen laatujärjestelmäYrityksen laatujärjestelmä

Laatujärjestelmä kertoo tavan, kuinka yrityksessä tehdään ohjelmistoja ja tuotteita

Tavoitteena taata, että tuotantoprosessi tuottaa suunniteltua laatutasoa vastaavia tuotteita aikataulun ja budjetin mukaisesti

Kuvaus yrityksen laatukäsikirjassa Laatusertifikaatti todiste siitä, että yritys toimii

laatujärjestelmänsä mukaisesti, mutta se ei todista laatujärjestelmän erinomaisuutta

Page 27: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

27

LaadunvarmistustoimintaLaadunvarmistustoiminta

Mitä kauemmin virheet ovat järjestelmässä, sen kalliimmaksi ne tulevat.

Terveydenhoito: toimintatavat, jotka vähentävät virheitä.

Sairaanhoito: virheiden seulominen mahdollisimman aikaisessa vaiheessa: tarkastukset.

Page 28: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

28

Muutoksen hintaMuutoksen hinta

1x

1,5-

6 X

60-

100X

Määrittely Kehitys Ylläpito

Muutoksen tekeminen eli esim. havaitunvirheen korjaaminen on sitä kalliimpaamitä myöhemmin muutos tehdään. Siksivirheiden löytämiseen pitäisi panostaakaikissa projektin vaiheissa!

Page 29: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

29

Tarkastukset ja katselmoinnit, Tarkastukset ja katselmoinnit, esimerkkiesimerkki

Haikala, Märijärvi: Ohjelmistotuotanto, 2000.

Page 30: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

30

Dokumentointi, esimerkkiDokumentointi, esimerkkiEsitutkimus Suunnittelu

Toteutus

Testaus

Määrittely

Alustava sopimus,alustava projektisuunnitelma,alustava toiminnallinen määrittely,alustava toteutussuunnittelu,alustava testaussuunnittelu,alustava tuotteenhallintasuunnitelma,alustava laatusuunnitelma,dokumentointisuunnitelma.

Tarkennettu sopimus, tarkennettu projektisuunnitelma,toiminnallinen määrittely,alustava tekninen määrittely,tarkennettu testaussuunnitelma (järjestelmä- ja hyväksymistestaus)tarkennettu tuotteenhallintasuunnitelma,tarkennettu laatusuunnitelma,alustava käyttöohje.

Tekninen määrittely,integrointitestaussuunnitelma,tarkennettu käyttöohje,alustava ylläpito-ohje,alustava operointi/huolto-ohje,alustava asennusohje.

Moduulisuunnitelmat,moduulitestaussuunnitelmat,moduulitestauspöytäkirjat,koodimoduulit,integrointitestaussuunnitelma,integrointitestauspöytäkirjat,integroitu ohjelmisto,tarkennettu ylläpito-ohje,tarkennettu operointi/huolto-ohje,tarkennettu asennusohje.

Järjestelmätestauspöytäkirjat,hyväksymistestauspöytäkirjat,paketointi-ohje,koulutusmateriaali,tuotedokumenttien viimeistellyt versiot

Haikala, Märijärvi: Ohjelmistotuotanto, 2000.

Page 31: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

31

TuotteenhallintaTuotteenhallintaTuotteenhallinta

Komponentit - Versiointi: mitä versioita on olemassa, miten vanhoihin versioihin päästään käsiksi... - Identifiointi: mikä komponentti tämä on, mitä ominaisuuksia sillä on, ... - Tuottaminen: millä työkalulla ja miten komponentti tuotetaan (esimerkiksi kääntäjän versio ja käännöskomento). - Muutosten hallinta: miten estetään samanaikainen muutosten teko komponenttiin, mitä muutoksia on tehty ...

Konfiguraatiot - Versiointi: mitä versioita on olemassa, miten vanhoihin versioihin päästään käsiksi (esimerkiksi tuottamalla ne uudelleen)... - Identifiointi: mikä konfiguraatio tämä on, mitä komponentteja ja komponenttien versioita on asiakkaan x järjestelmän tietyssä versiossa. - Tuottaminen: miten asiakkaan x konfiguraatio a.b.c saadaan rakennettua. - Muutosten hallinta: mihin komponentteihin ja niiden versioihin ehdotettu muutos vaikuttaa, mihin konfiguraatioihin muutos vaikuttaa ....

Toimintatavat - Vastuut ja toimintavaltuudet. - Miten vaihetuotteet siirtyvät vaiheesta toiseen. - Miten uudet versiot hyväksytään ja julkistetaan. - Miten muutosesitykset ja virheraportit tehdään ja käsitellään. - Miten arkistointi ja varmistuskopiointi hoidetaan. - ...

Haikala, Märijärvi: Ohjelmistotuotanto, 2000.

Page 32: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

32

Vaatimusten hallintaVaatimusten hallinta

moduuli a

moduuli e

moduuli f

moduuli d

moduuli c

moduuli b

Toiminto 2

Kelpuutetut

Alustavat asiakasvaatimukset

Toiminto 1

Myöhempään versioon

Hylätty

Analysoidut vaatimukset

1

5

2

4

3 678 Toiminto 3

2

2

5

1

Ohjelmisto- vaatimukset: Järjestelmän toiminnallinenmäärittely

Järjestelmäntekninen määrittely

Toteutettujärjestelmä

Vaatimustenhallinta: kartoitus, analysointi, jäljitettävyys, muutokset

Vaatimukset Hallitut muutokset

5

52

5

15

2

1

2 5

11

1 2

5

52

5

15

2

1

2 5

11

1 2

1 2

25

1

2

5

1

2

2

52

5

55

52

2

1

1

1

52

2

2

ominaisuus 2

ominaisuus 1

Page 33: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

33

Mitä siis asiantuntijan pitäisi Mitä siis asiantuntijan pitäisi osata?osata?

Yleinentekninen

osaaminen

Johtamis-taidot

Esiintymis- ja Neuvottelutaidot,Ryhmätyötaidot

Prosessi-osaaminen

Sovellusalueenasiantuntemus

Erityisalueen tekninen

osaaminen

Page 34: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

34

Tuotteen elinkaarikustannuksetTuotteen elinkaarikustannukset

Page 35: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

35

Arvoketju, esimerkkiArvoketju, esimerkki

Page 36: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

36

OhjelmistoprojektiOhjelmistoprojekti

EsitutkimusprojektiMäärittelyprojektiToteutusprojektiKäyttöönottoprojektiKoulutusprojektiNyrkkisääntö: projekti ei saisi kestää yli

vuotta

Page 37: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

37

ToimitusprojektiToimitusprojekti

Ylläpito

Käyttöön- otto-

projekti

Koulutus- projekti

asiakas

EsitutkimusTarjous- pyyntö

Alustava määrittely

Alustava määrittely- dokumentti

Tarjous

Esisopimus Projekti- suunnittelu

Sopimus

Projekti- suun- nitelma

Toteutus- projekti

Järjestelmä & dokumentit

asiakas

asiakas

Jälkiarviointi

Markki- nointi

Page 38: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

38

Ohjelmistoprojektin ongelmiaOhjelmistoprojektin ongelmia

epärealistiset aikataulut ja budjetit

vaatimusten muuttuminen projektin aikana

henkilöstöongelmat

sovellusalueen huono tuntemus

tekniikan huono tuntemus

työmääräarviot pettävät,

budjetit ylittyvät

asiakas ei tiedä mitä haluaa

Page 39: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

39

Onko järkevä tuotantoprosessi Onko järkevä tuotantoprosessi edes mahdollinen?edes mahdollinen?

Parnas&Clemens:– Ohjelmistolle asetettavat vaatimukset eivät juuri

koskaan ole täysin tunnettuja alkuvaiheessa– Vaikka vaatimukset tunnettaisiinkin, monet

toteutukseen liittyvät seikat selviävät vasta projektin aikana

– Vaikka kaikki tosiseikat olisivatkin tiedossa jo alussa, on tosiseikkoja niin paljon, ettei ihminen pysty käsittelemään niitä virheettömästi

– Vaikka tosiseikat pystyisikin käsittelemään virheettömästi, ne voivat muuttua ulkoisista syistä

Page 40: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

40

Onko järkevä tuotantoprosessi Onko järkevä tuotantoprosessi mahdollinen?mahdollinen?

Ihminen takertuu aikaisemmin oppimiinsa ratkaisuihin, jolloin rationaalisesti perusteltavissa oleva ratkaisu jää huomaamatta

Aikaisemmin kirjoitettujen ohjelmien uudelleenkäyttö johtaa myös usein omituisiin ratkaisuihin

Page 41: 010758000 Ohjelmistotekniikka -  Yleiskuva ohjelmistotuotannosta

41

Kannattaako siis edes yrittää?Kannattaako siis edes yrittää?

Kannattaa, koska prosessit– antavat ohjeita mitä missäkin vaiheessa pitäisi tehdä– helpottavat siirtymistä projektista toiseen, jos ne

muistuttavat toisiaan– projektinhallinta helpottuu– ulkopuolisen arvioijan helpompi arvioida projektin

tilannetta– mahdollistavat mittatietojen keräämisen ja toiminnan

kehittämisen tähän perustuen Programming-in-large vs. programming-in-small

eli suurissa projekteissa enemmän systemaattisuutta kuin pienissä