<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>technical debt &#8211; Smals Research</title>
	<atom:link href="https://www.smalsresearch.be/tag/technical-debt/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.smalsresearch.be</link>
	<description></description>
	<lastBuildDate>Thu, 26 Mar 2026 13:27:42 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.smalsresearch.be/wp-content/uploads/2026/01/cropped-cropped-Smals_Research-32x32.png</url>
	<title>technical debt &#8211; Smals Research</title>
	<link>https://www.smalsresearch.be</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Code hérité: meilleures pratiques &#038; IA</title>
		<link>https://www.smalsresearch.be/code-herite-meilleures-pratiques-ia/</link>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Wed, 25 Sep 2024 11:31:00 +0000</pubDate>
				<category><![CDATA[[FR]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[EDA]]></category>
		<category><![CDATA[legacy]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software design]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[technical debt]]></category>
		<guid isPermaLink="false">/?p=21169</guid>

					<description><![CDATA[Dans ce blog, nous discutons de plusieurs stratégies générales pour gérer le code hérité, et nous donnons un aperçu de ce que l'intelligence artificielle peut encore y ajouter.]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image alignleft size-full is-resized"><a href="/wp-content/uploads/2024/09/brain-code-image.png"><img fetchpriority="high" decoding="async" width="1024" height="1024" src="/wp-content/uploads/2024/09/brain-code-image.png" alt="" class="wp-image-21152" style="width:338px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/09/brain-code-image.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/09/brain-code-image-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2024/09/brain-code-image-300x300.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/09/brain-code-image-768x768.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p><a href="/legacy-code-trotseren-best-practices-ai/"><em>Nederlandstalige Versie</em></a></p>



<p class="has-black-color has-text-color has-link-color wp-elements-cd97f2ccfcf37b961a4d14b734b19e33">Dans le monde en perpétuelle évolution du développement logiciel, le code hérité est un sujet souvent abordé, mais finalement très peu compris. Le code hérité peut être défini de différentes manières, mais pour cette discussion, nous considérons qu&#8217;il s&#8217;agit de <em>tout code qui est encore utilisé par une application importante, mais qui devrait être mis à niveau</em>. Il se peut qu&#8217;un nouveau style architectural ou de nouvelles normes soient nécessaires, que des cadres obsolètes soient encore utilisés ou que le code soit écrit dans un langage de programmation qui n&#8217;est plus pris en charge. Ou alors le code n&#8217;est pas travaillé à la base, et se retrouve donc trop souvent pollué de correctifs rapides. En d&#8217;autres termes, il s&#8217;agit d&#8217;un code devenant de plus en plus difficile à maintenir et qui doit être réécrit, mais qui, pour une raison ou une autre, n&#8217;est pas pris en main. Certains parlent également de dette technique <a>(<em>technical debt</em>)</a>.</p>



<p class="justify-text">Et si nous allions plus loin en essayant non seulement de gérer ce code, mais en plus de l&#8217;améliorer de manière proactive&nbsp;? Pouvons-nous utiliser de nouvelles technologies comme l&#8217;IA pour y parvenir&nbsp;?</p>



<span id="more-21169"></span>



<h3 class="wp-block-heading"><strong>Pourquoi le Code hérité est un problème</strong></h3>



<figure class="wp-block-image alignright size-full is-resized"><a href="/wp-content/uploads/2024/09/technical-debt-imge.png"><img decoding="async" width="1024" height="1024" src="/wp-content/uploads/2024/09/technical-debt-imge.png" alt="" class="wp-image-21156" style="width:338px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/09/technical-debt-imge.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/09/technical-debt-imge-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2024/09/technical-debt-imge-300x300.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/09/technical-debt-imge-768x768.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="justify-text">Le code hérité entraîne un certain nombre de défis. Le plus important d&#8217;entre eux est probablement le fait qu&#8217;il ralentit le développement et rend la maintenance difficile, ou qu&#8217;il nécessite des connaissances spécialisées et des outils obsolètes. Sans les connaissances et les outils adéquats, il peut représenter un coût énorme pour tout éditeur de logiciels. De plus, si les développeurs qui ont écrit le code original ont également quitté l&#8217;entreprise, le problème peut se révéler encore plus grave. En parlant des développeurs, c&#8217;est également la <a href="https://stackoverflow.blog/2024/07/24/developers-want-more-more-more-the-2024-results-from-stack-overflow-s-annual-developer-survey/">&nbsp;dette technique qui constitue l&#8217;un des plus grands désagréments dans leur travail</a>.</p>



<p class="justify-text">Il existe heureusement plusieurs façons de relever ces défis, même en utilisant les technologies les plus avancées, telles que l&#8217;intelligence artificielle.</p>



<h2 class="wp-block-heading"><strong>Stratégies de gestion du code hérité</strong></h2>



<p class="justify-text">Il n&#8217;existe malheureusement pas de solution magique permettant de résoudre tous les problèmes liés aux code hérité en une seule fois. Il faut adopter une approche polyvalente faisant appel à plusieurs tactiques à la fois. Pensons à l&#8217;analyse du code, à la construction de nouveaux composants de manière modulaire et à la maintenance continue de la base de code pour s&#8217;assurer qu&#8217;elle reste à jour et bien adaptée aux besoins futurs.</p>



<p class="justify-text">Une première étape consiste à effectuer une <strong>analyse statique</strong>. Il s&#8217;agit d&#8217;examiner le code sans l&#8217;exécuter afin d&#8217;identifier les problèmes potentiels tels que les dépendances, les failles de sécurité ou les <a href="https://refactoring.guru/refactoring/smells">&#8220;code smells&#8221;</a>. En utilisant des outils d&#8217;analyse statique, les développeurs peuvent mieux comprendre la structure du code et identifier les zones problématiques à améliorer. Ces outils sont en partie intégrés dans un bon environnement de développement, mais il est souvent possible de leur ajouter une puissance supplémentaire.</p>



<p class="justify-text">Après l&#8217;analyse du code, il est essentiel de <strong>mettre en place des bancs d&#8217;essai</strong>, conformément au paradigme du <em><a href="https://en.wikipedia.org/wiki/Test-driven_development">Test Driven Development</a></em> (TDD). Cela permet de créer un environnement sûr dans lequel divers tests peuvent être exécutés afin de garantir que le code se comporte comme prévu. Les tests sont essentiels pour détecter rapidement les bogues et les problèmes de performance, avant que des changements ne soient apportés. Par ailleurs, si la couverture des tests est suffisante, il devient beaucoup plus sûr de remanier le code, ce que nous devons continuer à faire tout au long du cycle de vie afin de veiller à ce que le code continue d’être amélioré et n&#8217;atteigne surtout pas le <em>legacy status</em>. La mise en place de bancs d&#8217;essai soutient en outre les processus d’intégration et de déploiement continus (CI/CD)), qui sont essentiels pour la gestion de la qualité à long terme.</p>



<p class="justify-text">Une autre stratégie importante consiste à remanier le code pour le rendre <strong>modulaire</strong>. En <a href="/van-n-tier-naar-microservices/">décomposant une base de code monolithique en modules plus petits et plus faciles à gérer</a>, les développeurs peuvent isoler les fonctionnalités, ce qui rend le code plus facile à comprendre, à maintenir et à tester (et peut-être même à réécrire). Cette <a href="/ecosysteem-architectuur/">modularisation</a> permet également à différentes équipes de travailler simultanément sur différentes parties de la base de code, ce qui augmente la productivité et réduit la probabilité d&#8217;erreurs.</p>



<h2 class="wp-block-heading"><strong>Le rôle de l&#8217;IA dans la gestion de code hérité</strong></h2>



<p class="justify-text">L&#8217;intelligence artificielle offre de nouvelles possibilités pour la gestion de code hérité, en particulier aujourd&#8217;hui, avec l&#8217;évolution rapide de l&#8217;<a href="/llms-pour-code/"><em>IA générative</em></a>. Bien que les capacités actuelles de l&#8217;IA soient souvent limitées à des tâches à petite échelle, son potentiel de transformation de la gestion du code hérité est considérable. L&#8217;IA peut aider à analyser le code, à écrire des tests, à remanier et même à générer de la documentation. Cela fait de l&#8217;IA un outil précieux pour les développeurs.</p>



<ul class="wp-block-list">
<li class="justify-text"><strong>Analyser le code&nbsp;:</strong> Les outils d&#8217;IA peuvent analyser le code pour en déterminer la structure et la fonctionnalité, ce qui permet d&#8217;obtenir des informations qui ne sont pas forcément évidentes pour les développeurs humains. Cela peut s&#8217;avérer particulièrement utile lorsqu&#8217;il s&#8217;agit de systèmes hérités complexes ou mal documentés.</li>



<li class="justify-text"><strong>Rédaction de tests&nbsp;:</strong> L&#8217;IA peut également aider à générer automatiquement des tests basés sur le comportement du code, ce qui permet de gagner du temps et d&#8217;améliorer la qualité du code en identifiant les cas marginaux qui pourraient être négligés lors des tests manuels.</li>



<li class="justify-text"><strong>Refonte du code&nbsp;:</strong> Les outils pilotés par l&#8217;IA peuvent suggérer des améliorations et aider les développeurs à remanier le code graduellement. Ce processus de remaniement continu permet de garder la base de code propre et maintenable, réduisant ainsi la dette technique au fil du temps.</li>



<li class="justify-text"><strong>Génération de documentation&nbsp;:</strong> L&#8217;IA peut automatiquement générer et actualiser la documentation dans le cadre de CI/CD, ce qui est particulièrement utile dans les grands projets où la maintenance de la documentation peut être un défi.</li>
</ul>



<p>Ces tâches peuvent principalement être effectuées par le même type d&#8217;outils d&#8217;IA&nbsp;: les assistants de codage. &nbsp;<a href="https://www.codacy.com/">Codacy</a>,&nbsp;<a href="https://snyk.io/platform/deepcode-ai/">Snyk</a>&nbsp;et, bien entendu,&nbsp;<a href="https://github.com/features/copilot">github CoPilot</a> en sont quelques exemples.</p>



<h2 class="wp-block-heading"><strong>Conclusion&nbsp;: l&#8217;avenir de la gestion de code hérité grâce à l&#8217;IA</strong></h2>



<p class="justify-text">La gestion de code hérité reste un défi complexe qui nécessite une approche stratégique. Cependant, l&#8217;émergence de l&#8217;IA en tant qu&#8217;outil d&#8217;analyse, de test et de remaniement du code offre des possibilités de relever ce défi de manière plus efficace et plus rentable. L&#8217;évolution de la technologie de l&#8217;IA générative est encore en plein essor, et son rôle dans la gestion de code hérité ne fera probablement que s&#8217;accroître, offrant davantage de possibilités d&#8217;améliorer les processus de développement de logiciels.</p>



<figure class="wp-block-image aligncenter size-full is-resized is-style-default"><a href="/wp-content/uploads/2024/09/two-hands.png"><img decoding="async" width="1024" height="1024" src="/wp-content/uploads/2024/09/two-hands.png" alt="" class="wp-image-21160" style="width:455px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/09/two-hands.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/09/two-hands-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2024/09/two-hands-300x300.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/09/two-hands-768x768.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="justify-text">Toutefois, il ne faut pas non plus se focaliser sur l&#8217;IA&nbsp;: le meilleur remède contre le code hérité est encore de l&#8217;éviter, et ce, en appliquant les bonnes tactiques tout au long du cycle de vie du développement logiciel afin de maintenir la conception et le code aussi propres et à jour que possible. Dans un prochain article de blog, nous examinerons cette question plus en détail, en zoomant sur les différentes phases du cycle de vie afin de discuter de la manière d&#8217;éviter le code hérité et de la façon dont l&#8217;IA peut être utilisée au cours de chaque phase en vue d&#8217;y contribuer.</p>



<p></p>


]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Legacy Code Trotseren: Best Practices &#038; AI</title>
		<link>https://www.smalsresearch.be/legacy-code-trotseren-best-practices-ai/</link>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Wed, 25 Sep 2024 11:30:00 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[EDA]]></category>
		<category><![CDATA[legacy]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[software design]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[technical debt]]></category>
		<guid isPermaLink="false">/?p=21131</guid>

					<description><![CDATA[In deze blog bespreken we een aantal algemene strategieën om met legacy code om te gaan, en geven we een overzicht van wat artificiële intelligentie daar nog aan kan toevoegen.]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image alignleft size-full is-resized"><a href="/wp-content/uploads/2024/09/brain-code-image.png"><img loading="lazy" decoding="async" width="1024" height="1024" src="/wp-content/uploads/2024/09/brain-code-image.png" alt="" class="wp-image-21152" style="width:338px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/09/brain-code-image.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/09/brain-code-image-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2024/09/brain-code-image-300x300.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/09/brain-code-image-768x768.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p><em><a href="/code-herite-meilleures-pratiques-ia/">Version française</a></em></p>



<p class="justify-text">In de steeds veranderende wereld van softwareontwikkeling is legacy code een onderwerp dat vaak ter sprake komt, maar zelden goed wordt begrepen. Legacy code kan op verschillende manieren worden gedefinieerd, maar voor deze discussie beschouwen we ze als <em>elke code die nog steeds wordt gebruikt door een belangrijke toepassing, maar die zou moeten worden geüpgraded</em>. Misschien zijn er een nieuwe architectuurstijl of standaarden nodig, worden er nog verouderde frameworks gebruikt, of is de code geschreven in een niet langer ondersteunde programmeertaal. Of er is al te vaak niet meer ten gronde aan de code gewerkt en ze is vervuild geraakt met snelle fixes. Met andere woorden, het is code die steeds moeilijker te onderhouden wordt en die opnieuw moet worden geschreven, maar om een of andere reden niet wordt aangepakt. Sommigen noemen dit ook wel eens <em>technical debt</em>.</p>



<p class="justify-text">Maar wat nu als we een stap verder gaan en deze code niet alleen proberen te beheersen, maar ook proactief verbeteren? En kunnen we hierbij gebruik maken van nieuwe technologieën zoals AI?</p>



<span id="more-21131"></span>



<h3 class="wp-block-heading">Waarom Legacy-Code een Probleem Is</h3>



<figure class="wp-block-image alignright size-full is-resized"><a href="/wp-content/uploads/2024/09/technical-debt-imge.png"><img loading="lazy" decoding="async" width="1024" height="1024" src="/wp-content/uploads/2024/09/technical-debt-imge.png" alt="" class="wp-image-21156" style="width:338px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/09/technical-debt-imge.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/09/technical-debt-imge-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2024/09/technical-debt-imge-300x300.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/09/technical-debt-imge-768x768.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="justify-text">Legacy code brengt tal van uitdagingen met zich mee. De grootste daarvan is waarschijnlijk het feit dat ze de ontwikkeling vertraagt en onderhoud bemoeilijkt; of ze vraagt gespecialiseerde kennis van voorbijgestreefde hulpmiddelen. Zonder de juiste kennis en tools kan dit een gigantische kostenpost worden voor elk softwarebedrijf. Als de ontwikkelaars die de oorspronkelijke code schreven, bovendien ook nog het bedrijf verlaten hebben, kan het probleem nog groter worden. Over de ontwikkelaars gesproken: ook voor hen is <a previewlistener="true" href="https://stackoverflow.blog/2024/07/24/developers-want-more-more-more-the-2024-results-from-stack-overflow-s-annual-developer-survey/">technical debt een van de grootste ergernissen bij hun werk</a>.</p>



<p class="justify-text">Er zijn gelukkig een aantal manieren om met deze uitdagingen om te gaan, zelfs met behulp van de meest geavanceerde technologieën, zoals kunstmatige intelligentie.</p>



<h2 class="wp-block-heading">Strategieën om Legacy Code te beheren</h2>



<p class="justify-text">Er bestaat, jammer genoeg, geen magische oplossing die alle problemen met legacy code in een keer oplost. Het vereist een veelzijdige aanpak waarbij meerdere taktieken tegelijkertijd worden toegepast. Denk aan het analyseren van de code, het modulair opbouwen van nieuwe componenten en het continu onderhouden van de codebase, om ervoor te zorgen dat deze up-to-date blijft en goed is aangepast aan toekomstige behoeften.</p>



<p class="justify-text">Een eerste stap is het uitvoeren van <strong>statische analyse</strong>. Hierbij wordt de code onderzocht zonder deze daadwerkelijk uit te voeren, om zo potentiële problemen te identificeren zoals afhankelijkheden, beveiligingslekken, of <a previewlistener="true" href="https://refactoring.guru/refactoring/smells">zogenaamde ‘code smells’</a>. Met behulp van statische analysetools kunnen ontwikkelaars de structuur van de code beter begrijpen en probleemgebieden aanwijzen die verbetering behoeven. Deze tools zijn voor een deel ingebakken in een goede IDE, maar je kan er vaak nog extra kracht aan toevoegen.</p>



<p class="justify-text">Nadat de code is geanalyseerd, is het <strong>opzetten van testbanken</strong> essentieel, volgens het <a previewlistener="true" href="https://en.wikipedia.org/wiki/Test-driven_development">Test Driven Development</a> (TDD) paradigma. Dit creëert een veilige omgeving waarin verschillende tests kunnen worden uitgevoerd om ervoor te zorgen dat de code zich gedraagt zoals verwacht. Testen is cruciaal om bugs en prestatieproblemen vroegtijdig op te sporen, voordat er wijzigingen worden doorgevoerd. Als er voldoende test coverage is, wordt het trouwens een stuk veiliger om de code te refactoren, hetgeen we tijdens de volledige levenscyclus zullen moeten blijven doen, om ervoor te zorgen dat de code steeds beter wordt en zeker geen legacy status krijgt. Het opzetten van testbanken ondersteunt daarnaast ook continuous integration en deployment (CI/CD) processen, die essentieel zijn voor kwaliteitsbeheer op lange termijn.</p>



<p class="justify-text">Een andere belangrijke strategie is het refactoren van de code om deze <strong>modulair</strong> te maken. Door een monolithische codebase <a href="/van-n-tier-naar-microservices/" data-type="post" data-id="9702">op te splitsen in kleinere, beter beheersbare modules</a>, kunnen ontwikkelaars functionaliteiten isoleren, wat de code gemakkelijker maakt om te begrijpen, te onderhouden en te testen (en eventueel zelfs om ze te herschrijven). Deze <a href="/ecosysteem-architectuur/" data-type="post" data-id="16980">modularisatie</a> stelt verschillende teams ook in staat om tegelijkertijd aan verschillende onderdelen van de codebase te werken, wat de productiviteit verhoogt en de kans op fouten vermindert.</p>



<h2 class="wp-block-heading">De rol van AI in het aanpakken van Legacy Code</h2>



<p class="justify-text">Kunstmatige intelligentie biedt nieuwe mogelijkheden voor het beheren van legacy code, zeker nu, met de snelle evolutie van <em><a href="/llms-voor-code/" data-type="post" data-id="18875">generatieve AI</a></em>. Hoewel de huidige mogelijkheden van AI vaak beperkt zijn tot kleinschalige taken, is het potentieel om legacy codebeheer te transformeren aanzienlijk. AI kan helpen bij het analyseren van code, het schrijven van tests, het refactoren en zelfs bij het genereren van documentatie. Dit maakt AI een waardevol hulpmiddel voor ontwikkelaars.</p>



<ul class="wp-block-list">
<li class="justify-text"><strong>Code Analyseren</strong>: AI-tools kunnen code analyseren om de structuur en functionaliteit te bepalen, waardoor inzichten ontstaan die mogelijk niet direct duidelijk zijn voor menselijke ontwikkelaars. Dit kan vooral nuttig zijn bij het omgaan met complexe of slecht gedocumenteerde legacy-systemen.</li>



<li class="justify-text"><strong>Tests Schrijven</strong>: AI kan ook helpen bij het automatisch genereren van tests op basis van het gedrag van de code, wat tijd bespaart en de codekwaliteit verbetert door randgevallen te identificeren die tijdens handmatige tests over het hoofd kunnen worden gezien.</li>



<li class="justify-text"><strong>Code Refactoren</strong>: AI-gestuurde tools kunnen verbeteringen voorstellen en ontwikkelaars helpen om code stapsgewijs te refactoren. Dit continue refactoringsproces helpt om de codebase schoon en onderhoudbaar te houden, waardoor technische schuld in de loop van de tijd wordt verminderd.</li>



<li class="justify-text"><strong>Documentatie Genereren</strong>: AI kan automatisch up-to-date documentatie genereren en bijhouden als onderdeel van CI/CD, wat vooral nuttig is in grote projecten waar het bijhouden van documentatie een uitdaging kan zijn.</li>
</ul>



<p>Deze taken kunnen veelal worden uitgevoerd door dezelfde type AI tools: de zogenaamde <em>code assistants</em>. Een aantal voorbeelden zijn <a href="https://www.codacy.com/">Codacy</a>, <a href="https://snyk.io/platform/deepcode-ai/">Snyk</a> en, uiteraard, <a href="https://github.com/features/copilot">github copilot</a>.</p>



<h2 class="wp-block-heading">Conclusie: de toekomst van legacy codebeheer met AI</h2>



<p class="justify-text">Het beheren van legacy code blijft een complexe uitdaging die een strategische aanpak vereist. Maar met de opkomst van AI als hulpmiddel bij het analyseren, testen en refactoren van code, ontstaan er mogelijkheden om deze uitdaging op een meer efficiënte en kosteneffectieve manier aan te pakken. Generatieve AI-technologie is nog in volle ontwikkeling, en haar rol in legacy codebeheer zal waarschijnlijk alleen maar toenemen, wat nog meer kansen biedt voor het verbeteren van softwareontwikkelingsprocessen.</p>



<figure class="wp-block-image aligncenter size-full is-resized is-style-default"><a href="/wp-content/uploads/2024/09/two-hands.png"><img loading="lazy" decoding="async" width="1024" height="1024" src="/wp-content/uploads/2024/09/two-hands.png" alt="" class="wp-image-21160" style="width:455px;height:auto" srcset="https://www.smalsresearch.be/wp-content/uploads/2024/09/two-hands.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2024/09/two-hands-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2024/09/two-hands-300x300.png 300w, https://www.smalsresearch.be/wp-content/uploads/2024/09/two-hands-768x768.png 768w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a></figure>



<p class="justify-text">We mogen ons echter ook niet blind staren op AI: het beste medicijn tegen legacy code is ze te voorkomen, en dit door gedurende de volledige softwareontwikkelingslevenscyclus de juiste taktieken toe te passen om het ontwerp en de code zo clean en up-to-date mogelijk te houden. In een toekomstige blogpost zullen we hier nog dieper op ingaan, waarbij we op de verschillende fasen van de levenscyclus inzoomen, om te bespreken hoe we legacy kunnen vermijden, en ook hoe AI tijdens elke fase kan worden ingezet als hulpmiddel daarbij.</p>



<p></p>


]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>L&#8217;abandon du mainframe&#160;: un momentum unique&#160;!</title>
		<link>https://www.smalsresearch.be/labandon-du-mainframe-un-momentum-unique/</link>
		
		<dc:creator><![CDATA[Jean-Pierre Latour]]></dc:creator>
		<pubDate>Tue, 24 Jan 2012 09:23:42 +0000</pubDate>
				<category><![CDATA[Blog post]]></category>
		<category><![CDATA[cost cutting]]></category>
		<category><![CDATA[Mainframe]]></category>
		<category><![CDATA[Managing IT costs]]></category>
		<category><![CDATA[Migration]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[technical debt]]></category>
		<guid isPermaLink="false">/?p=3646</guid>

					<description><![CDATA[L’abandon du mainframe dans une organisation quelle qu’elle soit est un momentum unique. Une telle opération présente évidemment des risques importants. Mais elle représente aussi une réelle opportunité pour adresser un ensemble de problèmes récurrents dans la majorité des organisations, en souffrance depuis souvent trop longtemps. Nous voulons parler ici de : &#8211; la dette technique (1) [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>L’abandon du mainframe dans une organisation quelle qu’elle soit est un momentum unique.</p>
<p>Une telle opération présente évidemment des risques importants. </p>
<p>Mais elle représente aussi une réelle opportunité pour adresser un ensemble de problèmes récurrents dans la majorité des organisations, en souffrance depuis souvent trop longtemps.<br />
Nous voulons parler ici de :<br />
&#8211; la dette technique (1) ;<br />
&#8211; des manquements en matière de transfert de connaissance des seniors vers les juniors ;<br />
&#8211; de rationalisation des moyens ;<br />
&#8211; de saisie de nouvelles opportunités jusque là négligées.<span id="more-3646"></span></p>
<p>La dette technique concerne les branches mortes non éliminées dans les anciens programmes, la perte de maintenabilité due aux maintenances successives ( structures de programme ou de données lentement dégradées au cours du temps), le manque de réutilisation (le syndrôme du copier coller), les duplications de données, etc.</p>
<p>Les manquements en matière de transfert de connaissance font trop souvent l’objet de vœux pieux jamais vraiment réalisés. Une opération de migration, si elle se fait dans le cadre d’une bonne mixité juniors-seniors (par ailleurs une des conditions de succès de l&#8217;opération), oblige à ce transfert.</p>
<p>La rationalisation des moyens est aussi trop souvent lettre morte, parce que les équipes sont en permanence aux prises avec les exigences quotidiennes. Il s’agit ici de mettre en oeuvre le principe « One concern – One solution » :<br />
&#8211; au niveau technique&nbsp;: une seule base de données, un seul langage, un seul outil de développement, un seul outil de scheduling pour les chaînes batch, …<br />
&#8211; au niveau fonctionnel : un seul outil de modélisation, une approche décloisonnée sur les données et les fonctionnalités, …</p>
<p>En matière de nouvelles opportunités, il s’agit de s’intéresser à des sujets comme la virtualisation de serveurs (et pourquoi pas également, tant qu&#8217;à faire, des desktops), les solutions open source, les outils de gestion de règles métier, l&#8217;intégration continue, &#8230;</p>
<p>Les différents scénarios possibles doivent être évalués non seulement en fonction des coûts, délais et risques, mais aussi en regard de ce qu’ils apportent ou non par rapport aux quatre critères évoqués plus haut. Il serait dommage de les négliger dans l’analyse de décision.</p>
<p>______________________________________________________________________________________________</p>
<p><em>(1)<br />
Un projet de développement logiciel inclut une partie de conception (elle correspond à la définition de son architecture et  design technique).  Lors de la programmation, le respect de l&#8217;architecture et du design conditionne la qualité du projet.  Écrire le code source en suivant la conception définie en amont lui permet d&#8217;être cohérent, et de faciliter les activités de maintenance. On distingue pour l&#8217;essentiel deux types de maintenance&nbsp;:<br />
&#8211; la maintenance corrective : pour corriger les bug informatiques ;<br />
&#8211; la maintenance évolutive : pour modifier ou ajouter de nouvelles fonctionnalités.<br />
Lors des phases de maintenance un non-respect de la conception,  intentionnel ou non,  induit des coûts supplémentaires ultérieurs.  Ce sont les intérêts.  C&#8217;est pourquoi l&#8217;on parle de dette technique, pour montrer l&#8217;analogie avec la dette dans le domaine financier.  Comme dans le domaine financier, il vaut évidemment mieux rembourser la dette rapidement plutôt que de continuer à payer des intérêts sur la dette dans la durée.<br />
En résumé, quand on code au plus vite et de manière non optimale, on contracte une dette technique que l&#8217;on rembourse tout au long de la vie du logiciel sous forme de temps de développement de plus en plus long, et de bugs de plus en plus fréquents et difficiles à corriger.</em></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
