Johdantoluento Ylläpito-termin termin määrittely Ylläpito ohjelmistotuotannon vaiheena Evoluutio-termin määrittely Muita kurssin aiheeseen liittyviä termejä TTY Ohjelmistotekniikka 1 Ohjelmien ylläpito Muutosten luokittelu: korjaavat (corrective) muutokset mukauttavat (adaptive) muutokset täydellistävät (perfective) muutokset ehkäisevät (preventive) muutokset Ylläpidon määritelmä (IEEE standardi, 1993): järjestelmän muuttaminen käyttöönoton jälkeen virheiden korjaamiseksi, suorituskyvyn tai muiden ominaisuuksien parantamiseksi tai mukauttamiseksi muuttuneeseen ympäristöön TTY Ohjelmistotekniikka 2 1
Ylläpitomuutosten jakauma 21 % 4 % 50 % Täydellistävä Mukauttava Korjaava Ehkäisevä 25 % TTY Ohjelmistotekniikka 3 Muutostehtävien vaikutukset toisiinsa Mukauttava ylläpito Täydellistävä ylläpito Korjaava ylläpito Ehkäisevä ylläpito TTY Ohjelmistotekniikka 4 2
Ylläpitokustannukset 90 80 70 60 50 40 30 20 10 0 Ylläpidon osuus ohjelmistotuotannon kokonaiskustannuksista 1970- alku 1980- alku 1980- loppu 1990- alku % Thomas M. Pigoski: Practical Software Maintenance 1997 TTY Ohjelmistotekniikka 5 Ohjelmistotuotannon vaiheet Esitutkimus Määrittely Elinkaari Vaihejakomalli Suunnittelu Toteutus Testaus Käyttöönotto ja ylläpito TTY Ohjelmistotekniikka 6 3
Esitutkimus ongelman ymmärtäminen vaatimusten asettaminen asiakasvaatimukset ongelman (muutostarpeen) ymmärtäminen muutospyyntö asiakkaan pyytämä (kuvaama) muutos TTY Ohjelmistotekniikka 7 Määrittely vaatimusten analysointi asiakasvaatimusten muuntaminen ohjelmistovaatimuksiksi toiminnallinen määrittely (sis. myös rajoitukset) muutospyynnön analysointi muutoksen kuvaaminen järjestelmän termein TTY Ohjelmistotekniikka 8 4
Suunnittelu toimintojen toteuttamisen suunnittelu arkkitehtuurisuunnittelu moduulisuunnittelu järjestelmän jakaminen osiin muutosvaikutusten analysointi mihin järjestelmän osiin muutos vaikuttaa väreilyvaikutus TTY Ohjelmistotekniikka 9 Toteutus ohjelman kirjoittaminen muutoksen toteuttaminen olemassa olevan koodin muuttaminen uuden koodin lisääminen TTY Ohjelmistotekniikka 10 5
Testaus varmistuminen järjestelmän toimivuudesta varmistuminen siitä, että muutos tuli tehtyä oikein varmistuminen siitä, että muutos ei aiheuttanut vikoja järjestelmän toimintaan TTY Ohjelmistotekniikka 11 Käyttöönotto ja ylläpito uuden järjestelmän toimitus, asennus ja käyttöönotto käytön tuki uuden version julkistaminen käytön tuki seuraavan muutospyynnön käsittely TTY Ohjelmistotekniikka 12 6
Muita tehtäviä Esitutkimus s Määrittely Suunnittelu u Toteutus Testaus to Käyttöönott ja ylläpito Dokumentointi Projektinhallinta Tuotteenhallinta Laadunvarmistus Laatusertifikaatti ISO 9001 TTY Ohjelmistotekniikka 13 Ohjelmien uuskehitys vs. ylläpito Ohjelmistotuotanto (uuskehitys): Järjestelmän määrittely Suunnittelu ja toteutus Uusi järjestelmä Ylläpito: Olemassa oleva järjestelmä Analysointi ja uudistaminen Uudistettu järjestelmä TTY Ohjelmistotekniikka 14 7
Uudet vaatimukset Jos vaatimukset olisivat tiedossa suunnitteluvaiheessa, ne olisi helppo ottaa huomioon Olemassa olevan ohjelman voi olla vaikea mukautua uusiin vaatimuksiin TTY Ohjelmistotekniikka 15 Pohdintaa ylläpito-termistä Vrt. koneiden ja laitteiden huolto esim. kuluvien osien vaihtaminen uusiin ohjelmat eivät kulu käytössä Paremmaksi termiksi ehdotettu evoluutiota ylläpito-termin kuitenkin vakiintunut Maintenance = ylläpito, huolto Esitutkimus Määrittely Suunnittelu Toteutus Testaus Käyttöönotto ja ylläpito TTY Ohjelmistotekniikka 16 8
Evoluutio Ohjelmiston ylläpito muutosten tekemistä niin, että järjestelmä voi suoriutua uusista tehtävistä sekä vanhoista tehtävistä uusissa olosuhteissa Ohjelmistoevoluutio järjestelmän dynaaminen muuntuminen, kun sitä ylläpidetään ja laajennetaan koko k elinajan Lehmanin evoluutiota koskevia lakeja: 1. Reaalimaailmaa kuvaavien ohjelmien täytyy muuttua, tai niistä tulee hyödyttömiä. 2. Kun ohjelmaa muutetaan, sen rakenne tulee mutkikkaammaksi, ellei suoriteta aktiivisia toimenpiteitä tätä ilmiötä vastaan. There is no such thing as a finished computer program. (Lehman) TTY Ohjelmistotekniikka 17 Muita kurssiin liittyviä termejä Uudelleenrakentaminen (restructuring) ohjelman muuttaminen esitysmuodosta toiseen pysytään samalla abstraktiotasolla ohjelman toiminta ei muutu Takaisinmallinnus (reverse engineering) ohjelman osien tunnistaminen ja niiden välisten suhteiden selvittäminen ohjelman esittäminen korkeammalla abstraktiotasolla Uudistaminen (re-engineering) ohjelman tutkiminen ja muuttaminen toiseen muotoon tarkoituksena ohjelman laadun parantaminen TTY Ohjelmistotekniikka 18 9
Termien väliset suhteet Vaatimukset Suunnittelu Toteutus takaisinmallinnus ohjelmistotuotanto uudelleenrakentaminen uudelleenrakentaminen uudelleenrakentaminen uudistaminen = takaisinmallinnus + ohjelmistotuotanto (peruuttava vaihe) (etenevä vaihe) TTY Ohjelmistotekniikka 19 Vielä lisää termejä Legacy software (perintöohjelmat) Program comprehension (ohjelmien ymmärtäminen) Program analysis (ohjelmien analysointi) Software metrics (metriikat, mittaaminen) Refactoring Reuse engineering, reuse re-engineering Wrapping (kääriminen) TTY Ohjelmistotekniikka 20 10