Ohjelmistojen ylläpito. JOT 7.12.2006 Minna Hillebrand



Samankaltaiset tiedostot
Johdantoluento. Ohjelmien ylläpito

Tekniikka ja kehittäminen Minna Hillebrand Pauli Kujala

Ylläpito. Ylläpito. Ylläpidon lajeja Ohjelmistotuotanto, syksy 1998 Ylläpito

Ylläpito. Ylläpidon lajeja

Avoimen lähdekoodin ohjelmistot julkisessa hallinnossa

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Ohjelmiston testaus ja laatu. Ohjelmistotekniikka elinkaarimallit

KADA (Drupal 7) migraatio uuteen (versioon) webiin

Miten voin selvittää säästömahdollisuuteni ja pääsen hyötymään niistä?

Verkkosovellusten uudistaminen

Työkalut ohjelmistokehityksen tukena

COTOOL dokumentaatio SEPA: Refaktorointi

Testauksen tuki nopealle tuotekehitykselle. Antti Jääskeläinen Matti Vuori

Testaus ja säästöt: Ajatuksia testauksen selviämisestä lama-aikana

Test-Driven Development

Test-Driven Development

Järjestelmäarkkitehtuuri (TK081702) Järjestelmäarkkitehtuuri. Järjestelmäarkkitehtuuri

Ohjelmiston toteutussuunnitelma

Järjestelmäarkkitehtuuri (TK081702) Lähtökohta. Integroinnin tavoitteet

ITSM. Olli Saranen Senior Consultant Avoset Oy Oliko ennen kaikki paremmin kuin nykyään? Kivikaudelta nykyaikaan

Tarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen

Mobiilimaailma murroksessa 2011 Tommi Teräsvirta, Tieturi

Matopeli C#:lla. Aram Abdulla Hassan. Ammattiopisto Tavastia. Opinnäytetyö

Projektityö

CUDA. Moniydinohjelmointi Mikko Honkonen

Avoimen ja yhteisen rajapinnan hallintasuunnitelma v.1.4

Luku 8 Rakennusvaihe. Detailed Design. Programming. Moduulisuunnittelu. Ohjelmointi

Ohjelmiston testaus ja laatu. Testaustasot

HELIA 1 (8) Outi Virkki Tietokantasuunnittelu

Tutkittua tietoa. Tutkittua tietoa 1

Työkalujen merkitys mittaamisessa

Avoin lähdekoodi. Jani Kylmäaho Maanmittauslaitos

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

JulkICTLab Eteneminen Mikael Vakkari, VM

Suorituskyvyn varmistaminen sovelluskehityksen eri vaiheissa Paavo Häkkinen, Presales Teamleader Compuware Finland

TeliaSonera Identity and Access Management

Ohjelmistojen laadun parantaminen refaktoroinnilla Simo Mäkinen Tietojenkäsittelytieteen laitos Helsingin yliopisto

812341A Olio-ohjelmointi, I Johdanto

Avoimen ja yhteisen rajapinnan hallintamalli

Integrointi. Ohjelmistotekniikka kevät 2003

IT2015 EKT ERITYISEHTOJA OHJELMISTOJEN TOIMITUKSISTA KETTERIEN MENETELMIEN PROJEKTEILLA LUONNOS

Tietojärjestelmän osat

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

T Projektikatselmus

Mikkelin sähköisen asioinnin alusta - päätöksenteko. Kalle Launiala / ProtonIT Oy kalle.launiala@protonit.net

Uudelleenkäytön jako kahteen

UKJ ja Kuali Open Library Environment (OLE)

Projektisuunnitelma. KotKot. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

ohjelman arkkitehtuurista.

Avoin lähdekoodi hankinnoissa Juha Yrjölä

Ohjelmistotekniikan menetelmät, Ohjelmistotuotannon työkaluista

JHS 180 Paikkatiedon sisältöpalvelut Liite 4 INSPIRE-palvelujen laadun testaus

T Loppukatselmus

Järjestelmäarkkitehtuuri (TK081702) Pilvipalvelut. Pilvipalvelut - lähtökohtia

Ohjelmistojen suunnittelu

Ohjelmistotuotteen hallinnasta

APPLICATION MANAGEMENT SERVICES. ecraft

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

Oleelliset vaikeudet OT:ssa 1/2

Kokemuksia ohjelmistokehityksestä. Kai Kulju & Heikki Naski

Ohjelemistotuotanto, syksy 1998 /Prosessi Prosessimallit

Mikä on avoimen tuotteen hallintamalli perustiedot ja taustoitus. Jukka Kääriäinen, Tapio Matinmikko, Raija Kuusela

5. Luento: Rinnakkaisuus ja reaaliaika. Tommi Mikkonen,

Kohti Kohaa avoimen lähdekoodin kirjastojärjestelmän käyttöönotto

Maiju Mykkänen Susanna Sällinen

TERADATAN JA SAS DI STUDION YHTEISELO CASE LÄHITAPIOLA

Käyttövaltuushallinnan hyödyt tehokkaasti käyttöön. Johanna Lampikoski, RM5 Software Juha Arjonranta, TeliaSonera Finland

Avoimen lähdekoodin kehitysmallit

Onnistunut Vaatimuspohjainen Testaus

58160 Ohjelmoinnin harjoitustyö

Advanced Test Automation for Complex Software-Intensive Systems

Yrittäjäkasvatuksen polku - sivusto. Yksityiskohtainen suunnittelu Huhtikuu 2018

Ylläpitodokumentti Mooan

TIE Ohjelmistojen testaus Harjoitustyön esittely osa 2: Vaiheet 3 & 4. Antti Jääskeläinen Matti Vuori

Arkkitehtuurikuvaus. Ratkaisu ohjelmistotuotelinjan monikielisyyden hallintaan Innofactor Oy. Ryhmä 14

Testaustyökalut. Luento 11 Antti-Pekka Tuovinen. Faculty of Science Department of Computer Science

Suomen avoimien tietojärjestelmien keskus COSS ry

Onnistunut ohjelmistoprojekti

TIE Ohjelmistojen testaus 2015 Harjoitustyö Vaiheet 1 ja 2. Antti Jääskeläinen Matti Vuori

Tietotekniikan Sovellusprojektit

Interaktiivisten järjestelmien arkkitehtuuriratkaisu, jolla käyttöliittymä erotetaan sovelluslogiikasta.

Lakki. Lisää ot sik k o osoit t am alla. Nöyrästi vain lakki kourassa... Jussi Vänskä Espotel Oy. vierailuluentosarja OTM kurssi 2010

811312A Tietorakenteet ja algoritmit I Johdanto

JulkICT Lab Palvelumuotoilun Kick Off Työpajan yhteenveto

Visual Basic -sovelluskehitin Juha Vitikka

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Pedacode Pikaopas. Java-kehitysympäristön pystyttäminen

Testiautomaatio tietovarastossa. Automaattisen regressiotestauksen periaate ja hyödyt

Algoritmit 1. Luento 3 Ti Timo Männikkö

Satunnaisalgoritmit. Topi Paavilainen. Laskennan teorian opintopiiri HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

Kooste kotitehtävien vastauksista. Kotitehtävä 6 - Ylläpito- ja kehittämismalli

Suunnitteluvaihe prosessissa

SYSTEEMITYÖ. Tärkeitä sanoja

Takki. Lisää ot sik k o osoit t am alla. Nyt se sopii, tai sitten ei. Jussi Vänskä Espotel Oy. vierailuluentosarja OTM kurssi

IT Service Desk palvelun käyttöönotto palvelukeskuksissa

Ongelma(t): Miten mikro-ohjelmoitavaa tietokonetta voisi ohjelmoida kirjoittamatta binääristä (mikro)koodia? Voisiko samalla algoritmin esitystavalla

FinFamily PostgreSQL installation ( ) FinFamily PostgreSQL

UKJ ja avoimen lähdekoodin järjestelmät

Ohjelmistotekniikka - Luento 2

Tapahtumakalenteri & Jäsentietojärjestelmä Ylläpito

Transkriptio:

Ohjelmistojen ylläpito JOT 7.12.2006 Minna Hillebrand

À la carte Sovelluksen elinkaari Mitä tapahtuu lopussa ja miksi Ylläpidon muodot Uudistaminen Onko helpompaa tapaa? Korppi

Sovelluksen/projektin elinkaari ANALYYSI SUUNNITTELU TOTEUTUS TESTAUS ANALYYSI SUUNNITTELU TOTEUTUS TESTAUS YLLÄPITO

Sovelluksen oikea elinkaari Jatkuva iteraatio, jossa suunnittelu ja toteutus vuorottelevat. Ylläpito ei eroa oleellisesti muusta kehityksestä.

Kaikki hyvä loppuu aikanaan? Jatketaan, tai lopetetaan Muutettavuus YLLÄPIDÄ JATKOKEHITÄ HYLKÄÄ UUDISTA Liiketaloudellinen arvo

Mitä tapahtuu sovelluksen ikääntyessä? Sovellus rapautuu muutos 1 muutos 2 muutos N ASIANTUNTIJAT RAKENNE LÄHDEKOODI

Miksi? Huono suunnittelu (arkkitehtuuri, toteutuksen yksityiskohdat, alusta...) Toistuvat muutokset Lehmanin lait

Lehmanin lait (1) Jatkuva muutos ja jatkuva kehitys jotta vastataan käyttäjien odotuksia; muutoin ohjelma jää pois käytöstä (1. ja 6., 1974 & 1978) Siten ei ole edes tarkoituksenmukaista suunnitella ohjelmaa, joka täyttää kaikki käyttötarpeet yhdellä kertaa. Monimutkaistuminen (2., 1974) vaatii vastavoimana aktiivista vastustamista. Muutoin sovelluksen laatu heikkenee (7., 1994).

Lehmanin lait (2) Muutosten määrä vakioituu ja säännönmukaistuu (5. ja 4., 1978) eli kehitysvauhti pysyy vakiona; aletaan pelkäämään kumuloituvia virheitä mikä hidastaa normaalia kehitysvauhtia.

Muuttujat Kehittäjät Ohjelmointityyli Ohjelmointikieli Tavoitteet

Ylläpidon muodot Korjaava ylläpito: korjataan löydetyt bugit ja siten parannetaan sovelluksen laatua, 20% Mukauttava ylläpito: laitteiston ja rajapintojen muutokset, 25% Täydellistävä ylläpito: tuottaa sovellukselle esitetyt uudet toiminnalliset vaatimukset, 50 %. Vaatii rakenteellisia muutoksia ja siten voi generoida uusia virheitä. Muuttaa sovelluksen toimintaa, joten myös testit on uusittava.

Ylläpidon muodot (2) Ehkäisevä ylläpito; ennakoidaan tulevaa ja parannetaan sisäistä rakennetta, <10%. Edellä mainitut eivät saa rapauttaa sovellusta nopeammin kuin tällä ehdotään korjaamaan.

Suunnan valinta Muutettavuus YLLÄPIDÄ korjaava, mukauttava HYLKÄÄ JATKOKEHITÄ täydellistävä UUDISTA ehkäisevä Liiketaloudellinen arvo

Sovelluksen uudistaminen Ohjelman rakenteen tulkitseminen. Sovellusta vastaavan dokumentaation tuottaminen ja ylläpito. Ohjelman rakenteen ja luettavuuden parantaminen; suunnittelu ja toteutus. Lopputuloksena ohjelmalla on parempi rakenne kuin lähtötilanteessa.

Uudistamisen vaiheet: 1 Abstraktion luominen nykyisen rakenteen pohjalta takaisinmallintamalla (reverse engineering): UML-kaaviot Ei muuteta ohjelman tilaa, eikä lisätä uusia toimintoja! Rakennetaan testit, joilla voidaan varmentaa, että sovellus toimii odotetusti.

Uudistamisen vaiheet: 2 Uudelleenmuokkaus eli uuden rakenteen suunnittelu riittävä suurella abstraktiotasolla (reengineering). Tunnettava haluttu lopputulos!! Yliluokkien lisääminen, toistuvien ohjelmanosien kapselointi, rajapintojen luominen ja/tai yksinkertaistaminen. Muutokset voidaan tehdä halutun lopputuloksen ehdoilla ja tulevat vaatimukset huomioiden Parantaminen (improvement), uusiminen (renewal), kohentaminen (refurbishing), ajanmukaistaminen sekä toimintojen että kehityksen tasolla (modernization)

Uudistamisen vaiheet: 3 Suunnitelmien toteutus eli uudelleenrakentaminen (refactoring) kooditasolle.

Uudistamisen riskejä Työkaluja voi olla vaikea löytää. Käsityö tulee kalliiksi. Aika. Käsityössä virheiden todennäköisyys kasvaa. Asintuntijoita on vaikea löytää. Tavoitteet epäselviä. ei trendikästä Johdon hyväksynnän saavuttaminen. Positiivisia kokemuksia tarvitaan, jotta uskalletaan toistaa jatkossakin. Siksi ei ole varaa epäonnistua. Nämä riskit kannattaa ottaa.

Mitä on voitettavissa? Visualisoitu sovelluksen rakenne. Ajantasainen dokumentaatio. Kehitys jatkuu paremmalla alustalla. Työkaluja, joilla voidaan löytää vastaavat ongelmakohdat muissa kohteissa. Ammattitaitoa tekijöille ja osaamista yritykselle.

Muutosnopeus Yhtäkkinen uudistaminen (cold turkey). Koko sovellus uudistetaan erillään tuotantoversiosta ja käyttöönotetaan kerralla. Kestää kauan ja maksaa paljon, ennen kuin tuloksia on nähtävillä Muutokset sekä tuotantoon että uuteen versioon Rajapintojen testaus? Datan siirto? Käyttöönotto? Muutosvastarinta?

Muutosnopeus (2) Vähittäisessä uudistamisessa (incremental approach) osia uudistetaan tarpeen mukaan. Vaatii sovelluksen jakautumista sopiviin komponentteihin Helpompi tuottaa ja testata Käytössä on vanhan ja uuden hybridi Voi vaatia lisäosia vanhan ja uuden järjestelmän välille Voi venyä ajallisesti pidemmäksi Ei voida muuttaa kokonaisrakennetta

Muutosnopeus (3) Kehittävä uudistaminen (evolutionary approach) etenee myös vähittäisesti, mutta sovelluksen toimintojen mukaan. Sovelluksen toiminnalliset osat oltava tunnistettavissa Saadaan modulaarinen sovellus Sovelluksen sisäisesti yksittäinen komponentti voidaan uudistaa useammassa osassa Rajapintojen muuttaminen hyvin vaikeaa Kestää pisimpään

Periaatteita, takaisinmallinnus Appoint a Navigation Agree on Maxims, Most Valuable First Fix Problems, Not Symptoms If It Ain't Broke, Don't Fix It Keep It Simple Read All The Code in One Hour, Skim the Documentation Study the Exceptional Entities Refactor to Understand

Periaatteita, muokkaaminen Write Tests to Understand Write Test to Enable Evolution Grow Your Test Base Incrementally Test the Interface, Not the Implementation Migrate Systems Incrementally Always Have a Running Version Deprecate Obsolete Interfaces Move Behavior Close to Data Split up God Class

Tulevaisuus? Model-driven development: lähdekoodi ja malli aina ajan tasalla. Abstraktiotaso nousee, kehittäminen on tuottavampaa. MODEL MODEL MODEL MODEL CODE CODE CODE CODE

Korpin ylläpito Asiakaspalvelua Virheiden korjaamista Uuden kehittämistä Lokien analysointia Suorituskyvyn parantamista Yhteensopivuus (css) Integrointi

Jakauma Neuvonta 30 % Tukipalvelut 10% Koodiin koskeminen 60 % Korjaava ylläpito 40 % Täydellistävä ylläpito 35 % Mukauttava ylläpito < 10 % Ehkäisevä ylläpito 20 %

Resurssit 6+3 kehittäjää Vastuulla 350 000 koodiriviä

Työvälineet, koodi Versionhallinta, CVS Kehitysympäristö, Eclipse Alusta, Linux / Windows Jaettu tietokanta, PostgreSQL

Työvälineet, prosessi Jaettu postiosoite korppi@jyu.fi Tracker Bugzilla (1470 todo / 1430 done) Wiki Prosessi? Välineet?

Sovelluksen käyttö 2 varsinaista palvelinta 2 mobiilipalvelinta 1 synkronointipalvelin 24 / 7 palvelun odotettu saatavuus, pois käytöstä vain päivitysten aikaan. Jatkuvasti vähintään 20 kirjautunutta käyttäjää Lokia generoituu giga / päivä, http://korppi.jyu.fi/statistics

06.12.2006 20:12:05 up 63 days, 5:55, 3 users, load average: 0.06, 0.14, 0.09 ------------------- Kirjautuneena 53 käyttäjää 25.12.2005 04:12:01 up 14 days, 7:26, 1 user, load average: 0.02, 0.43, 0.38 ------------------- Kirjautuneena 3 käyttäjää

Kehitysympäristö Lokaali kehitysympäristö Avoin ja yhteinen kehityspalvelin Avoin ja yhteinen testi- ja koulutuspalvelin Rajoitettu tuotantopalvelin Avoin tuotantopalvelin

Strategia Tehdään mitä pyydetään Tehdään paremmin (ehkä)

Tavallinen tarina Tietokantahaku Aloitetaan kyselyllä, joka tekee tehtävänsä. Joku valittaa hitaudesta. Optimoidaan SQL-kyselyä. Lisätään kantaan indeksejä. Muokataan tulosjoukon käsittelyä. Ongelmia Hitautta ei havaita pienellä datamäärällä. Alikyselyissä IN vs. EXISTS riippuu mm. datamäärästä. Tulosjoukon modifiointimahdollisuus teknisesti nuori.

Suorituskyky Tietokantahakuja tehdään niin vähän kuin mahdollista. Haun suoritus on mahdollisimman nopea. Systeemin sisällä suoraviivaisia, nopeita operaatioita.

Metriikat Kuinka paljon suoritusaikaa kuluu kullakin sivulla 1) tietokantaan 2) java-toimintaan Jos kumpi tahansa on suuri, toimintaa voidaan todennäköisesti optimoida 1 100 ms, 2 500 ms

Metriikat (2) Kuinka paljon suoritusaikaa on kulunut kunkin sivun suoritukseen? Voidaanko pisimpään kestäneitä suorituksia optimoida? Kuinka paljon kutakin sivua on pyydetty? Voidaanko useimmin pyydettyjä toimintoja optimoida?

Uuden kehitys Kehitystoiveita tulee useita per viikko. Osa pieniä, osa suurempia. Priorisointi käyttäjämassan ja poliittisten heijastusvaikutusten mukaan. Pieniäkin toiveita tulee toteutettua: ylläpitäjilläkin pitää olla jotain hauskaa tekemistä.

Mistä puhuttiin? Sovelluksen elinkaari Mitä tapahtuu sovelluksen ikääntyessä ja miksi Ylläpidon muodot Uudistamisen vaiheet, riskit, mahdolllisuudet Miten muutos tehdään Korpin ylläpito: resurssit, strategia

Kysymyksiä?