1 / 28

Introductie

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.

roxy
Download Presentation

Introductie

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Introductie • Piet de Vries • PinkRoccade • Studenten TUE

  2. Mijn VuurdoopVerhaal 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

  3. Doelstelling • Inzicht 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

  4. Indeling • De Theorie • De Praktijk • Oorzaken en Gevolgen • Onderhoudbaarheid • Waar gaat het eigenlijk om?

  5. De Theorie • Geen Cryptische Code • Zwakke Koppeling • Verbergen van techniek • Verduidelijkende Naamgeving • Verduidelijkend Commentaar • Sterke Samenhang • Modulariteit

  6. De PraktijkSteekproef 40 bedrijven • Selecte 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

  7. De PraktijkEen Voorbeeld • Burgerzaken 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

  8. OorzakenHoge Eisen • Software 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

  9. OorzakenMulti-Disciplinaire Aanpak • Opleidingen • Filosoof, Mulo, Bioloog, Zeeman, Socioloog, Chemicus, Sexuoloog, Indisch Informaticus, Wiskundige, Melkcontroleur, Neerlandicus, Hobbyisten, Heao, Materiedeskundigen, Binnenhuisarchitect, Gesjeesden • Akelig weinig informatici • Hoge eisen zijn niet waar te maken

  10. GevolgenHomohuwelijk • Gevolgen voor GBA • Teksten aanpassen • Controles aanpassen • Beperkingen van selectie aanpassen • Impliciete aannames aanpassen • Kosten: 2 manjaar

  11. GevolgenGlobale Gegevens • Foutmelding: 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

  12. OorzakenOpleiding is niet voldoende • Een goede programmeur heeft veel ervaring • Opleidingen kunnen geen goede programmeurs afleveren • Bedrijven zijn er niet op ingericht om medewerkers op te leiden • Onvoldoende Belang • Onvoldoende Omvang • Onvoldoende Kennis

  13. OorzakenDe Programmeur • Preoccupatie met techniek (de oplossing) ipv functionaliteit (de bedoeling) • Sterke en te vaak Onbekende Koppeling • Het ontbreken van aandacht voor de lezer • Zwakke Samenhang

  14. GevolgenHet genie aan het werk • Cobol kent geen variabele arraylengte • Ik had verstand van operating systeem • Routine gemaakt voor dynamische allocatie van geheugen • Goed gestructureerd • Goed gedocumenteerd • Heeft nooit iemand iets van begrepen

  15. GevolgenHandige schermroutine • Maximaal 60 velden • Velden op volgnummer te benaderen • Gevolgen: veel herhaling van zetten en vaak hernummering nodig • Oplossing: schermdefinitie in tabel opslaan en generieke module • Gevolg: volstrekt onbegrijpelijke code omdat de tabel niet generiek genoeg is • Kosten per jaar niet te becijferen

  16. OorzakenVicieuze Cirkel • Goede 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

  17. OorzakenSpecialisatie • Onderhoudsprogrammeurs • 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

  18. 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

  19. 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.

  20. 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.

  21. 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.

  22. OorzakenNieuwbouw helpt niet • Oplossing: onderhoudbare nieuwbouw? • Nieuwbouwprogrammeurs • onderhoudsprogrammeurs • kennen de theorie niet • externe leveranciers • kennen de theorie niet • hebben geen belang bij onderhoudbaarheid

  23. OorzakenVerbetertraject helpt niet • De noodzaak wordt breed gevoeld • Er wordt veel geinvesteerd in verbetering • Men richt zich vooral op management • processen, planning, beheersing, tijd, voorspelbaarheid, verantwoording, specificaties, contracten • Alleen nuttig als de techniek in orde is • In de praktijk is er vaak nauwelijks effect

  24. 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.

  25. 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.

  26. 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?

  27. OnderhoudbaarheidEen Sociaal Probleem • Onderhoud wordt gedaan voor Mensen • Onderhoudbaar programmeren = • Communiceren met je collega • Investeren ten behoeve van je collega • Overzicht en Inzicht bewerkstelligen • Rekening houden met menselijke zwakheden

  28. OnderhoudbaarheidDe Heilige Geboden • Focus 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 LezerOverzicht heeft over de materie • Documentatie moet in beide richtingen Traceerbaar zijn

More Related