Programvareendring In 140 Forelesning Nr 21 Sommerville kap 27.

Slides:



Advertisements
Liknende presentasjoner
Hovedprosjekt Gruppe 18E Vår Prosjektoppgave 18 E  Arbeidsgiver  Byåsen Bilverksted AS ved John Myhre  Veileder  Jostein Lund  Gruppemedlemmer.
Advertisements

Programmering i ActionScript - hva er det, og hvordan undervise?
ISO 9000:2000 Prosessorientering v/Per L. Berge Excellence Norway
Frode B. Nilsen Drifts- og utviklingssjef, BankID Norge
Mobile portalløsninger (Internet Online Platform)
Johannes Skaar, Innovasjon Norge
Kunstner: Oddmund Mikkelsen
Ideutvikling - Problemdefinisjonen. Hva gjør de erfarne problemløserne? •Samler og analyserer informasjon og data •Snakker med mennesker som kjenner problemet.
Introduksjon til in 140 Systemering. In 140 Systemering Forelesninger Rom B137 –Mandag –Onsdag Foreleser: Hans F. Nordhaug Lærebok:
2003 IT-konferansen 2003 UNIVERSITETET I OSLO Vortex: Skrivbar web for UiO Oddmund Møgedal USIT/UiO.
Java Server Faces (JSF) en introduksjon Frode Eika Sandnes.
1 4 March 2010 TDT4285 Planl&drift IT-syst Forelesning nr 22: Ytelsesforvaltning TDT4285 Planlegging og drift av IT-systemer Våren 2010 Anders Christensen,
Grunnleggende testteori
Regneark II IN 102 Forelesning 4.
Prosjektstyring In 140 Sommerville kap 4.
Verifikasjon og validering
Programvare-prosesser
Prototyping In 140 Sommerville kap. 8. Mål Forstå hensikten med prototyping i forskjellige utviklingsprosjekt Forstå forskjellen mellom evolusjonær og.
Objektorientert utforming In 140 Forelesning Nr 13 Sommerville kap 12 – del 2.
Introduksjon til systemutvikling
Utført av: Jeppe Flensted HiST Vår 2009
Jakten på kvaliteten.
Hovedprinsipper i Rational Unified Process
I dag snakker vi om: Brukergrensesnitt med kvalitet Bruksegenskaper Normans 7 stadier Testing med papirprototyp.
Human Factors (HF) i kontrollrom - En revisjonsmetode 2003
  © Steria FitNesse som nyttig verktøy Smidig FitNesse som nyttig verktøy Anders Vindvad.
Mandag 8. November Powerpoint..
INF 295 forelesning 14 - kap 8 Disjunkt mengde ADT Hans Fr. Nordhaug (Ola Bø)
Bærekraftig utvikling - forskerspiren
Tjenesteorientert arkitektur Hvordan statistikkproduksjonen støttes og forbedres av en tilpasset IT arkitektur Nordisk statistikermøte København.
Problemstyring Problem Management
Programvareendring del 2 In 140 Forelesning Nr 22 Sommerville kap 27, 2. Del.
Å omfavne forandringer med ekstrem programmering(XP) Brukt i In140 Skrevet av Ola Bø Bygger på Kent Becks artikkel "Embracing change with extreme programming."
Skjemaendringer i systemer bestående av XML-data i relasjonsdatabaser Høgskolen i Gjøvik Master i Medieteknikk, Marianne Brattrud.
N O R P R O F F Quality Management SAMARBEIDSPARTNER FOR
Maintenance problems - Measuring Maintenance characteristics Software Engineering Gruppe 2 Carl-Erik Herheim Leendert Wienhofen Thomas Julsen Kjartan Haugen.
BUCS Utfordringer og valg av fokus Tor Stålhane. Rammebetingelser Første spørreundersøkelse viser at det vi gjør må kunne: Brukes sammen med UML Passe.
11. Balancing technology with people’s needs Bruk av teknologi.
In 102 – V 2005 Innføring i informasjonsteknologi Forelesning 1.
Objektorientert utforming In 140 Sommerville kap. 12.
1 Systemering In 140 forelesning nr. 2 Sommerville kap. 3.
Bruk av alkohol og medikamenter blant eldre (60+) i Norge.
Sentral vs. desentral økonomifunksjon
Brukermedvirkning In 140 Forelesning. Historie Skandinaviske tradisjon Sosio-teknisk metode NJMF-prosjektet( ) –Dataavtalen LO-NAF(i dag NHO) –Arbeidsmiljøloven.
Programvareendring del 1 In 140 Forelesning Nr 21 Sommerville kap 27, 1. Del.
Telenors satsing på fri programvare Paul Skrede - GoOpen 2009.
In Forelesning Sommerville kap 4 andre del
Forstudie Nå situasjonen: dagens situasjon med ulemper og fordeler
Programvareendring In 140 Forelesning Sommerville kap 27.
Nordic Research Group Omlegging av nettverksstruktur.
Gamle systemer In 140 Sommerville kap 26. Forelesninger fremover 8/4:Gamle systemer 22/4: Systemevolusjon og vedlikehold 28/4: Konfigurasjonsstyring.
Gamle systemer In 140 Forelesning Nr 19 Sommerville kap 26.
Gamle systemer In 140 Forelesning Nr 19 Sommerville kap 26.
Foretak Bjørnar Sæther SGO 4601 V-07. Struktur på forelesningen Hva er foretak? Foretak i økonomisk geografi Dimensjoner ved foretak Foretak og territorier.
Objektorientert design
WEB og tilgjengelighet En kort intro. Tilgjengelighet/universell utforming Tilgjengelighet (fysisk) En side kan være tilgjengelig uten åvære UU, men UU.
Moscito2 Guro, Tone, Mari og Elna. Om prosjektet Tilstedeværelsesinformasjon i organisasjoner Tilstedeværelsesinformasjon i organisasjoner - systemer.
Objektorientert utforming In 140 Forelesning Nr 11 Sommerville kap 12 – del 1.
Operativsystem IKT for lærere 15. november Hvorfor lære om dette? Kanskje den mest brukte programvaren i løpet av en (arbeids)dag Forskjellige operativsystem.
Objektorientert design In 140 Sommerville kap 12 – del 1.
Introduksjon til in 140 Systemering. In 140 Systemering Forelesninger Rom 112 –Mandag –Torsdag Lærebok: –Sommerville, Ian. Software.
Programvare-prosesser
Lønn Lønn er den betalingen du mottar fra arbeidsgiver for den jobben du utfører. Lønnen avhenger blant annet av alder, utdannelse, arbeidstid og arbeidsoppgaver.
Tips og råd Til hva dere bør tenke på når dere setter samme et business case (basert på innspill fra seminar )
12. Organisasjonsutvikling
12. Organisasjonsutvikling
HVORDAN KAN FREMTIDEN SE UT?
Dybdelæring – regneark B – Samarbeid
Utskrift av presentasjonen:

Programvareendring In 140 Forelesning Nr 21 Sommerville kap 27

Mål Forstå tre strategier for programvareforandring –Vedlikehold –Arkitekturtransformasjon –Re-engineering Forstå prinsippene for programvarevedlikehold og hvorfor programvare er dyrt å vedlikeholde Forstå hvordan gamle systemer kan gjøres om til distribuerte C/S-systemer

Hvorfor endringer? Forandring er nødvendig –Nye behov –Organisasjonsendring –Feilretting –Ytelsesforbedring Organisasjonen er avhengig av systemet Systemet representerer store verdier som vil gå tapt uten vedlikehold

Strategier for programvareendring Vedlikehold –Endringer mens programmets grunnleggende struktur ligger fast Arkitekturtransformasjon –Endringer som medfører betydelige forandringer i arkitekturen. –Fra sentralisert datasentrert til C/S Re-engineering –Lage systemet på nytt så det blir lettere å forstå og vedlikehold

Hva velger man? Strategiene kan kombineres Andre muligheter: –Ny utvikling –COTS –Outsourcing Endringer skaper forskjellige versjoner –Det er en kunst å holde orden på versjonene – konfigurasjonsstyring

Dynamikken i systemevolusjon (Lehman og Belady 1985) Lehmans "lover" –Kontinuerlig forandring - Et program som brukes i virkelighetens verden må endres eller bli mer og mer ubrukelig –Økende kompleksitet – Ettersom programmet endres, blir strukturen mer og mer komplisert. Det kreves ekstraressurser for å holde strukturen enkel nok. –Store programmers utvikling – Utviklingen er en selvstyrt prosess. Størrelse, tid mellom utgaver og antall feil er noenlunde konstant –Organisatorisk stabilitet – gjennom systemets levetid er utviklingstakten noenlunde konstant og uavhengig av systemutviklingsressursene –Bevart gjenkjennelighet – gjennom systemets levetid er endringen for hver utgave noenlunde konstant

Lehmanns lover Selvstyrt prosess er den mest omstridte –Store systemers dynamikk fastsettes tidlig i utviklingsprosessen –Treghet hindrer større forandring forandring - > feil feil -> feilrettingsutgave –Sammenheng med organisasjonens beslutningsprosess Organisatorisk stabilitet –Prosjektet kommer i mettet tilstand. (Uansett hvor mye ressurser som settes inn klarer man ikke å akselerere arbeidet) Tilsynelatende brudd på Lehmanns lov –MS-word fra 256k til gigantsystem

Vedlikehold av programvare Endringer –Liten: Retting av kodefeil –Større: Retting av utformingsfeil –Betydelig: Retting av spesifikasjonsfeil eller innføring av ny funksjonalitet –Vanligvis ikke større arkitekturendringer under vedlikehold –Endre komponenter og legge til nye hvis det er nødvendig.

Vedlikeholdstyper Reparasjonsendringer –Kodefeil lette å rette. De er lokale –Utformingsfeil mer kompliserte fordi de involverer flere komponenter –Kravspesifikasjonsfeil er kostbare. Kan kreve ny utforming av systemet Endringer som tilpasser systemet til nytt miljø –Svarer til endringer i maskinvare operativsystem annen støtteprogramvare Vedlikehold som øker eller endrer funksjonaliteten –Når kravene til programvaren endrer seg

Vedlikeholdstyper Glidende overgang Uklare begreper –Korrigerende vedlikehold –Tilpassende vedlikehold –Forbedrende vedlikehold

Fordeling av vedlikeholdsarbeidet

Spiralmodell for vedlikehold

Vedlikeholdskostnader Vanligvis 2 – 4 ganger utviklingskostnad Både tekniske og ikke tekniske faktorer spiller inn Øker etter hvert som programvaren blir vedlikeholdt. Vedlikeholdet ødelegger strukturen. Da blir videre vedlikehold vanskeligere Eldre programvare kan ha høye supportkostnader Hvordan vil bruk av COTS spille inn?

Vedlikeholdskostnader Det kan lønne seg å investere i utviklingsarbeid som gjør systemet lettere å vedlikeholde –Hovedkostnad å forstå systemet og analysere virkninger –Kan lettes med god systemering: Presis spesifikasjon OO-utvikling Konfigurasjonsstyring

Utviklings/vedlikeholdskostnad

Hvorfor er det dyrere å legge til funksjonalitet etterpå Utviklingsteamet med sin forståelse eksisterer ikke lenger Kontraktansvar: Utviklingsorganisasjonen er ikke vedlikeholdsorganisasjonen Personalkompetanse –Vedlikehold har lav status –Vedlikehold utføres av uerfarent personale –Gamle programmeringsspråk Programalder og struktur –Strukturødeleggelse, dårlig systemering, ikke strukturerte, optimert for effektivitet, dokumentasjonsbrist, manglende konfigurasjonsstyring

Hva kan gjøres: Vekk med skillet mellom utvikling og vedlikehold (f.eks: XP) Evolusjonære systemer –Nyutvikling –Forbedring av eksisterende med RE eller AT Struktur i eksisterende systemer kan bedres med RE eller AT Preventivt vedlikehold

Vedlikeholdsprosessen Varierer med programvaretype, utviklingsprosess, involverte. Formell med strukturert dokumentasjon eller uformell Samme abstrakte struktur –Forandringsanalyse –Utgaveplanlegging –Implementering –Utgave

Vedlikeholdsprosessen Prosessen settes i gang av et antall forandringsønsker Vurdering av kostnader og virkninger som forandringene fører til Valg av forandringer som skal gjennomføres danner utgaveplan –feilretting –tilpasning –ny funksjonalitet Implementering Validering

Vedlikeholdsprosessen

Endringene bør gjennomføres fullstendig Endring av spesifikasjon Endring av utforming Endring av kode Testing av systemet Ikke alltid mulig –Brannslukking

Brannslukking – løse problemer det haster med Behovet oppstår ved: –Feil som hindrer bruk av systemet –Uventede konsekvenser av støttemiljøendringer –Uventede endringer i organisasjon eller lovverk Løses ved nødreparasjon av koden Stor fare for inkonsistens mellom krav, utforming og kode Systemet aldres fortere ved nødreparasjoner Kan løses ved å gjøre skikkelig reparasjon – senere – når vi får tid

Implementering av endringer

Vedlikeholdsplanlegging Hva slags endringer blir nødvendige Hvilke deler av systemet blir mest vedlikeholdskrevende Hva kommer vedlikeholdet til å koste –Hvis systemet er lett å vedlikeholde er det lettere å godta et ønske om systemendring –Systemendringer gjør systemet vanskeligere å vedlikeholde –Vedlikeholdskostnaden avhenger av antallet endringer og kostnaden for hver av dem som igjen avhenger av hvor lett det er å vedlikeholde

Vedlikeholdsplanlegging

Forutsi forandringer Avhenger av forholdet mellom system og omgivelser –Brukergrensesnitt: antall og kompleksitet –Antall ustabile (volatile) systemkrav –Antall forretningsprosesser systemet er knyttet til

Forutsi vedlikeholdbarhet Antall komponenter Sammenhenger Indre kompleksitet i komponentene Kompleksitet –Funksjonsstørrelse –Modulstørrelse –Avgreininger Jo større kompleksitet, jo større vedlikeholdsomkostninger Lønnsomt å forenkle under utvikling Lønnsomt å erstatte svært kompliserte komponenter med enklere komponenter

Forutsi vedlikeholdbarhet Kan også bruke erfaringstall –Antall feilkorrigeringsforespørsler –Gjennomsnittlig tidsforbruk i konsekvensanalyse –Gjennomsnittlig implementeringstid for endringer –Antall ikke gjennomførte endringer Økninger i disse tallene tyder på lavere vedlikeholdbarhet

Forutse vedlikeholdsomkostnader Forandringsbehov Forandringskostnad Intuisjon Erfaring

Arkitekturevolusjon Vedlikehold er ofte lokalisert Fra 1980 alminnelig med arkitekturevolusjon av økonomiske årsaker Distribuerte systemer er mer kosteffektivt enn stormaskin –Maskinvarekostnader C/S er mye rimeligere enn stormaskin –Krav til brukergrensesnitt Tegnbasert -> GUI –Distribuert tilgang til systemer Avdelinger Hjemmekontor

Arkitekturevolusjon Overgangen gir –Billigere systemer som er mer moderne- enklere å bruke og mer tilgjengelig –Muligheter for innføring av objektorientering i deler av systemet ->Lettere vedlikehold Ikke bare fordeler –Overgangen er vanskelig og kostbar Nødvendig å vurdere om endringen bør gjennomføres

Vurdering av overgang til C/S Er systemet viktig og varig? Hvor gammelt er systemet? Struktur i eksisterende system? Er det tatt en overordnet beslutning om å forlate stormaskin?

Strukturen i gamle systemer

En løsning for distribusjon av gamle (ustrukturerte) systemer

Lagdelt distribusjonsmodell Greit hjelpemiddel når man planlegger overgang til C/S Lagene –Presentasjon –Datavalidering –Interaksjonsstyring –Applikasjonstjenester –Databaselag Kostnaden avhenger blant annet av hvor mange lag som skal distribueres Gradvis overgang kan være mulig

Lagdelt distribusjonsmodell

Overgang til distribuerte systemer: valgmuligheter Multi-tier systemer er også mulig

Distribusjon av brukergrensesnittet Gamle systemer: –Skjemabaserte grensesnitt – all prosessering og bildegenerering på stormaskin –Skjermterminaler kan erstattes med terminalemuleringsprogrammer på PC Alternativer: –Hvis atskilt presentasjons (og datavaliderings-) lag, kan dette laget bygges på nytt. Resten av systemet styres via samme grensesnitt som før –Hvis lagdeling mangler: Bygge nytt brukergrensesnitt som limes til det gamle brukergrensesnittet via middleware. Ser ut som skjermterminaler fra det eksisterende systemet Ser ut som GUI for brukerne –Skjermbeskrivelser (i XML?)

Distribusjon av brukergrensesnitt (for gamle systemer uten lagdeling)

Strategier for distribusjon av brukergrensesnitt Bruke PC-ens vindushåndteringssystem og lage kommunikasjonsrutiner mot server –Alle muligheter – Full frihet – Bedre ytelse –Plattformavhengig – Vedlikeholdsproblem – Vanskeligere å oppnå konsistens Bygge brukergrensesnittet i HTML og bruke en WWW-leser –Uavhengig av plattform – Rimelig opplæring – Lettere å oppnå konsistens – Leser XML direkte – Har felles trekk med stormaskintankegang – Dårligere ytelse – Fattigere grensesnitt – Rimeligere vedlikehold av arbeidsstasjoner

Bruke PC-ens vindusmiljø Bruke Java eller VB til –Skjermbilder –Datavalidering –(Interaksjonsstyring) –(Applikasjonstjenester) –Kommunikasjonsrutiner Tilgang til alle muligheter i vindusmiljøet

Bruke www-teknologi Skrive brukergrensesnittet i HTML Datavalidering –med Java-script lokalt –med CGI-script eller servlet på server Interaksjonsstyring og applikasjonstjenester på server Ikke nødvendig å skrive kommunikasjonsrutiner. Dette brukergrensesnittet kan gjøres rikere med appletter Jo mer funksjonalitet som kreves i nettleseren, dess nyere versjon kreves det. www-teknologien har innebygd treghet

Grunnleggende problem: Skjemabasert –Systemstyrt rekkefølge –Ett skjema av gangen –Validering felt for felt –Krever gyldige data for å gå videre GUI-basert –Brukerstyrt rekkefølge. Fordel? –Kan bruke mange samtidige vindu –Validering felt for felt kan gi økt nettverkstrafikk (tregt system) Hva er viktig? –Hastighet, Umiddelbar tilbakemelding, Oversikt. Skjemabaserte tankegangen passer i mange arbeidsoperasjoner.

Hovedpunkter Endringsstrategier er vedlikehold, arkitekturevolusjon eller re-engineering Det ser ut til å være visse faste sammenhenger for endring av programvaresystemer (Lehmanns "lover") Tre vedlikeholdstyper –reparasjon –tilpasning til nytt miljø –økning eller endring av funksjonalitet Vedlikeholdskostnad er vanligvis høyere enn utviklingskostnaden

Hovedpunkter Antall gamle systemer er økende – en større andel av programvarebudsjettet blir brukt på vedlikehold Høye vedlikeholdskostnader kommer av –Personalkostnader – Liten tendens til å lage vedlikeholdbar kode – Kompetansemangel – Forverret systemstruktur Arkitekturevolusjon innebærer overgang fra sentralisert – datasentrert til distribuert arkitektur En vanlig strategi er å kapsle inn det gamle systemet og lage et distribuert brukergrensesnitt som anvender den gamle funksjonaliteten vha. middleware