Kennisbank \ Algemeen

Out with the old, in with the new.

Van technical debt naar technical profit.

Out with the old, in with the new.

Deel 1: the old.

In deze serie van artikelen vertel ik over het omzetten van een applicatie die gebruik maakte van verouderde technieken naar een applicatie die gebruik maakt van de allernieuwste technieken.

Situatie

Medio 2020 werd ik gedetacheerd bij een bedrijf om ze te helpen met het afmaken en op de markt brengen van hun software. Dit bedrijf was in 2018 begonnen met het vernieuwen van hun softwareproduct, maar was tot dusver er nog niet in geslaagd om dit op de markt te brengen. Er miste nog wat functionaliteit en de snelheid van de software liet nog te wensen over.

Ze kozen voor een detacheerder omdat er een grote schaarste was aan ontwikkelaars en er te weinig en te langzaam nieuwe aanwas kwam met relevante kennis op hun openstaande vacatures. Dit resulteerde in een teamsamenstelling die de nodige klappen van de zweep gehad had. Er was slechts een handjevol medewerkers die het projectteam vormden, afgewisseld met een historie aan willekeurige externen.

Deze externen bleven meestal een paar maanden tot een half jaar, om vervolgens weer weg te gaan. Het projectteam bleef dan achter met een stuk software waar een aantal veranderingen in waren doorgevoerd waar ze mee moesten dealen.

De keuze voor de techniek was destijds door het management gemaakt, naar aanleiding van een korte demo door een van de medewerkers die ook weg was. Met zijn vertrek was ook de kennis omtrent deze technologie de laan uit. Daarnaast was eveneens het management van weleer niet meer werkzaam. De software was echter al wel aangekondigd aan de klanten van dit bedrijf: de druk stond er dus flink op.

Aankomst

Na een goed kennismakingsgesprek met het projectteam werd aan mij de opdracht uitgelegd. Ik zou de komende twee maanden focussen op het sneller maken van de applicatie en een groot stuk functionaliteit toevoegen, zodat in de herfst van 2020 de software gelanceerd zou kunnen worden.

Na deze gesprekken had ik eigenlijk alleen nog maar tijd om even mijn accounts goed in te richten zodat ik aan de slag zou kunnen de volgende dag.

Op onderzoek uit

“ff snelheid terugbrengen in de applicatie”

  1. Straktrekken van de oude techniek
    • zichtbaar maken van fouten en bugs
    • in kaart brengen welke fouten en bugs er zijn
    • per bug onderzoeken of dit een unieke situatie is, of een (neveneffect) van een andere fout of bug
    • onderzoeken wat de juiste manier is van implementeren
    • Zorg voor dezelfde framework versies (.NET Core 3.1)
    • Breng een de nieuwste beschikbare architectuur aan in de oude techniek (EF Core code first)
    • Trek zoveel mogelijk apart (separation of concerns) (WebApi / Database / Frontend => MVVM)
  2. Kies de nieuwe techniek en kijk naar de mogelijke upgradepaths
    • WinUI3, MAUI, Blazor
    • Update alles naar de laatste versies (.NET 7)
    • Converteer de frontend
  3. Feest

schema: 2 blokken:

  • oud
    • try/catch blokken eruit
    • gelijktrekken .NET versies
    • namespaces straktrekken
    • Inventariseren wat er gebeurt
      • spaghetti kammen/ontrafelen
      • architectuur toepassen
      • de moderne technieken van weleer toepassen
        • code first
    • Onderhoudbaar maken van de code
    • Disciplinaire regels afspreken en er strak aan houden
  • nieuw
    • onderzoek naar een potentiële vervanger

notities:

Vaststellen van een baseline:

  • .NET versies gelijktrekken naar 3.1 LTS
  • alle try/catch statements verwijderen => inzichtelijk maken van tekortkomingen
  • EF Code first implementeren
  • MVVM implementatie verzorgen zodat de UI gescheiden wordt van de logica
  • Project pipeline en uitlevertraject bepalen
  • Doorontwikkelen van de applicatie
    • Bestaande features optimaliseren
    • Minimum Viable Product bepalen (1.0)
    • Ontwikkelen nieuwe features
  • Bugfixes uitvoeren
  • Teamleden inleren en begeleiden
  • Doorontwikkelen agile methoden in het team

| Afronden van de laatste workitems

- Blazor geleerd bij een andere klant

– MVVM implementatie traject gestart

  • Doorontwikkelen van de applicatie
    • Bestaande features optimaliseren
    • nieuwe Minimum Viable Product bepalen (1.1)
    • Ontwikkelen nieuwe features
  • Bugfixes uitvoeren
  • Doorontwikkelen agile methoden in het team
  • Conversie van UWP naar Blazor in MVVM
    • 90% van de code overnemen (meetbaar)
SOFTWAREBAZEN Logo SOFTWAREBAZEN Logo


Eksterlaan 8
5731 XV Mierlo
T +3185 902 4977
E info@softwarebazen.nl

KVK 94147809
BTW NL866653776B01
IBAN NL59 INGB 0107 1380 77
BIC INGBNL2A