Vedlikehold og gjenbruk

Like dokumenter
CORBA Component Model (CCM)

Evaluering av It-systemer i et forvaltningsperspektiv. Drift, vedlikehold og videreutvikling av IT-systemet

A Study of Industrial, Component-Based Development, Ericsson

Gruppe 11. Frank Petter Larsen Vegard Dehlen

Systemutviklingen er ferdig når et system er operativt. Med operativt menes når systemet blir brukt av brukerne på et faktisk arbeidssted.

Forelesning IMT mars 2011

Distributed object architecture

Model Driven Architecture (MDA) Interpretasjon og kritikk

Grunnleggende testteori

OptimalJ-kurs UIO Oppsummering av kurset. De ulike modellene egenskaper og formål

Grunnleggende testteori

Oppsummering : IMT2243 Systemutvikling. Hensikt med kurset. Innfallsvinkel : Tom Røise IMT2243 : Systemutvikling 1

2. HVA ER EN KOMPONENT?

Konfigurasjonsstyring. INF1050: Gjennomgang, uke 11

Nyttestyring og viktigheten av den gode kunde

Nyttestyring og viktigheten av den gode kunde. Magne Jørgensen

Oppsummering : IMT2243 Systemutvikling. Hensikt med kurset. Innfallsvinkel : Tom Røise IMT2243 : Systemutvikling 1

Oppsummering. Thomas Lohne Aanes Thomas Amble

System integration testing. Forelesning Systems Testing UiB Høst 2011, Ina M. Espås,

Scientific applications in distributed systems

Introduksjon til programmering og programmeringsspråk. Henrik Lieng Høgskolen i Oslo og Akershus

Operativsystemer og grensesnitt

Presentasjon 1, Requirement engineering process

Oppgave 1: Multiple choice (20 %)

Generelt om operativsystemer

Human Factors relevant ved subsea operasjoner?

Kap. 2 Prosessen. Utviklingsmodeller -2. Utviklingsmodeller. Utviklingsmodeller -4. Utviklingsmodeller - 3. Software Engineering - definisjoner

Kravhåndtering. INF1050: Gjennomgang, uke 03

PR november 2009 Programvare, pc-basert kontroll Side 1 av 5

Arkitektur. Kirsten Ribu Høgskolen i Oslo

GJENNOMGANG UKESOPPGAVER 3 KRAVHÅNDTERING

Software installasjon og andre ettertanker

Arkitektur. Kirsten Ribu Høgskolen i Oslo

Distributed object architecture

1. Å lage programmer i C++

Introduksjon til 3290

Tom Røise 9. Februar 2010

Design, bruk, interaksjon

Lykke til! Eksamen i fag TDT4140 Systemutvikling NTNU Norges teknisk-naturvitenskapelige universitet

Metadata for samordning og samhandling

Distributed Component Object Model. Utvikling av distribuerte applikasjoner. Utvidelse av COM for støtte av distribuerte objekter

Kapittel 13 Advanced Hypertext Implementation. Martin Lie Ole Kristian Heggøy

Tom Røise IMT 2243 : Systemutvikling 1. Forelesning IMT Mars Designfasen i SU-prosjekter : Generelle steg i Designprosessen

1. Å lage programmer i C++

INF109 - Uke 1a

IEC Hovedprinsipper og veiledning

Distribuerte objekter og objekt-basert mellomvare

Tom Røise 24.Mars 2009

Lynkurs 10. Januar 2012

NOVUG 3 februar 2009

DRI 2001 Systemutviklingsarbeidet et overblikk Forelesning

DRI 2001 Systemutviklingsarbeidet et overblikk Forelesning

CORBA Objektmodell (Java RMI)

Distribuerte objekter og objekt-basert mellomvare

Prototyping. TDT4180, vår Yngve Dahl IDI, NTNU NTNU

Kvalitet og programvare. Når bare det beste er godt nok. Produktet prosessen eller begge deler?

Introduksjon til programmering og programmeringsspråk

IN2002: Software Engineering og prosjektarbeid 12. februar Forskningsmetoder / Evaluering av IT-systemer. IN2000/ 12.2.

PROSJEKTPLAN FOR INF [4 3]120-PROSJEKT: PROJECT HOSPITAL 2004

Objektorientert design av kode. Refaktorering.

nettbasert produksjon og distribusjon av lydbøker

Distribuerte objekter og objekt-basert mellomvare

Forskningsmetoder. INF1050: Gjennomgang, uke 13

Kap. 10 Systemutvikling System Engineering

UNIVERSITETET I OSLO

Installere JBuilder Foundation i Mandrake Linux 10.0

Jini. Gruppe 1 Martin Skarsaune Bjørn Arne Dybvik Cuong Huu Truong. Definisjon

Bruk av RAMS ved anskaffelser av rullende materiell og nye infrastrukturanlegg

Vedlegg 1 Sak Kunde og brukerundersøkelsen 2018

DRI2001 forelesning

Metode for ansvarsdrevet OO. Dagens forelesning. Delegering av ansvar i en trelagsarkitektur

Oppgaver uke 42. Systemutvikling

Forprosjektrapport. Utvikle en plattform for digitalisering av foosballbord.

Innebygd personvern og personvern som standard. 27. februar 2019

INF2810: Funksjonell Programmering. Lister og høyereordens prosedyrer

Hvordan evaluerer man kvaliteten på et IT-system?

Veiledning til brukerdokumentasjonen

Til: Aktuelle studenter for Cyberneticas studentprogram Antall sider: 5 Dato:

SolidPlant er perfekt for deg som jobber med design av rørsystemer og anlegg, og er kjent med SolidWorks.

Rekursjon og lister. Stephan Oepen & Erik Velldal. 1. februar, Universitetet i Oslo

IN2000. Gjennomgang av tekniske oppgaver på prøveeksamen. Erlend Stenlund og Steffen Almås + innspill fra Gaute Berge

Stein Gjessing. Institutt for informatikk. Universitetet i Oslo. Institutt for informatikk

InfraWorld avslutningsseminar. - Introduksjon. torsdag 13/9-12

Grunnleggende testteori. Etter Hans Schaefer

or*dtrosnilt,'+'.q':'

Introduksjon til design, bruk, interaksjon. Litt om fagets historie. Gisle Hannemyr Ifi, høstsemesteret Design, bruk, interaksjon

Dokumentasjon av XML strukturer for ByggSøk

Systemutviklingsmetoder

For mer informasjon om SQL Server 2014 Express, se Microsoft sine nettsider:

LCC som fokusområde i NSB ved store

Høgskolen i Oslo og Akershus

Bedre valg av leverandør gjennom trialsourcing & Fastpris eller per time?! Oslo, 1. desember, 2014 Magne Jørgensen

Forebyggende vedlikeholdsplaner i SAP

Livsløpstesting av IT-systemer

Saia PG Kjære kunde,

Hvordan komme i gang med ArchiMate? Det første modelleringsspråket som gjør TOGAF Praktisk

Grunnleggende om Evaluering av It-systemer

Stein Grimstad. Konsulent i Scienta AS. Prosjekt hos Skatteetaten. Forsker hos Simula (deltid) 3/7/18

SAS IN A SOA WORLD MARIUS SOMMERSETH TEAM LEAD TECHNICAL ARCHITECTURE

Kapittel 5 - Advanced Hypertext Model Kapittel 6 - Overview of the WebML Development Process

Transkript:

Vedlikehold og gjenbruk Magne Jørgensen Development/maintenance costs System 1 System 2 0 50 100 150 200 250 300 350 400 450 500 $ Development costs Maintenance costs Ian Sommerville 2000

Definisjon Vedlikehold av programvare omfatter alle endringer til et programvaresystem etter at det er installert for første gang i en operasjonell omgivelse Er vedlikehold nødvendig? Er ikke vedlikehold bare nødvendig fordi man ikke gjorde det helt riktig første gang? NEI, fordi: Virkeligheten endrer seg hele tiden firma/organisasjonen (produksjonen, produkter, omorganisering, oppkjøp, nye konkurrenter,..) brukeres behov vokser/endres lover, regler og andre krav fra samfunnet maskiner, operativsystem,... Brukerne greier aldri å spesifisere alt (de burde ha). Når man er ferdig med systemet, har spesifikasjonen endret seg (noe) Et system som ikke vedlikeholdes, er etter kort tid ubrukelig

Er vedlikehold annerledes enn nyutvikling? Vedlikehold endrer eksisterende, ofte ganske gammel kode (dagsverk). Nyutvikling lager et nytt stort system (årsverk) Vedlikehold er oftest styrt av ytre hendelser, hver oppgave kan ikke planlegges som ved ny-utvikling Det overstående gjelder ikke like mye hvis vi nytter en evolusjonær (iterativ) systemutviklingsmodell (med gjenbruk og prototyper). Da er forskjellene mindre Typer vedlikehold Feilrettinger (corrective maintenance) Oppdatere og rette opp feil debugging (fault repair) Tilpasninger (adaptive) Tilpasninger til endringer i omgivelsene inkludert maskin- og systemprogramvare Forbedringer (perfective) Nye krav fra brukerne, forbedret dokumentasjon, forbedret ytelse etc. Forebyggelse (preventive) Forbedringer for å forhindre framtidige feil (opprydding)

Distribution of maintenance effort Fault repair (17%) Software adaptation (18%) Forebyggende (5%) Functionality addition or modification (65%) Ian Sommerville 2000 Typer endringer i ett prosjekt 14 12 10 8 6 4 2 0 Correction of req. fault Correction of design fault Correction of coding fault Impl. of existing "user" req. Impl. of changed "user" req. Impl. of new "user" req. Improved performance Restructuring Adapt for reuse Adapt to external libraries Adapt to changed dev. Tools Other changes Erik Arisholm 8.11.2002

Vedlikeholdsprosessen Ofte dyrere å legge til funksjonalitet senere: Vedlikeholderne kjenner ikke problemområdet godt Opprinnelig systemutvikler ikke lenger tilgjengelig Gammel kode og gamle kompilatorer/verktøy gjør alt vanskeligere Endringer utført av mange ulike personer medfører ofte uoversiktlig og kompleks kode Dokumentasjonen mangler eller er ikke vedlikeholdt Vedlikehold og ny-utvikling Vedlikehold har ofte lav status (ufortjent) Vedlikeholdskostnadene stiger med tiden i en organisasjon Stadig nye systemer, få skrinlegges Gamle systemer koster stadig mer å vedlikeholde Svært mange prosjekter som består i å lage helt nye systemer som erstatning for gamle systemer, mislykkes (jfr. legacy systems) Vedlikehold/videreutvikling må planlegges under selve utviklingen av første versjon

Foreldet dokumentasjon Programvare-dokumentasjon er notorisk dårlig og nesten alltid foreldet Den eneste oppdaterte dokumentasjonen er stort sett kildekoden selv eller dok. som er automatisk generert fra den. Hvordan måle/evaluere vedlikeholdbarheten/ endringsevnen til et system?

Eksterne og interne attributter Maintainability Number of procedure parameters Cyclomatic complexity Reliability Portability Usability Sommerville figur 24.10 Program size in lines of code Number of error messages Length of user manual Ian Sommerville 2000 Vedlikeholdsmetrikker produkt Kontroll-kompleksitet kompleksiteten til betingelsesstrukturene Data-kompleksitet kompleksiteten til data-strukturer og komponentgrensesnitt Lengde på identifikatorer lengre navn vil kunne indikere større lesbarhet Program-kommentarer mer kommentering vil kunne indikere enklere vedlikehold Kobling mengden av andre komponenter/data-strukturer benyttet angir sannsynlighet for feil etter endring Grad av bruker-interaksjon jo mer bruker-i/o, jo mer sannsynlig er det at komponenten vil kreve endring Ytelses- og plasskrav krever innviklet programmering som indikerer vanskeligere vedlikehold

Design-metrikker Lav kopling og høy intern sammenheng god vedlikeholdbarhet Strukturell inn- og utvifte Stor innvifte (antall kallende funksjoner) indikerer høy import-kopling pga modul-avhengighet Stor utvifte (antall funksjoner som blir kalt) indikerer høy kontroll-kompleksitet Component A Fan-in Fan-out V1: lav kobling Lav vs. høy kobling mellom moduler (klasser) V2: høy kobling

Vedlikeholdsmetrikker prosess Andel korrektiv vedlikehold (feilretting) Gjennomsnittlig tid som kreves for konsekvens-analyse Gjennomsnittlig tid for å implementere en endringsforespørsel Antall endringsforespørsler som ikke er implementert En økning av én eller flere av disse vil kunne indikere problemer mht. vedlikeholdbarhet Gjenbruk av programvare

Kategorier av gjenbrukbare komponenter Totalsystemer/delsystemer Delsystemer Moduler/objekter Klassebiblioteker og andre biblioteker Funksjoner Funksjonsbiblioteker Suksessfaktorer ved gjenbruk Det må være mulig å gjenfinne gjenbrukbare komponenter Hvordan dokumentere dem? Teknikker fra fritekstsøking (Information Retrieval), jfr. alltheweb, Alta Vista etc. Gjenbrukere må kunne forstå komponentene og ha tillit til at de vil møte de nødvendige behov Komponentene må ha dokumentasjon som sier hvordan de kan gjenbrukes Rettighetsproblemer må håndteres på en enkel måte Ansvarsforhold på være avklart Ved feil må det være mulig å kontakte et støtteapparat, eller ha tilgang til kildekoden

Systemutvikling med gjenbruk og tilpassing av krav Outline system requirements Search for reusable components Modify requirements accor ding to discovered components Archi tectur al design Search for reusable components Specify system components based on reusable components Ian Sommerville 2000 Problemer ved gjenbruk Vanskelig å kvantifisere kostnadene og fordelene Mange CASE-verktøy støtter ikke gjenbruk på en god måte. De kan generelt ikke integreres med biblioteker av gjenbrukbare komponenter Noen programutviklere ønsker å omskrive fremfor å gjenbruke komponenter Teknikker for klassifisering, katalogisering og gjenfinning er umodne

Kostnader Dyrere å lage gjenbrukbare komponenter enn spesifikke. Denne ekstra kostnaden bør være en organisasjonskostnad fremfor en prosjektkostnad. Likevel kan gjenbruk svare seg innen ett prosjekt (2-2.5 år) Generelle komponenter bruker ofte mer plass og har dårligere ytelse Standarder for komponenter Standarder forutsetning for effektiv bruk av komponenter i et distribuert miljø (ofte ulike kom.protokoller, op.systemer osv.) Eks. på objekt-orienterte distribuerte rammeverk er CORBA (Common Object Request Broker Architecture) Kommunikasjonen mellom komponenter i distribuerte systemer baseres i stadig større grad på Internett-teknologi Suns Enterprise JavaBeans, Microsofts Component Object Model (COM) Javas plattformuavhengige og distribuerte egenskaper gjør språket og omgivelsene egnet til å utvikle og bruke komponenter i ulike miljøer

Gjenbruk av prosess-egenskaper Prosessmodeller Prosesshåndbøker og andre prosessbeskrivelser Estimering- og risikomodeller Kostnadsmodeller, sjekklister Metrikker Egenskaper ved programvare og -prosesser Data Kvalitative og kvantitative data, analyse-resultater