Introductie

28
Introductie Piet de Vries PinkRoccade Studenten TUE

description

Introductie. Piet de Vries PinkRoccade Studenten TUE. Mijn Vuurdoop Verhaal uit de 60-er jaren. Omvangrijk Simulatieprogramma Twee tekens voor namen van variabelen Misbruik common data area Een goto in elke 3 statements Geen documentatie Opdracht: Omzetting van 35- naar 32-bits. - PowerPoint PPT Presentation

Transcript of Introductie

Page 1: Introductie

IntroductiePiet de VriesPinkRoccadeStudenten TUE

Page 2: Introductie

Mijn VuurdoopVerhaal uit de 60-er jarenOmvangrijk SimulatieprogrammaTwee tekens voor namen van variabelen Misbruik common data areaEen goto in elke 3 statementsGeen documentatieOpdracht: Omzetting van 35- naar 32-

bits

Page 3: Introductie

DoelstellingInzicht verkrijgen in

De praktijk van software-ontwikkeling tbv administratieve doeleinden

De rol die de theorie in de praktijk speelt De oorzaken van slechte

onderhoudbaarheid de gevolgen van slechte

onderhoudbaarheid

Page 4: Introductie

IndelingDe TheorieDe PraktijkOorzaken en GevolgenOnderhoudbaarheid

Waar gaat het eigenlijk om?

Page 5: Introductie

De TheorieGeen Cryptische CodeZwakke KoppelingVerbergen van techniekVerduidelijkende NaamgevingVerduidelijkend CommentaarSterke SamenhangModulariteit

Page 6: Introductie

De PraktijkSteekproef 40 bedrijvenSelecte steekproef, subjectieve

interpretatie, maar toch 90% Programmeurs kent theorie niet 9% Programmeurs past theorie niet toe 90% Code slecht onderhoudbaar 9% Code vrijwel niet onderhoudbaar 90% Management heeft er geen oog

voor 9% Management ziet geen oplossing

Page 7: Introductie

De PraktijkEen VoorbeeldBurgerzaken systeem

1 miljoen regels code, Cobol Initiele kosten 35 manjaar 15 jaar oud 120 manjaar onderhoud 10 minuten onderhoud per regel Voornamelijk wettelijke wijzigingen Veel achterstallig onderhoud

Page 8: Introductie

OorzakenHoge EisenSoftware moet

Doen wat er van verwacht wordt Niet meer en Niet minder Op (vaak zeer korte) tijd af zijn Binnen (een groot, maar veel te krap) budget Grondig gecontroleerd zijn Aan een groot aantal kwaliteitseisen voldoen Herbruikbaar zijn Onderhoudbaar zijn

Dit is zeldzaam moeilijk

Page 9: Introductie

OorzakenMulti-Disciplinaire AanpakOpleidingen

Filosoof, Mulo, Bioloog, Zeeman, Socioloog, Chemicus, Sexuoloog, Indisch Informaticus, Wiskundige, Melkcontroleur, Neerlandicus, Hobbyisten, Heao, Materiedeskundigen, Binnenhuisarchitect, Gesjeesden

Akelig weinig informaticiHoge eisen zijn niet waar te maken

Page 10: Introductie

GevolgenHomohuwelijkGevolgen voor GBA

Teksten aanpassen Controles aanpassen Beperkingen van selectie aanpassen Impliciete aannames aanpassen

Kosten: 2 manjaar

Page 11: Introductie

GevolgenGlobale GegevensFoutmelding: Soms worden wijzigingen

niet doorgegeven aan een gekoppeld systeem

Oorzaak: Als een ambtenaar zijn werkdag begint met het uitgeven van een paspoort, dan krijgt een globaal gegeven een verkeerde waarde

Kosten: 3 manweken van dé specialist voor het vinden van de oorzaak

Page 12: Introductie

OorzakenOpleiding is niet voldoendeEen goede programmeur heeft veel

ervaringOpleidingen kunnen geen goede

programmeurs afleverenBedrijven zijn er niet op ingericht om

medewerkers op te leiden Onvoldoende Belang Onvoldoende Omvang Onvoldoende Kennis

Page 13: Introductie

OorzakenDe ProgrammeurPreoccupatie met techniek (de

oplossing) ipv functionaliteit (de bedoeling)

Sterke en te vaak Onbekende Koppeling

Het ontbreken van aandacht voor de lezer

Zwakke Samenhang

Page 14: Introductie

GevolgenHet genie aan het werkCobol kent geen variabele arraylengteIk had verstand van operating systeemRoutine gemaakt voor dynamische

allocatie van geheugen Goed gestructureerdGoed gedocumenteerdHeeft nooit iemand iets van begrepen

Page 15: Introductie

GevolgenHandige schermroutineMaximaal 60 veldenVelden op volgnummer te benaderenGevolgen: veel herhaling van zetten en

vaak hernummering nodigOplossing: schermdefinitie in tabel

opslaan en generieke moduleGevolg: volstrekt onbegrijpelijke code

omdat de tabel niet generiek genoeg isKosten per jaar niet te becijferen

Page 16: Introductie

OorzakenVicieuze CirkelGoede programmeurs willen geen

slechte software onderhouden Zoeken heil in Nieuwbouw, Staffuncties,

Management, Consultancy, Technische software

De meeste onderhoudsprogrammeurs kennen de theorie niet

Slechte software wordt steeds slechter

Page 17: Introductie

OorzakenSpecialisatieOnderhoudsprogrammeurs

ingegraven specialisten op een subsysteem

onmisbaar en soms geniaal worden gewaardeerd als ze vertrokken zijn

Management beschikt niet over de voor sturing en

verbetering vereiste kennis verliest alle grip

Work-around zolang het duurt

Page 18: Introductie

Voorbeeld van een draakBegin is niet erg informatief

********************* A-000-HOOFD SECTION. *********************--------------------------HOOFD VERWERKING A-000. PERFORM A-000-INIT. * PERFORM B-000-INDIKATIE UNTIL EINDE. * PERFORM C-000-AFSLUITEN. * A-999. GOBACK.

Vervolg wordt er niet beter op

Page 19: Introductie

B-000. IF SGVW-A-NUMMER < SAVE-A-NR GO B-900. MOVE SGVW-KEY TO BEGIN-KEY. MOVE SGVW-A-NUMMER TO SAVE-A-NR AFI-A-NUMMER. MOVE 0 TO AFI-SL-INDIKATIE. MOVE 12 TO AFI-OP. B-100. CALL "BXXAFI" USING BXXAFI. IF AFI-FOUT MOVE 1 TO EINDE-SW GO B-999. IF AFI-A-NUMMER NOT = SAVE-A-NR IF SGVW-FOUT MOVE 1 TO EINDE-SW GO B-999 ELSE MOVE AFI-A-NUMMER TO SAVE-A-NR GO B-999. MOVE 13 TO AFI-OP. MOVE BEGIN-KEY TO SGVW-KEY. PERFORM LEES-WRK. IF SGVW-FOUT MOVE 1 TO EINDE-SW GO B-999. PERFORM C-000-VERWERK-INDIK. GO B-100. B-900. PERFORM LEES-SGVW-NEXT. IF SGVW-FOUT MOVE 1 TO EINDE-SW. B-999. EXIT.

Page 20: Introductie

C-000. MOVE AFI-AFN-INDIKATIE TO AFN-CODE. MOVE ZEROES TO LKAFN-SW. MOVE AFN-KEY TO LKAFN-REC. CALL "BXOAFN" USING DATA-AREA WORK-AREA. MOVE LKAFN-REC TO AFN-RECORD. IF AFN-CODE = ZERO GO C-999. C-050. MOVE ZERO TO BERICHT-SW. MOVE ZERO TO GV02-SW. C-100. MOVE ZERO TO WS-FASE. MOVE SGVW-KEY TO BEGIN-KEY-KAT. C-200. PERFORM I-000-INIT-KAT. IF ………… AND WS-FASE = 0 OR 2 GO C-400. C-300. PERFORM Z-000-AUTORISATIE. IF AUTORISATIE AND WS-FASE = 2 AND BERICHT PERFORM K-000-KATEGORIE-NUL. IF AUTORISATIE AND WS-FASE = 0 PERFORM L-000-HISTORIE-NUL. IF AUTORISATIE PERFORM E-000-BERICHT-AANMAKEN MOVE 1 TO BERICHT-SW KAT-SW. PERFORM LEES-SGVW-NEXT. C-400.

Page 21: Introductie

C-400. * Als SKM-NEW = SKM-OUD, dan verschilt het rubr.nr. eventueel IF SKM-NEW = SKM-OUD GO C-300. * Als SKM-NEW-TM-KAT = SKM-OUD-TM-KAT, dan zijn datum en volgnr * eventueel verschillend (in dat & vlgnr staan niet alleen data) IF SKM-NEW-TM-KAT = SKM-OUD-TM-KAT MOVE WS-FASE TO SV-FASE PERFORM D-000-CHECK-LEGE-KAT MOVE SV-FASE TO WS-FASE GO C-900. * Als WS-FASE nog geen 1 is, dan is er nog geen historie gelezen IF WS-FASE NOT = 1 GO C-500. MOVE 2 TO WS-FASE. MOVE BEGIN-KEY-KAT TO SGVW-KEY. PERFORM LEES-WRK. IF SGVW-FOUT MOVE 1 TO EINDE-SW GO C-900. GO C-200. C-500. * Als SKM-NEW-TM-MUTSRT= SKM-OUD-TM-MUTSRT, dan een andere kateg * bij dezelfde mutatiesoort (GV01 of GV02) * Init. nieuwe kategorie en vervolg binnen zelfde bericht PERFORM D-000-CHECK-LEGE-KAT. IF SKM-NEW-TM-MUTSRT = SKM-OUD-TM-MUTSRT GO C-100. C-900. IF BERICHT PERFORM F-000-IDENTIFIKATIE. * Als SKM-NEW-TM-A-NR = SKM-OUD-TM-A-NR, dan een andere kateg * Init. nieuwe kategorie en start voor een ander bericht IF SKM-NEW-TM-A-NR = SKM-OUD-TM-A-NR GO C-050. * C-999. EXIT.

Page 22: Introductie

OorzakenNieuwbouw helpt nietOplossing: onderhoudbare

nieuwbouw?Nieuwbouwprogrammeurs

onderhoudsprogrammeurskennen de theorie niet

externe leverancierskennen de theorie niethebben geen belang bij onderhoudbaarheid

Page 23: Introductie

OorzakenVerbetertraject helpt nietDe noodzaak wordt breed gevoeldEr wordt veel geinvesteerd in verbeteringMen richt zich vooral op management

processen, planning, beheersing, tijd, voorspelbaarheid, verantwoording, specificaties, contracten

Alleen nuttig als de techniek in orde isIn de praktijk is er vaak nauwelijks effect

Page 24: Introductie

CMM 5 zegt niet allesWat gebeurt hier?

MOVE H01-TIME TO SELEKTIE-NR-5385. R20-10. MOVE 01 TO FUNKTIE-5385. CALL "B5385D" USING LINKAGE-5385. IF STATUS-5385 = ZEROES ADD 1 TO H01-SS IF H01-SS = 99 ADD 1 TO H01-MM MOVE ZEROES TO H01-SS END-IF IF H01-MM = 99 ADD 1 TO H01-HH MOVE ZEROES TO H01-MM MOVE ZEROES TO H01-SS END-IF MOVE H01-TIME TO SELEKTIE-NR-5385 GO R20-10. MOVE H01-TIME TO SEL-SELEKTIE-NUMMER.

Page 25: Introductie

CMM 5 zegt niet allesTwee fouten opgelost

MOVE H01-TIME TO SELEKTIE-NR-5385 * We need to lock our entry in 5385 * Try to write a dummy record with the current time as the key * If not succesfull keep trying with a second more MOVE 05 TO FUNKTIE-5385. CALL "B5385D" USING LINKAGE-5385. PERFORM UNTIL STATUS-5385 = ZEROES ADD 1 TO H01-SS IF H01-SS = 99 ADD 1 TO H01-MM MOVE ZEROES TO H01-SS END-IF IF H01-MM = 99 ADD 1 TO H01-HH MOVE ZEROES TO H01-MM MOVE ZEROES TO H01-SS END-IF MOVE 05 TO FUNKTIE-5385 CALL "B5385D" USING LINKAGE-5385 END-PERFORM. MOVE H01-TIME TO SEL-SELEKTIE-NUMMER.

Page 26: Introductie

OnderhoudbaarheidEen OrganisatieProbleem Onderhoud wordt gedaan door Mensen

Wat is het belang van de programmeur? Brood op de plank Een excuus, waardoor fouten niet verwijtbaar zijn Kwaliteiten ten toon spreiden

Wat is het belang van de projectleider? Risicoreductie Korte termijnresultaat

Wat is het belang van de manager? Draagvlak Voorkomen van mislukking op middenlange termijn Keuze: Kop in het zand of Nek in de strop

Wat is het belang van de klant? Wat is het belang van het bedrijf?

Page 27: Introductie

OnderhoudbaarheidEen Sociaal ProbleemOnderhoud wordt gedaan voor

Mensen Onderhoudbaar programmeren =

Communiceren met je collegaInvesteren ten behoeve van je collegaOverzicht en Inzicht bewerkstelligenRekening houden met menselijke

zwakheden

Page 28: Introductie

OnderhoudbaarheidDe Heilige GebodenFocus op de basis van de theorie

Software moet goed Leesbaar zijn, begrijpelijk uitleggen hoe een taak uitgevoerd moet worden

Complexiteit moet gereduceerd zijn tot een niveau waarop de Lezer Overzicht heeft over de materie

Documentatie moet in beide richtingen Traceerbaar zijn