RIS316878 bijlage
Tekst van het document
Portfolioscan DPZ voor Gemeente Den Haag Eindpresentatie voor IT-board DPZ Reinier Vis, Ken Vernaillen, Niels van der Zwan
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
26 JUNI 2023
Inhoudsopgave
1. Introductie en managementsamenvatting 2. Bevindingen 3. Conclusies 4. Advies
Appendix: •
Checklist beheersbaarheid softwareontwikkeling
•
Samenvattingen per systeem
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
2
// INTRODUCTIE
Achtergrond en doel van het onderzoek
Achtergrond
Doel van dit onderzoek
§ De dienstverlening van de dienst Publiekszaken lag in 2022 onder het verwachte niveau. De oorzaken daarvan lagen zowel op organisatorisch, proces en technisch vlak.
§ Het SIG onderzoek richt zich op een quickscan van (de technische kwaliteit van) de systemen en het bijbehorende technisch beheer. Hiermee wordt inzicht verkregen in de risico’s in het bestaande systeemlandschap, het benodigde structurele beheer, de benodigde noodzakelijke vervanging voor de komende jaren.
§ In de Raad is daarom een motie aangenomen om een onderzoek te doen naar de organisatie, processen en de systemen van Dienst Publiekszaken (DPZ). De uitkomsten zullen de basis vormen voor een geïntegreerd verbeterplan van de betrokken organisatieonderdelen voor de middellange en lange termijn. § Belangrijke doelstelling van het plan is de verbetering van de dienstverlening aan burgers, ondernemers en bezoekers van de stad.
§ Het uiteindelijke doel voor de gemeente Den Haag is om op basis daarvan te komen tot een gebalanceerde aanpak van beheer en vernieuwing om de continuïteit van de bestaande systemen te garanderen.
Deze quickscan richt zich op 15 door Den Haag geselecteerde systemen van DPZ en betreft daarmee de sectoren Klantcontact Center (KCC - inclusief Online), Belastingzaken, Bibliotheek en Stadsdelen & Wijken. // SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
3
// INTRODUCTIE
Onderzoeksvragen SIG
Het vaststellen van de kwaliteit en de risico's van de informatiesystemen bij de dienst Publiekszaken middels een breed onderzoek op het gebied van Stabiliteit, Performance efficiency, Onderhoudbaarheid, Toekomstvastheid en Efficiency. Om de hoofdvraag te beantwoorden, zijn de volgende deelvragen geformuleerd per informatiesysteem. • Wat is de Onderhoudbaarheid (de technische kwaliteit van het systeem op basis van de ISO 25010-norm voor softwarekwaliteit) van de verschillende informatiesystemen? • In hoeverre passen de ontwikkelteams development best practices toe in hun ontwikkelproces? • Wat is het (structureel) benodigde technisch beheer per applicatie en het daarbij behorende budget? • Wat is de benodigde inspanning om het systeem/portfolio te onderhouden? • Welke risico’s zijn aanwezig zijn op het gebied van Stabiliteit, Performance efficiency, Toekomstvastheid en Efficiency? • Welke architectuur/ontwerprisico's zijn aanwezig in de systemen die de uitvoering van de huidige roadmap in de weg kunnen staan? • Wat is de benodigde vervanging voor de komende jaren? // SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
4
// INTRODUCTIE
Aanpak
1. Er zijn 15 systemen geselecteerd door de gemeente Den Haag voor deze quickscan, van verschillende onderdelen van DPZ. Drie van deze systemen (Key2Burgerzaken, DigiDoc en de Open* systemen) bestaan uit meerdere applicaties. Van de 15 systemen is de broncode opgevraagd bij de leveranciers, van vijf systemen is de broncode niet gedeeld met SIG. 2. Naast de analyse van de ontvangen broncode is er per leverancier een interview uitgevoerd om meer te weten te komen over het gebruik van de systemen, het ontwikkelproces en de toekomstvisie t.a.v. de systemen. 3. De uitkomsten van de interviews en de onderhoudbaarheidsanalyse zijn samengevat en gedeeld met de leveranciers ter validatie. 4. Op basis van deze uitkomsten is dit slidedeck opgesteld met de resultaten, ter validatie met de stakeholders bij de gemeente Den Haag. 5. Op basis van de voorlopige eindresultaten is er een rapport opgesteld voor de raad en dit eindrapport voor de afdeling I&A en ITBoard DPZ.
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
5
// INTRODUCTIE
Aanpak van het onderzoek 10 systemen
SIG tooling
Broncode
15 systemen
Rapp./Presentatie
15 systemen Systeemcontext/ -karakteristieken
1. Verzamelen broncode
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
Interviews
• Systeemeigenschappen • (Voorlopige) conclusies • Advies
2. Portfolioanalyse
6
// INTRODUCTIE
Aanpak voor vaststellen van onderhoudbaarheid en herbouwwaarde
§ De onderhoudbaarheid sterrenrating is gebaseerd op geautomatiseerd broncode analyse
Rating
Betekenis
§ SIG meet 9 eigenschappen van broncode zoals gedefinieerd door de SIG/TÜViT Evaluation Criteria for Trusted Product Maintainability.
HHHHH
5% best onderhoudbare systemen
HHHHI
Volgende 30%
HHHII
Volgende 30% (marktgemiddeld)
§ De uitkomsten worden vergeleken in de SIG Benchmark wat resulteert in een sterrenrating
HHIII
Volgende 30%
HIIII
5% minst onderhoudbare systemen
> Het volume van de software wordt bepaald als de herbouwwaarde in mensjaren ontwikkelinspanning, op basis van industriegemiddeldes en de SIG benchmark. Dit omvat technisch ontwerp, bouw en technisch testen. > Benodigd onderhoud kan vervolgens bepaald worden op basis van het van het SIG Cost Estimation Model • Het aantal FTE programmeurs benodigd voor onderhoud volgt uit de combinatie van de toegepaste technologie, de bouwwaarde en de onderhoudbaarheid van het systeem • Standaard onderhoud gaat uit van een combinatie van adaptief, correctief en preventief onderhoud. Gemiddeld (vanuit de SIG benchmark) komt dit neer op 15% verandering (t.o.v. de omvang) jaarlijks in een systeem. // SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
7
// INTRODUCTIE
De 15 DPZ systemen in scope bestaan uit 25 applicaties*, van 20 applicaties is broncode ontvangen Naam
Leverancier
Broncode
1
V-smart Air versie 5.0 SP5
Axiell
N
2
EasyAccount+ 8.4.1
Xafax
N
3
MijnDenHaag.nl (gebaseerd op GX Xperiencentral) 10.33.0
Gemeente Den Haag
J
4
KIM versie 3.3
Kodision
N
5
TripleForms versie 4.3
Kodision
N
6
Smartdocuments 2.21.13.03
Smartdocuments
N
7
KBN6
SLTN
J
8
Mijn Haagse Bezwaarzaken (MHZ) 2022.2.17.1 / Haagse Bezwaarzaken 2022.2.17.1
SLTN
J
9
Keycloak 17.0.1
‘Open Source’
J
10
GZAC fd 9.12.0 / sd 9.20.0 incl. Valtimo (o.b.v. Camunda)
Ritense (‘open source’)
J
11
Denhaag.nl (o.b.v. Wordpress6.0)
Acato
J
12
DigiDoc ODW3.3A (patch-GBD, PL/SQL-GBD, ODW-GBD)
OIS
J
13
Key2Burgerzaken (Portaal, E-diensten, Key2Burgerzaken, Riskprofiles, ‘Nieuwe Frontend’)
Centric
J
14
Open* systemen (OpenFormulieren, OpenNotificaties, OpenZaak, OpenKlant, ObjectenAPI)
Maykin Media (‘open source’)
J
15
IBS
Gemeente Den Haag
J
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
*) Een applicatie is een stuk software door een leverancier wordt onderhouden met een specifiek doel
8
// MANAGEMENTSAMENVATTING
Houd de software actueel en verbeter inzicht in de verschillende systemen van het DPZ portfolio
De afdeling DPZ van de gemeente Den Haag wil tot een gebalanceerde aanpak van beheer en vernieuwing komen om de continuïteit van bestaande systemen te garanderen. Om hierin te ondersteunen is door SIG een quickscan uitgevoerd van (de technische kwaliteit van) 15 door Den Haag geselecteerde systemen inclusief het bijbehorende technisch beheer. Hiermee wordt inzicht verkregen in de risico’s in het bestaande systeemlandschap, het benodigde beheer en de benodigde noodzakelijke vervanging voor de komende jaren. Het onderzoek heeft de volgende hoofdconclusies opgeleverd: 1.
Onderhoudbaarheid van de 10 systemen waarvan broncode is ontvangen vormt momenteel geen risico; enkele applicaties gebruiken verouderde versies en technologieën De geschatte applicatiebeheerlast (bij 100% maatwerk) van de de systemen waarvan broncode is ontvangen, bedraagt ±73 FTE
§ 2.
De grote verscheidenheid aan leveranciers brengt kennisrisico’s met zich mee; best-practices in het ontwikkelproces worden niet bij alle leveranciers even goed gevolgd
3.
DPZ maakt gebruik van 4 zaaksystemen. Rationalisatie van deze systemen loopt reeds, maar kent een aantal concrete aandachtspunten
4.
Het merendeel van de hosting wordt, on-premise, in eigen beheer uitgevoerd. De beschikbare informatie over de capaciteit, de onderliggende afspraken (SLA’s), de voorzieningen en mogelijke performance- en schaalbaarheidsrisico’s is gefragmeneerd. Hierdoor is niet vast te stellen of er urgente performance en stabiliteitsrisico’s zijn; uit de verschillende interviews zijn geen urgente signalen ontvangen. Leveranciers investeren vaak meer in SAAS oplossingen dan in bestaande on-premise oplossingen.
Advies 1.
Houd de software en onderliggende frameworks actueel; houd zicht op gebruikte verouderde technologieën
2.
Verbeter kennisborging (o.a. voor technisch beheer) van de systemen en applicaties (ook bij leveranciers), verbeter de gevolgde ontwikkel best-practises
3.
Gebruik een gedegen aanpak met voldoende verandercapaciteit (bijv. op basis van de omvang te vervangen applicaties) bij rationalisatie van de zaaksystemen en borg performance m.n. voor opvragingen bij de bron; zorg samen met VNG voor voldoende granulariteit van de onderliggende services (wordt inmiddels geadresseerd)
4.
Verzamel en bundel periodiek de actuele informatie over het DPZ portfolio (o.a. over stabiliteit en performance) en maak deze informatie eenduidig beschikbaar. Heroverweeg de vorm (on-premise of SAAS) waarin het systeem wordt afgenomen en de hosting die wordt afgenomen.
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
9
Inhoudsopgave
1. Introductie en managementsamenvatting 2. Bevindingen 3. Conclusies 4. Advies
Appendix: •
Checklist beheersbaarheid softwareontwikkeling
•
Samenvattingen per systeem
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
10
// BEVINDINGEN
De verschillende onderzochte systemen ondersteunen 3 sub-domeinen van DPZ
11. Denhaag.nl 3. mijnDenHaag
15. IBS
10. GZAC 12. DigiDoc* ODW
8. Haagsebezwaarzaken
14. Open* systemen Belastingen
4. KIM
6. Smartdocuments
5. TripleForms
9. Keycloak 7. KBN
KCC (incl. on-line)
13. Centric (Key2)Burgerzaken*
1. VSmart 2. EasyAccount+ Bibliotheek / collecties
De onderzochte systemen ondersteunen de processen in verschillende sub-domeinen van DPZ, nummering o.b.v. lijst in eerdere slide
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
*) Deze systemen bestaan uit meerdere applicaties
11
// BEVINDINGEN - LIFECYCLE
De systemen bevinden zich in verschillende fasen van de software lifecycle
11. Denhaag.nl 10. GZAC
3. mijnDenHaag Rationalisatie
15. IBS 12. DigiDoc* ODW
8. Haagsebezwaarzaken
14. Open* systemen Belastingen
4. KIM
6. Smartdocuments
5. TripleForms
9. Keycloak 7. KBN
KCC (incl. on-line)
13. Centric (Key2)Burgerzaken*
1. VSmart 2. EasyAccount+
Software lifecycle: 1. Ontwerp 2. Ontwikkeling 3. Uitrol / Uitbreiding 4. (Regulier) Onderhoud 5. End of Life
Bibliotheek / collecties
Systemen die ‘End of Life’ zijn dienen op termijn vervangen te worden // SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
*) Deze systemen bestaan uit meerdere applicaties
12
// BEVINDINGEN
Omvang en onderhoudbaarheid van de 20 applicaties waarvan broncode is ontvangen
HHHII 41 mensjaar
Legenda
HHHII 39 mensjaar
HHHHH HHHII
Keycloak
HHHII 164 mensjaar
HHIII 113 mensjaar**
HHHHI 20 mensjaar
Key2Burgerzaken ‘Nieuwe Frontend’ Yellowstone
Portaal Key2Burgerzaken
HHHII 11 mensjaar MijnDenHaag.nl
HHHII 10 mensjaar KBN6
HHHHI 15 mensjaar IBS
Key2Burgerzaken
GZAC
HIIII
HHHII 11 mensjaar HaagseBezwaarzaken
HHHII 7 mensjaar
HHHII 6 mensjaar
E-diensten Key2Burgerza OpenForm ken ulieren Pa… OpenZaak
HHHII 9 mensjaar Denhaag.nl
Riskpr ofiles
O O Plsql-gdb
• Elk vlak links representeert een systeem. • De grootte van het vlak komt overeen met het volume van het systeem • De kleur geeft de onderhoudbaarheid aan (schaal zie boven)
O O
*) Geen code ontvangen voor KIM, TripleForms, Smartdocuments, Vsmart en EasyAccount+ // SOFTWARE IMPROVEMENT GROUP VERTROUWELIJK **) Sinds de detailmeting in maart 2023 is het volume met 45 MJ afgenomen doordat de oude frontend niet meer wordt meegenomen 13
Plsql-gdb // BEVINDINGEN Objects-API
Patch-gdb OpenNotificaties
Onderhoudbaarheid t.o.v. de SIG benchmark
SIG Dataset Keycloak GZAC KBN6 OpenFormulieren Plsql-gdb Objects-API
HHHHH
IBS Portaal Key2Burgerzaken MijnDenHaag.nl Denhaag.nl Riskprofiles Patch-gdb OpenNotificaties
Key2Burgerzaken Key2Burgerzaken Yellowstone ‘Nieuwe Frontend’
HaagseBezwaarzaken E-diensten Key2Burgerzaken OpenZaak OpenKlant ODW-gdb
HHHHI ONDERHOUDBAAR
ONDERHOUDBAAR
OpenKlant ODW-gdb
HHHII
HHIII Positieve uitschieter Negatieve uitschieter HIIII 0 // SOFTWARE IMPROVEMENT GROUP
1 VERTROUWELIJK
10
0
100
1
1.000 10
CODEVOLUME (MENSJAREN HERBOUWWAARDE) OP LOGARITMISCHE SCHAAL
100 14
// BEVINDINGEN OVER HET PORTFOLIO
De totale herbouwwaarde van de systemen met broncode bedraagt ±455 mensjaar (MJ)
De beheerlast* voor de systemen van DPZ waarvan broncode is ontvangen bedraagt ±73MJ per jaar (bij 100% custom code voor DH) § De onderhoudbaarheid van alle systemen, met uitzondering van DigiDoc en Key2Belastingen (backend) is minimaal marktgemiddeld (HHHII) § Een aantal recent ontwikkelde systemen (GZAC, een aantal Open* systemen, Key2Burgerzaken ‘Nieuwe Frontend’) zijn boven marktgemiddeld onderhoudbaar § Er wordt binnen het portfolio gebruik gemaakt van een veelvoud van technologieën, de volgende systemen bevatten verouderde technologieën met een hoog risico. Een hoog risico (objectief, zonder context) betekent niet dat deze technologie direct moet worden vervangen, maar wel aandacht behoeft § Key2Burgerzaken: Cobol, ASP.NET (omvang 113MJ) § IBS: Cobol/JCL (omvang 164MJ) § Haagsebezwaarzaken: ASP.NET (omvang 11MJ) § mijnDenhaag.nl: JSP (omvang 11MJ)
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
*) Beheerlast: benodigde capaciteit voor een combinatie van additief, correctief en preventief onderhoud
15
// BEVINDINGEN OVER HET PORTFOLIO
Gebruikte technologieën Naam
Vastgestelde technologie
1
V-smart
Caché* (Intersystems Iris)
2
EasyAccount+
Java, MySQL*
3
MijnDenHaag.nl
Java, JSP, HTML
4
KIM
ASP.NET, C#, HTML*
5
TripleForms
ASP.NET, C#, HTML*
6
Smartdocuments
Java*
7
KBN6
C#, T-SQL
8
HaagseBezwaarzaken
C#, ASP.NET, CSS
9
Keycloak
Java
10
GZAC
Java, Javascript, Typescript
11
Denhaag.nl
Javascript, PHP (o.b.v. Wordpress 6.0)
12
DigiDoc ODW3.3A (@@)
PL/SQL, Java
13
(Key2)Burgerzaken Portaal Key2Burgerzaken E-diensten Key2Burgerzaken Riskprofiles ‘Nieuwe Frontend’
PL/SQL, Cobol, C#, Oracle Forms C#, Razor, Javascript C#, Razor, C#, Typescript, Angular Typescript, Angular, Sass
14
OpenFormulieren, OpenNotificaties, OpenZaak, OpenKlant, Objects-API
Python, SASS, Django
15
IBS
Cobol, DB2
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
*) Uit het interview
Incourante of verouderde technologie
16
// BEVINDINGEN OVER HET PORTFOLIO
Portfolio kent een grote diversiteit in functionaliteiten, technologieën en leveranciers
Testautomatisering en applicatiemonitoring ontbreekt bij veel (met name de oudere) applicaties § Deze helpen bij het sneller diagnosticeren en oplossen van fouten. Een aantal zaaksystemen (mijndenhaag.nl, e-Portal Key2burgerzaken, KIM, Haagsebezwaarzaken, GZAC/OpenZaak) met vergelijkbare functionaliteit (kunnen) worden gerationaliseerd. TripleForms heeft een vergelijkbare functionaliteit als OpenForms. § Het nieuwe doelplatform (GZAC i.c.m. OpenZaak) is nog in ontwikkeling, het daadwerkelijk omzetten van de bestaande zaaktypes zal tijd vergen en kent een aantal aandachtspunten 90% van de op broncodeniveau onderzochte systemen maken gebruik van verouderde libraries § 90% van de systemen maakt gebruik van libraries met bekende kwetsbaarheden
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
17
// BEVINDINGEN
Meerendeel van de applicaties wordt on-premise gehost door ITB (gemeente Den Haag)*
1.
V-smart van Axiell is een extern gehoste applicatie bij Actacom
2.
Easy Account Plus staat on premise in productie. Staat ook in NOK DPZ 2021 (de laatst gezamenlijk vastgestelde NOK) en afgerekend als DSA**
3.
ExperienCentral (GX) on premise gehost door ITB, staat in NOK DPZ 2021
4.
KIM v 3.3.85 (Kodision) on premise gehost door ITB en in 2021 in NOK DPZ opgenomen als DSA
5.
TriplEforms v 4.1.64 (Kodision) on premise gehost door ITB en in 2021 in NOK DPZ opgenomen als DSA
6.
Smart Documents v 2.20.09.04 wordt on premise gehost door ITB, in NOK DSO 2021 opgenomen als DSA;
7.
KBN V6 wordt on premise gehost door ITB
8.
Bezwaarzaken is onderdeel MHZ, wordt on premise gehost door ITB.
9.
Hosting Keycloack is onbekend (SIG: deze applicatie is onderdeel van de ZGD uitrol)
10. Ritense (gzac) draait op de gemeentelijke Azure (cloud) Kubernetes omgeving 11. Denhaag.nl (o.b.v. Wordpress - Acato): wordt gehost in de Azure Cloud van de gemeente (naast een on premise versie bij team Linux) 12. DigiDoc (OIS) on premise gehost door ITB, staat in DPZ NOK 2021 13. Centric (Key2)Burgerzaken wordt on premise gehost (m.u.v. eDiensten - SAAS) door ITB, staat in DPZ NOK 2021 14. Maykin Media (open*) software draait op de gemeentelijke Azure (cloud) Kubernetes omgeving 15. IBS draait op IBM platform dat wordt afgenomen via Extravar (cold standby beschikbaar, storage based replicatie)
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
*) Bron: mail “Onderzoek naar hosting applicaties DPZ” (28 maart 2023) **) Dienst Specifieke Applicatie 18
// HOOFDBEVINDINGEN TOEKOMSTVASTHEID PER APPLICATIE
Samenvatting van de aandachtspunten/risico’s per systeem Naam
Tussentijdse aandachtspunten/risico’s
1
V-smart
Kennis van de gebruikersorganisatie op kritieke pad van de invoering. ‘Exotische' technologie caché, waarborgen bij de leverancier
2
EasyAccount+
Borging beheer bij de leverancier (t.a.v. libraries, kennis en test automatiseren), is dit systeem op termijn nog relevant?
3
MijnDenHaag.nl
Uitfaseren, wordt vervangen door Open applicaties (klantportaal). Einddatum is dec 2027, i.v.m. afhankelijkheid IBS. Maakt gebruik van aantal verouderde technologieën en (dure) GX licentie
4
KIM
Uitfaseren, wordt vervangen door GZAC/Open applicaties. Einddatum is dec 2024
5
TripleForms
Uitfaseren, wordt vervangen door OpenForms. Einddatum uiterlijk dec 2024 ivm relatie vervanging Parkeersysteem.
6
Smartdocuments
Leverancier ontwikkelt actief aan een SAAS oplossing welke mogelijk een optie is voor Den Haag, huidige versie maakt gebruik van niet meer ondersteunde Google WebToollkit (GWT).
7
KBN6
Refactoring of vernieuwing om toekomstvastheid te vergroten, huidige budget lijkt onvoldoende om technische schuld te beperken
8
HaagseBezwaarzaken
Uitfaseren, het tonen van bezwaren wordt vervangen door Open applicaties (klantportaal), einddatum is onbekend, gebruikt aantal verouderde technologieën. De backend niet beoogd in Open applicaties
9
Keycloak
Nieuw bij gemeente Den Haag, hosting is op Azure Kub. wordt door ADM uitgevoerd, onderdeel van de ZGD-platform implementatie, de onderzochte Keycloak versie bevat veel verouderde bibliotheken en een aantal gekende kwetsbaarheden
10
GZAC
Is recent geïmplementeerd, extra implementatie lijkt noodzakelijk om functionaliteit van de uit te faseren applicaties te vervangen. De gebruikte standaarden zijn nog in ontwikkeling, eigenaarschap van de ZGW-standaarden ligt bij VNG. G4 plus Dimpact koploperstrategie
11
Denhaag.nl
PHP/Wordpress is een veelgebruikte technologie, maar vraag is of deze technologie passend is voor de gemeentelijke/corporate omgeving, maatwerk zeer verspreid
12
DigiDoc
Bewezen doch outdated technologie, gebruikt verouderd ODW framework, mogelijkheid tot rationalisatie door vervanging document-management systeem
13
Key2Burgerzaken
Gebruik van aantal verouderde technologieen, bestaande Oracle Forms (interne) frontend wordt vervangen. Leverancier is, middels deelvernieuwing, op zoek naar structurele verbeteringen en voorziet ontwikkeling in SAAS/Cloud hosting ter vervanging van bestaande on-premise installaties. Rationalisatie van E-Forms mogelijk?
14
Open* systemen
Wordt momenteel geimplementeerd. De onderliggende standaarden zijn nog in ontwikkeling, eigenaarschap van de standaarden ligt bij VNG
15
IBS
Verouderde technologie, echter applicatie met bewezen staat van dienst. Kennis borgen van gebruikte technologie en uit dienst tredende medewerkers. Onderzoek, met behoud van de kern van het systeem, naar gefaseerde aanpak om potentieel verouderde delen te kunnen vernieuwen.
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
19
Inhoudsopgave
1. Introductie en managementsamenvatting 2. Bevindingen 3. Conclusies 4. Advies
Appendix: •
Checklist beheersbaarheid softwareontwikkeling
•
Samenvattingen per systeem
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
20
// CONCLUSIES
Onderhoudbaarheid vormt geen risico, enkele applicaties gebruiken verouderde technologieën
§ De totale herbouwwaarde van de op broncode onderzochte systemen bedraagt ±455 mensjaar (MJ), de technische beheerlast voor een dergelijk portfolio bedraagt ±73MJ per jaar (bij 100% custom software voor Den Haag) § Het merendeel van de systemen heeft minimaal een HHHII onderhoudbaarheid (marktgemiddeld), deze onderhoudbaarheid vormt geen risico voor het beheer van de applicaties § Een aantal nieuw ontwikkelde applicaties scoren boven markt-gemiddeld § Oudere, veelal grotere systemen scoren onder markt-gemiddeld § Een aantal systemen maakt gebruik van niet gangbare of verouderde technologie § IBS is ontwikkeld in Cobol, deze technologie wordt gezien als een verouderd waarvoor kennis steeds moeilijker te vinden is in de markt § ASP.NET technologie (o.a. Haagsebezwaarzaken) is verouderd en dient te worden vervangen § Bibliotheeksysteem Vsmart is geschreven in Caché technologie, dit is geen mainstream technologie
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
21
// CONCLUSIES
Er is een grote verscheidenheid aan leveranciers, best-practices niet altijd gevolgd
§ Het portfolio kent een grote onderscheid in applicaties (omvang/kwaliteit) en bijbehorende leveranciers (zowel intern als extern), dit bemoeilijkt het managen van de leveranciers en het complete portfolio § Vernieuwingen en verbeteringen van de applicaties door de leveranciers zijn niet altijd bekend bij de gemeente § In sommige gevallen wordt gebruik gemaakt van een verouderde versie binnen de gemeente Den Haag § Kennis van (oudere) applicaties bij leveranciers is soms beperkt tot een kleine groep ontwikkelaars § Moderne ontwikkelpraktijken (best-practices) worden niet bij alle leveranciers even goed gevolgd: 1. Automatische testen worden onvoldoende gebruikt 2. Er wordt gebruik gemaakt van verouderde technologieën 3. Inzicht in kwetsbaarheden ontbreekt (ook van de door de leverancier gebruikte bibliotheken) 4. Veel van de door de leverancier gebruikte libraries kennen nieuwere versies 5. Er wordt soms gebruik gemaakt van closed source componenten, terwijl een open-source alternatief beschikbaar is
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
22
// CONCLUSIES
DPZ maakt gebruik van vier zaaksystemen, rationalisatie is mogelijk en loopt reeds
§ MijnDenHaag.nl, KIM (en bijbehorende formulierengenerator TripleForms), HaagseBezwaarzaken en GZAC (i.c.m. met de open systemen) leveren vergelijkbare zaakafhandelings-functionaliteit § Er vindt momenteel rationalisatie plaats naar GZAC als (open-source) doelplatform o.b.v. Common Ground § Dit kan een positieve invloed hebben op de onderhoudbaarheid, de toekomstvastheid en de efficiency, maar dit behoeft continue aandacht § GZAC i.c.m. de Open systemen bevat nog niet alle functionaliteit om bestaande systemen te vervangen en de huidige werkwijze te ondersteunen, een aantal aandachtpunten zijn onderkend: § De GZAC implementatie wordt nog beperkt gebruikt in productie met representatieve data § (Alle) gegevens ophalen bij de bron (conform Common Ground uitgangspunten) kan negatieve effecten hebben op de performance; dit wordt momenteel geadresseerd doordat GZAC de data synchroniseert naar de ZGW api’s vanuit een eigen GZAC/valtimo database. § De granulariteit van de API’s is een aandachtspunt in de huidige implementatie. Eigenaarschap van de API’s ligt bij de VNG, waardoor wijzigingen tijd kosten. Dit wordt momenteel geadresseerd doordat G4 + Dimpact een koploper-strategie voeren; als oplossingsrichting wordt een database als ‘cache’ ingericht. Dit maakt ook zoeken, filteren en functionele API’s mogelijk. // SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
23
// CONCLUSIES
Het merendeel van de hosting is on-premise, actueel beeld van de hosting is gefragmenteerd
§ Ondanks dat 95% van de (productie)hosting bij de gemeente Den Haag on-premise door ITB in eigen beheer wordt uitgevoerd, is het lastig om een actueel beeld te krijgen van de beschikbare capaciteit, de onderliggende afspraken (SLA’s), de voorzieningen en mogelijke performance en schaalbaarheidsproblemen. De beschikbare informatie is gefragmeneerd en het is niet vast te stellen (tijdens de interviews en uit rapportages ) of er urgente performance en stabiliteitsrisico’s bestaan. Daarnaast zijn volgende aandachtspunten aangedragen: § On-premise hosting maakt aansluiting op de CI/CD pipelines van leveranciers lastig § DevOps is (mede daardoor) vaak nog niet mogelijk § Beschikbaarheid binnen ITB van key personeel (voor leveranciers) is soms lastig § Er zijn formele (incident)procedures, echter veel leveranciers hebben ook directe lijnen buiten incidentensysteem om, waardoor er sneller kan worden geschakeld § Veel leveranciers investeren meer in SAAS oplossingen dan in bestaande on-premise oplossingen; bij een SAAS oplossing is de gebruikte versie altijd actueel
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
24
Inhoudsopgave
1. Introductie en managementsamenvatting 2. Bevindingen 3. Conclusies 4. Advies
Appendix: •
Checklist beheersbaarheid softwareontwikkeling
•
Samenvattingen per systeem
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
25
// ADVIES
Houd de software actueel; houd zicht op verouderde technologieen
§ Betrek leverancier actief bij het beheer van de applicaties; blijf actief actuele en recente versies installeren (middels updates van de software en de onderliggende frameworks) § Houd actief (minimaal jaarlijks) contact met leveranciers (ook na opdrachtverstrekking en uitrol), leg contactpersonen vast en vraag regelmatig inzicht in de nieuwe ontwikkeling en toekomstvisie § Vraag rapportages over de afgesproken servicelevel en incidenten (als onderdeel van het contract) § Maak recht op audit (evt. met broncode) onderdeel van de contractvorm § Stuur aan op vervanging van verouderde technologieën (bijv. ASP.NET technologie), maak eerst een risico-afweging voor tot vervangen wordt overgegaan § Een herbouw, renovatie of vervanging van een bestaande applicatie zal op korte termijn leiden tot meer verstoringen. § Dit is mede een onderbouwing om de kern van IBS (omvang 164 MJ) niet op korte termijn uit te faseren maar te blijven continueren
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
26
// ADVIES
Verbeter kennisborging, pas ontwikkel best-practices toe
§ Investeer zowel in voldoende functionele (domein)kennis als kennis van de ontwikkeltechnologie om de DPZ systemen efficiënt te gebruiken en door te ontwikkelen. § Houd rekening met voldoende domeinkennis bij de gebruikersorganisatie bij introductie van nieuwe standaarden § Het (technisch) beheren van software systemen o.b.v. van niet gangbare of verouderde technologie vraagt om extra aandacht en maatregelen bij de ontwikkelteams § Blijf de kwaliteit (o.a. onderhoudbaarheid) van de systemen actief monitoren § Bevraag de leveranciers op het toepassen van moderne ontwikkelpraktijken in het software ontwikkelproces § (Hoge mate van) gebruik van automatische testen § Gebruik van gangbare technologie (uitfaseren van verouderde technologieen) § Pro-actief inzicht in kwetsbaarheden (ook van de door de leverancier gebruikte bibliotheken) § Gebruik actuele open source componenten waar mogelijk, houd rekening met de licentievoorwaarden § Controleer regelmatig of de gebruikte libraries nieuwere versies hebben en voer een upgrade indien nodig
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
27
// ADVIES
Rationalisatie van het landschap vraagt om een gedegen aanpak met voldoende capaciteit
§ Rationalisatie kan een positieve invloed hebben op de onderhoudbaarheid, de toekomstvastheid en de efficiency § De huidige omvang van der systemen geeft een maat voor de benodigde inspanning (mijndenhaag.nl – 11MJ, Haagsebezwaarzaken 11MJ, KIM – omvang onbekend) § Rationalisatie van verouderde systemen en systemen met vergelijkbare functionaliteit kan mogelijkheden geven om procesverbeteringen door te voeren § Houd rekening met noodzakelijke functionaliteitsuitbreidingen van de open-source alternatieven (GZAC i.c.m. de Open systemen) om reeds bestaande functionaliteit en werkwijze te ondersteunen, aandachtpunten zijn: § De GZAC implementatie wordt nog maar beperkt gebruikt in productie met representatieve data § (Alle) gegevens ophalen bij de bron kan negatieve effecten hebben op de performance, wordt reeds geadresseerd § De granulariteit van de API’s is een aandachtspunt, eigenaarschap van de API’s ligt bij de VNG, wordt reeds geadresseerd § Borg performance en stabiliteit voor specifieke use-cases van Den Haag bij gebruik van algemene open-source oplossingen
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
28
// ADVIES
Heroverweeg periodiek de vorm waarin het systeem wordt afgenomen en de hosting
§ Zorg voor een actueel en overkoepelend beeld (minder gefragmenteerd) voor de systemen op het gebied van kwaliteitsborging, hosting en operationeel beheer. § Evalueer periodiek met de hosting partij de gemaakte afspraken inclusief de performance en schaalbaarheid van de systemen § Maak capaciteitsplanning hier een onderdeel van § Een aantal leveranciers ontwikkelen ook SAAS oplossingen binnen hun bestaande portfolio waardoor de applicaties beter kunnen worden ondersteund door de leverancier; dit geeft de leverancier mogelijkheden tot optimalisaties door verbeterde inzichten. Overweeg welke SAAS oplossingen voor de gemeente relevant zijn § OIS (digiDoc), SmartDocuments, EasyAccount+ zijn ook SAAS beschikbaar § Key2Burgerzaken (de gehele suite) is ook SAAS beschikbaar, het is nog onduidelijk of gemeente Den Haag hierin kan en wil meegaan
Let op: gebruik SAAS versies van de systemen vergroot de lock-in en legt meer nadruk op de communicatie met de leverancier // SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
29
// DEMO
Demo Sigrid
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
30
Uw projectteam
Hoe u in contact kunt komen met ons
Niels van der Zwan
www.softwareimprovementgroup.com
Lead consultant n.vanderzwan@sig.eu
Michael van Wier Account manager
Reinier Vis
Technisch consultant
Ken Vernaillen
Technisch consultant
// SOFTWARE IMPROVEMENT GROUP
QA UITGEVOERD DOOR
+31 (0) 20 314 09 53
Inhoudsopgave
1. Managementsamenvatting en Introductie 2. Bevindingen 3. Conclusies 4. Advies
Appendix: •
Checklist beheersbaarheid softwareontwikkeling
•
Samenvattingen per systeem
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
32
// CHECKLIST BEHEERSBAARHEID SOFTWARE ONTWIKKELING
Vanuit de opdrachtgever
§ Maak duidelijke afspraken (SMART) over de kwaliteit van de opgeleverde software § Transparantie: maak het recht op een documentatie audit (incl. broncode) onderdeel van de standaardafspraken § Goed opdrachtgeverschap = weten wat je wilt laten ontwikkelen § Indien de eisen onduidelijk zijn, dan kan gebruik gemaakt worden van Agile prototyping (met korte sprints) om samen met de business de applicatie richting te geven § Zorg voor voldoende beschikbaarheid, kennis en mandaat van de gebruikers (juist bij Agile ontwikkeling) § Kies de juiste technologie voor het probleem dat moet worden opgelost (denk daarbij ook aan niet-functionele aspecten zoals beveiligbaarheid, betrouwbaarheid en performance) § Bepaal eerst de architectuur-richting en kies dan pas de juiste technologieën erbij § Kijk bij de gekozen technologieën ook naar de benodigde kennis in de organisatie § Onderzoek de ondersteuning (technologie en tools) op langere termijn van de gekozen richting § Bij de keuze voor een Commercial Of The Shelf (COTS) pakket is de hoeveelheid (en kwaliteit) maatwerk en de mogelijkheid om eenvoudig te kunnen upgraden een belangrijk aspect om te blijven monitoren // SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
33
// CHECKLIST BEHEERSBAARHEID SOFTWARE ONTWIKKELING
Best practices bij het uitvoeren van software projecten § Low code platforms: worden vooral gebruikt voor kleinere (frontend) applicaties (de grootste Mendix applicatie in de SIG benchmark is ±24 mensjaar, de gemiddelde omvang is 2,5 mensjaar) § ‘Low level code’ kan vaak beter in een reguliere technologie worden gebouwd (en aangeroepen worden vanuit het low code platform) § Het borgen van een duidelijke architectuur is ook belangrijk voor low-code platforms § Bij vernieuwing van een bestaande applicatie: de omvang (technische herbouwwaarde) van de bestaande applicatie (inclusief de configuratie) is een goede beginschatting voor de omvang van een vernieuwingstraject § Een gedeeltelijke, geleidelijke vernieuwing kan soms rendabeler zijn (bijv. alleen de front-end), dan een big-bang scenario én tot minder risico leiden § Maak ook niet functionele eisen inzichtelijk en toets hierop tijdens ontwikkeling, oplevering en operatie (denk hierbij aan inzicht in de performance) § Voorkom vendor- of technologie lock-in § Kan lock-in het toekomstig beheer beperken? Wie heeft de eigendomsrechten op broncode en IP? // SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
34
// CHECKLIST BEHEERSBAARHEID SOFTWARE ONTWIKKELING
Economics van software (ontwikkeling)
§ De beheerlast van een ‘levendige’ applicatie is typisch 15% van de technische herbouwwaarde § Voor bugs, correctief en preventief onderhoud § Projecten voor additionele functionaliteiten komen hier bovenop § Het uitfaseren van bestaande software kost ook geld (tot wel 50% van de technische herbouwwaarde) § Hergebruik van software is niet vanzelfsprekend en zeker niet altijd kostenbesparend § Levert maar beperkt voordeel op, met name in de design-, build- en testfase § Bij een minder dan 80% functionele fit is het waarschijnlijk goedkoper om zelf te bouwen of een specifieke oplossing te kopen § Een applicatie met een bewezen staat van dienst (meerdere jaren in productie, een bewezen proces voor beheer en ontwikkeling, weinig bugs en fouten) is zeer waardevol § Het kost tijd om nieuwe software en nieuwe beheerprocessen op hetzelfde volwassenheidsniveau te krijgen; migraties kosten tijd en brengen risico’s met zich mee // SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
35
// CHECKLIST BEHEERSBAARHEID SOFTWARE ONTWIKKELING
Ontwikkeling en deployment
§ Het bijwerken van frameworks en bibliotheken is een taak, die regelmatig moet worden overwogen en uitgevoerd, zodat geen ‘onoverkoombare upgrades’ en daarmee technische schuld ontstaan § Voorbeelden: Java en .NET versies, frontend frameworks, onderliggende COTS pakketten § Soms kan een grote achterstand ertoe leiden dat een urgente fix niet beschikbaar is § Een aanzienlijke versnelling van het releaseproces vraagt vaak om een andere werkwijze (en heeft een prijs) § Bijvoorbeeld: van 1x per kwartaal naar 1x per maand releasen § Sneller releasen vraagt vaak om een grotere mate van automatisering van het testen (en het releasen) § Het vergroten van de schaal van een applicatie vergt inspanning (bijv. 10x meer gebruikers) § Regressie load en performance testen met de verwachte load (en een beetje meer) § Een 10x grotere ‘uitval’ kan ertoe leiden dat de beheerafdeling het werk niet meer aankan § Licentievoorwaarden kunnen ertoe leiden tot hogere kosten
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
36
// BEVINDINGEN– OPEN SOURCE AND IP
9 systemen gedetecteerd met hoge risico’s in termen van security en freshness SNAPSHOT DATE
Risks in external dependencies – Portfolio overview 16
systems with OSH monitor
§ 1.1K libraries gedetecteerd in 16 systemen.
9
Risk categories 3
0
2
high risk
medium risk
low risk
✓ no risk
§ 366 libraries in 11 systemen hebben onderdelen die reeds een jaar een nieuwere versie hebben. § 56 libraries in 6 systemen hebben gekende security kwetsbaarheden.
Systems with vulnerability risk
Systemen met OSH monitoring
Systems with freshness risk Systems with activity risk Systems with stability risk Systems with management risk Systems with legal risk 0
5 High risk
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
10
15
Medium risk
Low risk
Denhaag.nl IBS KBN Keycloak 17.0.1 Loketten Mijndenhaag.nl Objects-api Objecttypes-api Odw-gbd Open-forms
Open-klant Opennotificaties Open-zaak Patch-gbd Plsql-gbd Valtimo
37
Inhoudsopgave
1. Managementsamenvatting en Introductie 2. Bevindingen 3. Conclusies 4. Advies
Appendix: •
Checklist beheersbaarheid softwareontwikkeling
•
Samenvattingen per systeem
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
38
// SAMENVATTING
Axiell V-Smart migreert naar een nieuwe technologie (IRIS) met mogelijke prestatieverbeteringen Onderhoudbaarheid (zonder broncode)
Hoofdbevindingen
Risico classificatie: Laag
V-Smart is een geïntegreerd bibliotheeksysteem (ter vervanging van Concerto) dat bibliotheken helpt bij het beheren van hun collecties en diensten. Dit is gemaakt door Axiell in samenwerking met de Vrije Universiteit Brussel. De software is een open-source oplossing dat kan integreren met verschillende applicaties. Het is ontwikkeld in InterSystems Caché en er is een aanstaande migratie naar InterSystems IRIS. Deze migratie brengt allerlei mogelijke voordelen met zich mee. De gebruikte (markt)standaarden verhogen de interoperabiliteit. Risico’s zijn; de minder gangbare technologie en specifieke domeinkennis, wat het moeilijker maakt om ontwikkelaars te vinden, testen is manueel (vooral voor connectors). Axiell werkt aan proces verbeteringen en een splitsing in de catalogus van Den Haag voor specifieke entiteiten.
§ V-Smart releast 1 major versie per jaar met meerdere tussentijdse bug-fix releases. Security issues worden als patch gedeployed naar alle klanten. Nieuwe functionaliteit wordt meestal toegevoegd aan connectors (om met nieuwe systemen te integreren). Deze worden als servicepacks voorzien voor de vragende klant en in de volgende major release als standaard voorzien. Frontend en backend worden steeds samen geupdate.
n e g an v t n o e
d o c n door een QA departement, maar veel testing is § Testing: alle wijzigingen worden getest roomdat b manueel (voornamelijk integraties, deze klant en productie specifiek zijn). n e euit ongeveer 10 ontwikkelaars en de code wordt gedeeld met de Vrije § Ontwikkelteam bestaat G Universiteit Brussel (shared ownership). § Caché/IRIS zijn geen gangbare technologieën. In combinatie met de specifieke domeinkennis, kan dit het moeilijker maken om ontwikkelaars te vinden.
Stabiliteit en performance efficiency
Efficiency en toekomstvastheid
§ V-Smart wordt gebruikt door meer dan 100 klanten en is gebouwd in de technologie InterSystems Caché. Deze technologie valt onder de noemer “noSQL-database”/objectdatabase en is een stabiele en performante database met een grote schaalbaarheid. Het werkt op verschillende besturingssystemen (Window, Linux en Unix).
§ De standaard MARC21 ("MAchine-Readable Cataloging”), beheerd door IFLA, wordt gebruikt voor de weergave en uitwisseling van bibliografische informatie en gerelateerde gegevens in geautomatiseerde systemen. Dit zorgt ervoor dat er kan gecommuniceerd worden met catalogi over de hele wereld. Door de object-geörienteerde manier van werken in de Caché database, is het makkelijk om wijzigingen aan de standaard te integreren in V-Smart. De standaard zorgt voor de mogelijkheid van “catalogiseren en indexeren zodat bibliotheken hun collecties effectief kunnen beheren, een gebruiksvriendelijke zoekervaring kunnen bieden en naadloos gegevens kunnen uitwisselen met andere bibliotheeksystemen”. Voorheen in Concerto was dit niet mogelijk.
§ Er is een aanstaande migratie naar InterSystems IRIS*, de opvolger van InterSystems Caché. Er zijn verbeteringen in onderhoud, databeheer, performantie, integratie en analyse; § Performantie: dankzij de mogelijkheid om zoekopdrachten te verspreiden over verschillende CPUs is het mogelijk de performantie te optimaliseren. § Integratie en analyse: IRIS biedt een API Manager voor een betere interoperabiliteit met andere systemen. Het zorgt ook voor betere inzichten met ingebouwde analytics tools. § Onderhoud en databeheer: IRIS is cloud-oriented en ondersteund een multi-tenant architectuur, wat het makkelijker kan maken om te schalen. § Geen informatie ontvangen over stabiliteitsmaatregelen in de applicatie/hosting, wel benoemd in de concept-SLA in offerte (beschikbaarheid, rollback, reactie en hersteltijden) // SOFTWARE IMPROVEMENT GROUP
CONFIDENTIAL
§ Hosting (2 omgevingen PRD-TST / meerdere VM’s) wordt gedaan door Actacom. Service Management wordt niet door Actacom maar door Den Haag gedaan. Communicatie met Actacom verloopt via Axiell. Authenticatie gebeurt met de IAM tool van Den Haag. § Axiell werkt momenteel aan interne ontwikkelproces verbeteringen. Axiell ontwikkelt meerdere bibliotheeksystemen waarvan Quria een aantal bestaande systemen zal vervangen. § Er is momenteel 1 grote catalogus voor Den Haag, maar er moeten nog profielen worden aangemaakt voor specifieke entiteiten zoals de openbare bibliotheek, hogeschool, musea.
*) IRIS staat voor Interoperable, Reliable, Intuitive, and Scalable.
39
// SAMENVATTING
EasyAccount+ is een grote Java applicatie, de benoemde omvang zou meer beheer behoeven Hoofdbevindingen
Risico classificatie: Middel/hoog
Onderhoudbaarheid: IIIII (geen code gemeten)
EasyAccount+ wordt gebruikt om betalingen af te handelen. Denk hierbij aan print opdrachten, gebruik van openbare computers, saldo opwaarderen.
Volume
IIIII
Duplication
IIIII
Onderhoudbaarheid is niet bepaald door SIG, op basis van de omvang (±3Mio lines of code) en marktgemiddelde productiviteitsgetallen mag verwacht worden dat er méér onderhoud wordt gepleegd per jaar (dan 1 MY/Y). Er wordt aan een aantal best practices niet voldaan t.o.v. recent ontwikkelde, moderne applicaties en omgevingen (automatisch testen, code reviews en gebruikt kwaliteitstools).
Unit size
IIIII
Unit complexity
IIIII
Unit interfacing
IIIII
Beheer van EasyAccount+ wordt grotendeel door Xafax on-premise (in de Haagse omgeving) uitgevoerd, dit leidt soms tot vertragingen. De load van EasyAccount+ is verdeeld over meerdere servers, er zijn weinig performance en stabiliteitsproblemen bekend.
§ Tijdens deze opdracht is van het EasyAccount+ systeem geen code meting uitgevoerd
n e g § Xafax geeft an aan dat de code uit ca. 3M regels v t Java n code bestaat o e
d § EasyAccound+ wordt nu onderhouden door 1 o c programmeur n o Module coupling IIIII br § De code zit wel in versiebeheer, verder zijn n unit tests en code reviews niet aanwezig, en Component independence ee IIIII G worden software quality tools als SonarQube Component Entanglement IIIII niet ingezet
Stabiliteit en performance efficiency
Efficiency en toekomstvastheid
§ De 6 servers die in productie gebruik zijn, worden voor 90% beheerd door Xafax
§ De installatie bevat veel handmatige stappen, met een downtime van ca 2 uur (gepland bij voorkeur op maandag ochtend)
§ Door de regels in het netwerk, beperkte toegang, wordt Xafax beperkt in het beheer § Elke server heeft zijn eigen functionaliteit (print server, terminal server (2x), webserver § De terminal server is wel dubbel uitgevoerd, maar elke server bedient een ander deel van de vestigingen § Als een van de andere servers uitvalt, is tijdelijk een deel van de diensten niet beschikbaar, of kan een deel van de vestigingen niet in de terminal werken § Eventuele bugfixes doorlopen altijd het standaard release proces (via test)
§ Er is een goede ‘productie-like’ test omgeving waar alle functionaliteit incl betalingen getest kan worden § Leverancier geeft aan dat aan de Haagse kant veel verloop en daarmee gepaard gaande afname van kennis heeft plaatsgevonden de laatste jaren § Communicatie met de gemeente gaat over veel schijven, en meetings/acties voor een grote groep zijn lastig te organiseren § Er loopt een voorstel om te migreren naar de cloud, zodat de applicatieservers beter beheerd en gemonitord kunnen worden. Hiermee kunnen problemen eerder geconstateerd en opgelost worden § EasyAccount+ draait op Windows 2012 servers, welke vanaf oktober 2023 out of support zullen zijn (dan komen er geen security updates meer)
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
40
// SAMENVATTING
Mijndenhaag.nl wordt uitgefaseerd, bevat 12 kwetsbare libraries en verouderde technologie Hoofdbevindingen
Risico classificatie: Laag/Middel
Mijndenhaag.nl is een applicatie die gegevens uit verschillende gemeentelijke bronnen integreert en de burger de mogelijkheid geeft een zaak te beginnen en te volgen. Het heeft een herbouwwaarde van ±11 mensjaar*, en heeft een marktgemiddelde onderhoudbaarheid. De marktgemiddelde technische beheerinspanning (15%) van een dergelijke applicatie bedraagt ± 1,43 mensjaar. Sinds de vorige meting in 2019 is het systeem gegroeid met 6,7 mensjaar. Belangrijkste technologieën zijn Java en JSP.
Onderhoudbaarheid HHHII (3.4)
Marktgemiddelde onderhoudbaarheid
Volume
HHHHI
4.3
Duplication
HIIII
1.3
• Het systeem bevat een aantal zeer grote en complexe units met name in de JSP code.
Unit size
HHHII
3.2
Unit complexity
HHHII
2.9
Unit interfacing
HHHII
3.1
MijnDenHaag.nl is geen standalone applicatie, maar een plugin op het CMS XperienCentral (XC) van GX software. De MijnDenhaag applicatie wordt momenteel gemigreerd naar het Valtimo-GZAC platform.
Module coupling
HHHHI
4.0
Component independence
HHHHH
4.5
De grootste focuspunten (zolang gebruik wordt gemaakt van XC) zijn de 12 kwetsbare libraries en 4 libraries met een licentie risico.
Component entanglement
HHHHH
5.0
• 63% van de code is gedupliceerd, voornamelijk HTML en grote JSPF bestanden. • 18% van de Java code is onderdeel van lange units (31+ LoC) • 9% van de Java code is complex, dit komt voornamelijk voor in bestanden voor de ‘CtoArticle’ functionaliteit.
Efficiency en toekomstvastheid § Het systeem MijnDenHaag op XC wordt momenteel gemigreerd naar het Valtimo-GZACOpenzaak platform. Redenen hiervoor zijn de dure XC licentie en de beweging binnen de gemeente richting meer gebruik van opensource. Den Haag heeft besloten om te bewegen naar meer open source (o.a. openzaak) systemen, bij voorkeur gebouwd op de Common Ground architectuur en maatwerk zoveel mogelijk te vermijden. § Parkeren, Nea en Formulieren worden momenteel vervangen. Het doel is om eind 2023 geen nieuwe Java code meer te schrijven op de XC omgeving. Een aantal kleine applicaties zijn reeds gemigreerd en draaien al in productie op de nieuwe omgeving. Einddatum is dec 2027, i.v.m. afhankelijkheid IBS. § Er bestaat een gedocumenteerde doelarchitectuur. (logische plaat) § Keycloak wordt gebruikt als IAM systeem, wat het toelaat om sessies te delen over huidige XC en nieuwe Valtimo GZAC platform. Dit faciliteert een hybride situatie bij migratie. § MijnDenHaag.nl draait in een Kubernetes omgeving in de Microsoft Azure Cloud, beheerd door een team binnen de gemeente (ondersteund door InSpark). Er is een test, acceptatie en productie omgeving. De exacte dimensionering van de hosting is niet gedeeld. // SOFTWARE IMPROVEMENT GROUP VERTROUWELIJK
§ Risicos geïdentificeerd in externe libraries; 12 libraries bevatten gekende security kwetsbaarheden. 4 libraries hebben een licentie met het risico dat ze niet mogen gedistribueerd worden aan derden als onderdeel van MijnDenHaag. 24 libraries zijn outdated voor meer dan een jaar. § Het systeem bevat 3 mensjaar JSP code. JSP wordt als een verouderde technologie beschouwd. § Sinds de vorige meting (2019) is het systeem gegroeid met 6,7 mensjaar (meer dan verdubbeld). § Bij de migratie moet rekening worden gehouden met het huidige volume (±11 mensjaar) als uitgangspunt. Stel een reële einddatum op voor migratie, rekening houdende met het volume, de herbruikbaarheid van delen in de code (bijvoorbeeld interface code) en de koppeling tussen de herbruikbare componenten. * Dit is alleen ontwikkelinspanning, totale projectkosten zijn typisch minimaal 2x zo groot
41
// SAMENVATTING
KIM en TriplEforms worden uitgefaseerd, verouderde technologie (ASP.NET) in gebruik Hoofdbevindingen
Risico classificatie: Middel/hoog
Onderhoudbaarheid: IIIII (geen code gemeten)
Gemeente Den Haag heeft besloten om KIM en TriplEforms uit te faseren en te vervangen door GZAC (i.cm. openForms). Einddatum is dec 2024. KIM maakt gebruik van een verouderde TriplEforms versie, die niet meer (publiekelijk) wordt ondersteund. Het aantal ontwikkelaars voor de beide applicaties lijkt klein t.o.v. het aantal regels code (zoals geschat door de leverancier) KIM en TriplEforms zijn gebouwd in (verouderde) ASP.NET technologie, op termijn zal frontend code worden omgebouwd naar VUE Leverancier heeft ook een vergelijkbaar SAAS product, waar meer resources op worden ingezet.
Volume
IIIII
Duplication
IIIII
§ Tijdens deze opdracht is van de KIM en TriplEforms systemen geen code meting uitgevoerd
n e g an Unit size IIIII v t § n Het volume van TriplEforms wordt geschat op o Unit complexity IIIII regels code, KIM heeft ca. 200k regels e 350k d code o Unit interfacing IIIII c § Onderhoud op beide applicaties wordt ron Module coupling IIIII b uitgevoerd door gemiddeld 5 ontwikkelaars en n Component independenceee IIIII 1 tester G IIIII Component Entanglement
Stabiliteit en performance efficiency
Efficiency en toekomstvastheid
§ De applicaties zijn stateful, waardoor de requests niet random over meerdere servers verdeeld kunnen worden (niet horizontaal schaalbaar)
§ In het ontwikkelproces worden deels een aantal best-practices toegepast.
§ Er is een mirror omgeving waar naar overgestapt kan worden als de primaire omgeving down is. De data op deze mirror is up-to-date en actueel § Op KIM spelen wel eens performance problemen. Dan gaat een team van leverancier naar de gemeente Den Haag om daar op de omgevingen een performance test te draaien en met name de queries te analyseren § Logging m.b.t. de duur van afzonderlijke transacties is aanwezig in de database, maar hier wordt in de praktijk weinig gebruik van gemaakt
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
§ Ontwikkeling is agile volgens de SCRUM methodiek, de tools binnen de Azure DevOps zijn aanwezig § Er zijn weinig tot geen geautomatiseerde unit tests, en statische code analyse tools worden niet ingezet in de Azure DevOps pipeline § KIM maakt in de kern gebruik van een verouderde TriplEforms versie, welke op termijn bijgewerkt zal moeten worden naar een nieuwere en ondersteunde versie
42
// SAMENVATTING
SmartDocuments maakt gebruik van de GWT, welke niet meer ondersteund wordt Hoofdbevindingen
Risico classificatie: Laag/Middel
Onderhoudbaarheid: IIIII (x.x)
Smartdocuments een server tool voor het creëren, beheren van document templates en het genereren van pdf’s.
Volume
IIIII
x.x
Duplication
IIIII
x.x
SmartDocuments is gebouwd in Java/Spring/Tomcat/Hibernate en maakt gebruik van niet meer ondersteunde GWT technologie, welke dit jaar nog wordt vervangen door Angular. Er is geen broncode ontvangen.
Unit size
IIIII
x.x
Smartdocuments is een product dat wordt geleverd aan ±250 klanten.
Unit interfacing
IIIII
x.x
Hosting is on-premise, de software kan niet worden geloadbalanced. Bij een uitval van de server is er zeer beperkte downtime en dataverlies.
Unit complexity
Module coupling
en g n
§ Duplication:
a v t x.x on IIIII x.xe § Unit interfacing: IIIII d co x.x IIIII n ro x.x § Component entanglement: IIIII b n
§ Unit size & unit complexity:
Component independence
e Ge
Component Entanglement
Stabiliteit en performance efficiency
Efficiency en toekomstvastheid
§ Software kan niet worden ge-loadbalanced (vanwege sessie stickiness). De DocEngine service kun je wel loadbalancen.
§ Tijdens Jenkins build worden unit en integratiechecks en OWASP (security) tests uitgevoerd.
§ Er zijn geen structurele performance probleem bekend, wel treden er soms geheugen probleem (de applicatie wordt gezien als een ‘lichte’ applicatie). Wachttijden ontstaan soms op de externe koppelvlakken § Downtime en dataverlies bij uitval van de server is zeer beperkt
§ SmartDocuments is gebouwd in Java/Spring/Tomcat/Hibernate en maak gebruik van GWT (wat al enige tijd niet meer ondersteund wordt). Het ontwikkelteam is bezig een nieuwe Angular frontend te schrijven. MVP moet worden opgeleverd einde 2023. § Er zijn ±250 instanties van SmartDocuments in de markt, dit duidt op een stabiele basis.
§ Hosting is on-premise bij gemeente Den Haag, de leverancier ondersteunt bij de installatie van updates op de verschillende omgevingen.
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
43
// SAMENVATTING
Loketten is marktgemiddeld onderhoudbaar, maar al enige tijd end-of-life (50% is dead code) Hoofdbevindingen
Risico classificatie: Middel/hoog
Onderhoudbaarheid: HHHII (3.0)
Loketten is End-of-Life, nog ongeveer de helft van het systeem wordt gebruikt, de rest is ’dead-code’.
Volume
HHHHI
4.3
§ Duplication: 42% van de code is gedupliceerd,
Duplication
HHIII
2.1
Loketten is marktgemiddelde onderhoudbaarheid, bij continuering is meer aandacht voor onderhoudbaarheid noodzakelijk.
Unit size
HHHHI
3.5
Het systeem bestaat deels uit moderne technologieën, echter ASP.NET is verouderd en moeten worden vervangen.
Unit complexity
HHHII
3.3
§ Unit size & unit complexity: 35% van de code bevindt zich in lange units en 10% van de code is complex.
Unit interfacing
HHIII
2.4
Module coupling
HHHII
3.0
Component independence
HHHII
2.7
Component Entanglement
HHIII
1.5
Een deel van de libraries is verouderd en bevat kwetsbaarheden. Dit wordt niet pro-actief aangepakt. Een deel van de libraries kan pas worden vernieuwd na een vernieuwing van de codebase.
§ Unit interfacing: 7% van de code is onderdeel van units met meer dan 4 parameters § Component entanglement: De architectuur vertoont veel afhankelijkheden naar- en binnen de Shared component
Stabiliteit en performance efficiency
Efficiency en toekomstvastheid
§ Loketten draait op 7 afzonderlijke servers, er is een gescheiden deployment voor burgers (extern) en medewerkers (intern)
§ Loketten is al enige tijd End-of-Life, ongeveer de helft van het systeem wordt nog gebruikt. het tonen van bezwaren wordt vervangen door Open applicaties (klantportaal), einddatum is onbekend.
§ Er zijn geen bekende performance problemen, de load is verdeeld over de zeven servers § De db server is redundant uitgevoerd
§ Er wordt nog wel nieuwe functionaliteit toegevoegd om bijv. burger informatie op te halen. Het onderhoud op Loketten is aangenomen ‘as is’; er is geen goede documentatie over het systeem opgebouwd § Loketten heeft een mix van moderne maar ook outdated technologieën; C#, Razor en JavaScript zijn gangbaar. ASP.Net is een verouderde technologie, een logische opvolger is bijv Razor. § De testcode/productiecode verhouding is 65% § 40% van de gebruikte 3rd party libraries zijn verouderd; 5 libraries bevatten security kwetsbaarheden, en 1 library heeft een licentie probleem. Een deel van deze libraries kan niet geüpgraded worden naar een recente versie zonder een grote update aan de gehele codebase van Loketten
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
§ Kennis van het systeem is slechts aanwezig bij 1 developer bij de leverancier
44
// SAMENVATTING
KBN is gemiddeld onderhoudbaar, onderhoudbaarheid en performance hebben meer aandacht nodig Hoofdbevindingen
Onderhoudbaarheid: HHHII (2.8)
KBN is marktgemiddelde onderhoudbaarheid, maar de onderhoudbaarheid behoeft wel meer aandacht (met name unit size en complexity). In KBN worden moderne technologieën gebruikt.
Risico classificatie: gemiddeld
Betrouwbaarheid/schaalbaarheid kan worden verbeterd door KBN geschikt te maken voor uitrol op meerdere (parallelle) servers, waardoor KBN horizontaal schaalbaar wordt. Er is een re-design noodzakelijk van die delen van de software, die een negatieve impact hebben op het functioneren (performance) van de rest van de applicatie. Een mogelijke oplossingsrichting is het gebruik van multithreading.
Volume
HHHHI
4.2
§ Duplication: 24% van de code is gedupliceerd,
Duplication
HHHHI
2.5
Unit size
HHHII
1.7
Unit complexity
HHHII
2.3
§ Unit size & unit complexity: 51% van de code bevindt zich in lange units en 21% van de code is complex.
Unit interfacing
HHHII
3.0
Module coupling
HHHHI
3.0
Component independence
HHHHI
2.7
Component Entanglement
HHIII
3.2
§ Unit interfacing: 4% van de code is onderdeel van units met meer dan 4 parameters § Component entanglement: De architectuur bevat een nette gelaagdheid, met 1 cyclische afhankelijkheid § Er is een testcode ratio van 6%, wat erg laag is
Stabiliteit en performance efficiency
Efficiency en toekomstvastheid
§ De huidige test code/productie code ratio is laag (6%). Het testen kan worden verbeterd en versneld door een hogere automatisering van het testen;
§ Een groot deel van de gebruikte 3rd party libraries zijn verouderd; ook bevatten 4 libraries bekende security kwetsbaarheden
§ KBN draait op één enkele (applicatie) server, en één DB server
§ De gebruikte technologieën binnen KBN zijn modern
§ KBN is niet multi-threaded opgezet, bepaalde processen kosten veel rekencapaciteit. Op tijden dat er veel formulieren binnen komen, is er een grote impact op de algehele performance van KBN
§ Onderhoud aan KBN is reactief; wordt uitgevoerd wanneer er functionele wensen zijn vanuit de Gemeente Den Haag. Hetzelfde geldt voor het up to date houden van de libraries
§ Oude data wordt regelmatig opgeschoond, hier is een proces voor ontworpen en gebouwd
§ Kennis over het systeem is slechts bij één enkele developer aanwezig
§ De bitmap generator loopt af en toe uit het geheugen. Deze service kan apart herstart worden om geheugen weer beschikbaar te krijgen
// SOFTWARE IMPROVEMENT GROUP
VERTROUWELIJK
45
// SAMENVATTING
Keycloak is een populaire IAM oplossing, veel libraries zijn verouderd en kennen kwetsbaarheden Hoofdbevindingen
Risico classificatie: gemiddeld
Onderhoudbaarheid HHHII (2.7)
Keycloak is een open-source identiteits- en toegangsbeheer (IAM) oplossing ontwikkeld door Red Hat. Het biedt een reeks functies om systemen te beveiligen, zoals Single-Sign-On (SSO), Identity Brokering en Social Login, User Federation, Client Adapters, een Admin Console en een Account Management Console waarmee je gebruikers, groepen, rollen en machtigingen kunt beheren. De codebase heeft een herbouwwaarde van 40 mensjaar, en heeft een marktgemiddelde onderhoudbaarheid (2.7 H). Alle metrieken scoren marktgemiddeld, behalve component entanglement. De componenten zijn verstrengeld (voornamelijk de services). 20 libraries bevatten gekende security kwetsbaarheden (tot 9.8 CVSS). 227 libraries hebben al meer dan een jaar een nieuwe versie beschikbaar, maar zijn niet up to date.
Volume
HHHII
3.4
Duplication
HHHII
2.6
Unit size
HHHII
3.0
Unit complexity
HHHII
2.6
Unit interfacing
HHHII
2.8
Module coupling
HHHII
2.5
Component independence
HHHII
2.6
Component Entanglement
HIIII
1.1
§ Duplication: 17% is duplicatie, voornamelijk vanwege de brede ondersteuning van integratiemogelijkheden en gebruiksscenario's van deze open-source codebase. § Unit size & unit complexity: 26% van de code bestaat uit lange units en 17% van de code is complex, voornamelijk in frontend code. § Component entanglement: Componenten zijn verstrengeld (voornamelijk services).
Stabiliteit en performance efficiency
Efficiency en toekomstvastheid
§ Keycloak is een stabiel en betrouwbaar platform dat door veel organisaties wordt gebruikt. Het is gebaseerd op veelgebruikte technologieën: Java en JavaScript. De open-source codebase wordt regelmatig bijgewerkt en onderhouden door een actieve community en Red Hat, waardoor het een stabiele keuze is voor identiteits- en toegangsbeheer.
§ Keycloak ondersteunt verschillende moderne protocollen en standaarden, zoals OpenID Connect, Oauth 2.0 en SAML 2.0, waardoor het eenvoudig te integreren is met diverse systemen. Keycloak heeft een flexibele en modulaire architectuur die het mogelijk maakt om de functionaliteit uit te breiden en aan te passen aan de specifieke behoeften van een organisatie. De verstrengeling van componenten (zie onderhoudbaarheid) kan de aanpasbaarheid van de modules bemoeilijken. Keycloak is logisch opgebouwd, met een duidelijke scheiding tussen kernelementen zoals gebruikers, rollen, groepen en clients.
§ Ontwikkelaars kunnen de functionaliteit van Keycloak uitbreiden via aangepaste providers, aangepaste gebruikersinterfaces en RESTful API's. Deze flexibiliteit maakt het een populaire keuze voor het beveiligen van webapplicaties, mobiele applicaties en microservices. § Keycloak is ontworpen met het oog op schaalbaarheid en performantie. Het kan worden geconfigureerd voor clustering en load balancing om te voldoen aan de eisen van groeiende omgevingen. Keycloak is getest met duizenden gelijktijdige gebruikers en kan worden geoptimaliseerd voor specifieke use cases. Er bestaan out-of-the-box performance test tools voor Keycloak. § De effectieve performantie is afhankelijk van een goede configuratie (afstemmen cacheinstellingen, configureren clustering, etc.) en optimalistatie van de use case. Deze was niet bekend bij dit onderzoek. // SOFTWARE IMPROVEMENT GROUP