1 010758000 010758000 Ohjelmistotekniikka Ohjelmistotekniikka - - Yleiskuva Yleiskuva ohjelmistotuotannosta ohjelmistotuotannosta Kevät 2003 Hanna-Kaisa Lammi LTKK/Tite .
Jan 14, 2016
1
010758000 Ohjelmistotekniikka010758000 Ohjelmistotekniikka- -
Yleiskuva Yleiskuva ohjelmistotuotannostaohjelmistotuotannosta
Kevät 2003Hanna-Kaisa LammiLTKK/Tite
.
2
SisältöSisältö
Ohjelmiston elinkaariOhjelmistokehityksen vaihejakomallejaOhjelmistokehityksen tukitoimintojaOhjelmiston elinkaarikustannuksista
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.
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?
5
Ohjelmiston elinkaariOhjelmiston elinkaari
Tuote versio 1 Tuote versio 2 Tuote versio N…
Tuotteen / ohjelmiston ylläpito
Tuotteen / ohjelmiston kehitys
TUOTTEEN / OHJELMISTON ELINKAARI
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.
7
Vaatimusten kertyminenVaatimusten kertyminen
Esitutkimus: asiakasvaatimukset
Järjestelmä- suunnittelu:
järjestelmävaatimukset
Ohjelmiston määrittely: ohjelmisto- vaatimukset
Laitteiston määrittely: laitteistovaatimukset
8
Vaatimuksesta tuotteeksiVaatimuksesta tuotteeksi
Määrittely
Suunnittelu&toteutus
ohjelmistovaatimukset
asiakasvaatimukset
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.
10
VaihejakomallejaVaihejakomalleja
vesiputousmalli (waterfall model)evoluutiomalli (evolutionary models)protoilumallit (prototyping models)spiraalimalli (spiral model)
Näistä kolme viimeistä mallia ovat iteratiivisia.
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ä.
12
Käytetään, kun heti alussa ei tarkasti tiedetä mitä halutaan.Vaatimukset tarkentuvat joka kierroksella: riski pienenee.
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.
14
15
Esimerkki spiraalimallistaEsimerkki spiraalimallista
Tuotekonseptin-kehitysprojekti
Uuden tuotteenkehitysprojekti
Tuotteen kehitys-projekti
Tuotteen ylläpito-projekti
= Projektin aloituspiste
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
17
RUP-iteraation vaiheetRUP-iteraation vaiheet
Iteration
Requirements Analysis DesignImplemen-
tationTest
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
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.
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
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
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!
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ä.
24
Tarvittavat tukitoiminnotTarvittavat tukitoiminnot
LaadunvarmistusDokumentointiTuotteenhallintaVaatimustenhallinta…
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
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
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.
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!
29
Tarkastukset ja katselmoinnit, Tarkastukset ja katselmoinnit, esimerkkiesimerkki
Haikala, Märijärvi: Ohjelmistotuotanto, 2000.
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.
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.
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
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
34
Tuotteen elinkaarikustannuksetTuotteen elinkaarikustannukset
35
Arvoketju, esimerkkiArvoketju, esimerkki
36
OhjelmistoprojektiOhjelmistoprojekti
EsitutkimusprojektiMäärittelyprojektiToteutusprojektiKäyttöönottoprojektiKoulutusprojektiNyrkkisääntö: projekti ei saisi kestää yli
vuotta
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
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
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ä
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
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ä