Copyright by Haikala Ohjelmistotuotannon osa-alueet
Ohjelmiston elinkaari 1. Esitutkimus, tarvekartoitus, kokonaissuunnittelu, järjestelmäsuunnittelu (feasibility study, requirement study, preliminary analysis, system engineering, system design) strateginen suunnittelu, toiminnan suunnittelu, kehittämisohjelmat, ideat, tarpeet, reunaehdot 2. Määrittelyvaihe, vaatimusmäärittely (requirements analysis, requirements specification, system analysis) nykytoiminnot ja uuden toiminnan tavoitteet, ulkoiset vaatimukset, tietojen, tietoryhmien ja niiden väliset yhteydet, tietosysteemin periaateratkaisu, rajoitukset 3. Suunnitteluvaihe: ohjelmiston arkkitehtuurisuunnittelu (sovellus-, tieto-, tietoliikenne- ja laitearkkitehtuuri sekä moduulisuunnittelu (achitecture design, module design, detailed design) käyttäjän toiminta, käyttöliittymä, tietosuunnittelu ja tietokantojen rakenne, ohjelmisto, käyttöönoton suunnittelu, kokonaisratkaisun esitestaus 4. Toteutusvaihe: ohjelmointi, ohjelmisto- ja laitteistohankinnat, tietoliikenne, tietokannat 5. Testaus: moduulitestaus, integrointitestaus, järjestelmätestaus 6. Käyttöönotto: koulutus, jakelu, seuranta 7. Ylläpito: virheenkorjaus, uusien piirteiden lisäys, sisältää vaiheet 2-6 versioissa
Vaihejakomalleja 1. Vesiputousmalli - vaiheet seuraavat toisiaan lineaarisesti 2. Evo/proto-malli - piirteiden lisäys vähittäin 3.Spiraalimalli - syklit, sektorit 4. Kevyet menetelmät -XP (extreme programming) 5. Formaalit menetelmät - matemaattinen malli muunnetaan ohjelmaksi
Copyright by Haikala Vesiputousmalli
Copyright by Haikala Vesiputousmalli todellisuudessa
Copyright by Haikala Proto-malli
Copyright by Haikala Esimerkki proto-mallista
Copyright by Haikala Evo-malli
Spiraalimalli
Spiraalimalli jatkuu Kukin sykli sisältää 3-6 vaihetta esim: - suunnittelu - riskianalyysi - toteutus - asiakaspalautteen keruu ja analyysi Seuraava sykli tuottaa tarkemman dokumentaation tai parannetun ohjelmiston, kunnes saadaan valmis tuote.
Rational Unified Process - evo- ja spiraalimallien piirteitä Copyright by Haikala
XP - pienet versiot - toteutus perustuu kuvaukseen - toteutetaan kevyimmällä mahd. tavalla - testitapaukset ennen toteutusta, testaus automatisoitu - koodin rakenne muuttuu jatkuvasti (refaktorointi) - pariohjelmointi - yhteinen koodi - standardoitu koodi (pystyy ymmärtämään toisen koodia) - asiakas jatkuvasti läsnä - 40 tunnin työviikko
Formaalit menetelmät - ratkaistava ongelma on kuvattavissa matemaattisella mallilla - sarja hyvin määriteltyjä muunnoksia mallista ohjelmaksi - formalismeja voidaan löytää vain harvoille ongelmille - kehittäminen vie aikaa - vaikea selittää asiakkaalle
Copyright by Haikala Toimitusprojekti: osaprojekteja, rinnakkaisuutta
Copyright by Boehm Esimerkki ohjelmistoyrityksen arvoketjusta
Laatu, laatujärjestelmä ja laadunvarmistus
Dokumentaatio ja tuotteenhallinta
Rationaalisen tuotantoprosessin ongelmia
Rationaalisen prosessimallin käyttö on kuitenkin perusteltua
Ohjelmistotuotanto on spesifikaatioiden tuottamista kukin vaihe tuottaa spesifikaation edellisen vaiheen spesifikaatiosta
Spesifikaation sisältö toiminnalliset ominaisuudet (rajapinnat: käyttöliittymä, muut liittymät, tiedot, tietoryhmät, toiminnot) ei-toiminnalliset ominaisuudet (suorituskyky, luotettavuus, turvallisuus, siirrettävyys) reunaehdot ja rajoitukset (laitteisto ja ohjelmisto, budjetti, aikataulu, työkalut, lait ja standardit)
Hyvän spesifikaation ominaisuuksia täydellisyys (kaikki tarvittavat asiat ja vain ne) tarkkuus virheettömyys ymmärrettävyys voi olla ristiriidassa tarkkuuden kanssa testattavuus (verifiointi) jäljitettävyys
Systeemityön menetelmiä ja välineitä Malli puitteet, joka kiinnittää työvaiheet ja -tehtävät, menetelmät, tekniikat ja työvälineet perustuu johonkin vaihejakomalliin kuten vesiputousmalliin Menetelmä sovittu tapa soveltaa kuvaustekniikoita tietyn tuloksen tuottamiseksi Kuvaustekniikka tapa esittää tai kuvata tietty tulos notaatio, kieli tietovuokaavio, käsitekaavio, tilakaavio, päätöstaulutekniikka Työväline ohjelmisto, joka tukee systeemityön tekemistä (piirrosvälineet, CASE) CASE (Computer Aided Systems/Software Engineering)
Spesifiointimenetelmiä Informaalit menetelmät aivoriihi seinätaulumenetelmät miellekartta (mind map) voidaan käyttää puoliformaalien menetelmien apuna ideoinnissa Puoliformaalit menetelmät UML-menetelmä (Unified Modeling Language) SA-menetelmä (Structured Analysis) OMT ++ -menetelmä OOA: analyysioliomalli laatiminen + käyttäytymisanalyysi + käyttöliittymän määrittely OOD: suunnitteluoliomallin laatiminen + käyttäytymisen suunnittelu OOP: luokkamäärittely + luokkien toteutus Formaalit menetelmät matemaattisia, formaaliin logiikkaan perustuvia spesifiointimenetelmiä Z, Vienna Development Method (VDM), DisCo (TTKK)