Développement logiciel traditionnel vs développement low-code

Le développement logiciel a bien évolué dans les dernières décennies. Auparavant réservé aux passionnés d’informatique, il est longtemps resté inaccessible au commun des mortels. De nos jours, l’apprentissage des langages informatiques et du fonctionnement souvent contre-intuitif des ordinateurs n’est plus un obstacle au développement de logiciels.

Table des matières

En effet, des environnements de développement allégés permettent aux amateurs comme aux professionnels de mettre la main à la pâte et de créer des applications en une fraction du temps requis avec les méthodes traditionnelles.

Ces environnements, généralement offerts en tant que services auxquels on peut s’inscrire, vous évitent de partir de zéro. Il suffit d’assembler diverses fonctions, librairies et autres composantes préfabriquées dans un environnement où les difficultés ont été largement évacuées, et où les possibilités sont limitées à des résultats fonctionnels.

C’est ce qu’on appelle le développement low-code, puisque la quantité de code requise de la part du programmeur est très limitée. Il offre quelques avantages par rapport au développement logiciel traditionnel.

Mais commençons par le début…

Qu’est-ce que le développement logiciel traditionnel ?

Développement traditionnel de logiciels

Le développement logiciel traditionnel est une opération d’envergure.

Dans ce domaine où ni le chemin ni la destination ne sont concrets, il est important de respecter une démarche rigoureuse pour ne pas se perdre en cours de route. En effet, un logiciel est une série d’instructions écrites en un langage étranger, fonctionnant à l’intérieur d’une machine dont le fonctionnement est invisible à l’œil nu.

Le résultat final n’est lui-même que partiellement visible pour l’utilisateur ou le programmeur, et déclarer que le développement d’un logiciel est terminé est bien souvent un acte de foi tant sont nombreuses les façons dont les bogues peuvent survenir.

En effet, à l’inverse, par exemple, de la construction d’une maison ou de l’assemblage d’une voiture, il est difficile ou impossible pour les développeurs d’entrevoir avec précision de quoi aura l’air le produit final. Il n’y a pas d’indicateurs concrets permettant de comprendre intuitivement le progrès du projet, ou d’anticiper les obstacles et la façon de les surmonter.

Ces obstacles peuvent être de nature physique, dans les cas les plus simples, ou logicielle, dans les cas plus complexes. Il est relativement aisé d’évaluer les capacités du matériel informatique, mais les limites d’un langage informatique ou de son interopérabilité avec l’ensemble des équipements ne sont pas toujours claires avant d’avoir été testées, et on s’aventure alors en terrain inconnu.

C’est pourquoi les méthodes traditionnelles de développement logiciel sont axées avant tout sur une structure rigide et rigoureusement détaillée.

Pour s’assurer de ne rien oublier, et pour faire en sorte que chaque avancée est établie sur des bases solides, il est impératif de planifier, de documenter et de baliser méticuleusement les étapes à suivre. Tout aussi crucial est de faire en sorte que tous les développeurs sachent exactement ce qui est attendu d’eux à chaque instant. Pour parvenir à atteindre ces objectifs nombreux et ambitieux, il a fallu développer des méthodes de travail élaborées.

Quels sont les modèles pour le développement logiciel traditionnel ?

Modèles traditionnels de développement de logiciels

Il existe plusieurs modèles pour le développement logiciel traditionnel : le modèle en cascade, le modèle itératif (en spirale) et le modèle en V en sont quelques-uns.

Modèle en cascade

Modèle en cascade

Créé par la marine américaine dans les années 60, le modèle en cascade, où les étapes de production se succèdent tout simplement les unes après les autres, est le plus ancien et le plus utilisé. Sa linéarité et sa simplicité en font le modèle le plus facile à comprendre.

Son nombre d’étapes peut varier, mais il repose avant tout sur la définition rigoureuse des exigences, sur laquelle se base le reste des étapes : l’architecture, le design détaillé, le développement (code), la phase de test, le déploiement et la maintenance.

C’est un modèle rigide qui ne fonctionne que s’il est suivi à la lettre, et qui doit absolument reposer sur des exigences clairement définies; il est donc difficilement modifiable en cours de route.

Le modèle itératif

Le modèle itératif

Aussi appelé modèle en spirale, il cherche à remédier à la rigidité du modèle en cascade.

Il part du principe que le développement n’est pas simplement une succession unidirectionnelle d’étapes, mais plutôt une succession d’itérations de ces étapes. On repasse donc plusieurs fois sur les mêmes étapes, jusqu’à ce que les objectifs soient atteints.

L’avantage principal de ce modèle réside dans la possibilité de corriger le tir en cours de route si le développement ne se déroule pas comme prévu. Et comme ce modèle implique de repasser sur des étapes précédentes, il n’exige pas la perfection au premier coup. Il permet donc de sauver du temps et de gagner en flexibilité, puisqu’il est possible de savoir assez tôt si on est sur la bonne voie ou d’ajouter des fonctionnalités sans avoir à réimaginer le concept.

Modèle en V

Modèle en V

Enfin, il y a le modèle de développement en V, hérité du modèle en cascade, mais qui permet d’attaquer des projets plus complexes en ajoutant des étapes de test plus élaborées et une récursion dans le développement.

Le V est formé par la branche des étapes de test qui commencent à la fin du développement et qui remontent le cycle vers les premières étapes, en les optimisant au passage.

Ces trois modèles, s’ils ont fait leurs preuves, peuvent gagner à être améliorés.

Quelques exemples de logiciels traditionnels

logiciel traditionnel

Les méthodes traditionnelles peuvent être adaptées pour des logiciels très structurés.

On peut penser notamment aux logiciels de gestion des ressources humaines, de gestion de contenu, aux logiciels internes des banques. Ces situations ont en commun de privilégier la stabilité et la sécurité au détriment des coûts ou de la rapidité d’exécution.

Les méthodes traditionnelles peuvent fonctionner pour ces situations, puisque les exigences détaillées sont la fondation du développement, et que chaque étape ne peut être complétée sans que tous les critères soient respectés à la lettre.

Ici, la communication constante entre le client et le développeur, ou l’ajout d’exigences en cours de mandat, ne sont pas les bienvenus, puisqu’ils peuvent présenter des risques à la sécurité et à la stabilité.

Quels sont les avantages des méthodes traditionnelles de développement logiciel ?

pouces en l'air

Les méthodes ne deviennent pas « traditionnelles » si elles ne fonctionnent pas. Celles qui héritent de ce titre présentent donc évidemment des avantages.

Les méthodes dites « traditionnelles » sont celles qui sont établies depuis longtemps. À noter que la méthode « agile », bien que très populaire ces dernières années, ne sera pas considérée comme traditionnelle pour cet article.

Le low-code, quant à lui, est une invention très récente qui n’a été rendue possible qu’après plusieurs décennies de développement traditionnel. Après tout, les composantes précodées du low-code proviennent du développement de logiciels traditonnel.

Les méthodes traditionnelles, donc, présentent plusieurs avantages.

La liberté

ampoule de liberté

Le premier avantage, et non le moindre, est celui de pouvoir créer tout ce qu’on veut. Puisqu’on part de zéro et qu’on doit tout construire, on n’est théoriquement limité que par notre ambition et nos moyens.

Dans quel(s) langage(s) le logiciel sera-t-il créé ? Pour quel système d’exploitation ? Quelle sera sa portée ? Quelles seront ses capacités ? Les réponses à ces questions peuvent toutes être taillées sur mesure pour répondre à la demande du client.

Pour autant que ses exigences soient claires et accessibles, le client pourra avoir le produit qu’il désire à la fin du développement.

La facilité

La facilité

Ensuite, comme il s’agit de méthodes à la structure séquentielle préétablie, il est facile d’en faire le suivi et d’évaluer les coûts et le temps requis. Puisque les exigences initiales et les objectifs de chaque étape sont clairement établis, la direction comme les membres de l’équipe n’ont aucun mal à diriger leurs questions et à mobiliser les bonnes ressources pour surmonter les obstacles.

L’autonomie

L’autonomie

La rigidité des méthodes traditionnelles, qui peut paraître problématique, peut également être une qualité, puisqu’elle offre la possibilité de progresser sans apport régulier de la part du client. Les développeurs peuvent travailler sur les livrables sans craindre de faire fausse route ou d’être paralysés par l’incertitude, puisqu’ils ont rarement besoin d’attendre les réponses du client avant d’avancer.

La rentabilité

Les méthodes traditionnelles étant très claires, il est aisé d’en calculer les coûts de main-d’œuvre et de matériel, et les imprévus n’arrivent que rarement.

La direction

La direction

Comme les méthodes traditionnelles ont une structure séquentielle rigide, que le contenu de chaque étape est connu et que les objectifs sont clairs tout au long du développement, il est aisé d’évaluer rapidement le temps requis, et d’accélérer la production si nécessaire. En effet, progresser rapidement se fait bien mieux en terrain connu, ce qui est le principe des méthodes traditionnelles.

Et si elles sont généralement moins rapides que les projets effectués en low-code, c’est surtout parce qu’elles s’attaquent généralement à des projets beaucoup plus ambitieux.

Quels sont les désavantages des méthodes traditionnelles de développement logiciel ?

pouce vers le bas

Les méthodes traditionnelles n’ont évidemment pas que des avantages.

La complexité

Le développement traditionnel peut être trop complexe

Tous les projets de développement logiciel n’ont pas la même envergure, et des méthodes plus légères sont parfois préférables. En effet, les méthodes traditionnelles exigent des connaissances de programmation relativement poussées, puisqu’il faut coder des logiciels dans leur entièreté.

Une connaissance des langages de programmation, des systèmes d’exploitation, des environnements de production, des serveurs et des autres composantes informatiques sont nécessaires pour atteindre un degré de compétence adéquat.

Les occasions de faire fausse route sont nombreuses, et un débutant ne peut pas tout simplement se lancer dans le développement logiciel sans le soutien approprié.

La lourdeur

le développement traditionnel peut être lourd

Un logiciel des années 2020 se doit d’être hébergé sur le nuage, ou du moins, d’être entièrement fonctionnel sur celui-ci. Le développement idéal doit pouvoir se faire de n’importe où, sans avoir besoin d’avoir accès à des ordinateurs ou serveurs particuliers. Une fois le logiciel terminé, il doit aussi être accessible à partir de n’importe où.

Il n’est pas toujours facile de remplir ces critères en suivant les méthodes traditionnelles, puisqu’il faut créer l’environnement dans lequel le développement aura lieu, et il est difficile de le transférer en cours de route si nécessaire.

La rigidité

le développement traditionnel peut manquer de flexibilité

Une fois établies les exigences du client et les étapes à suivre pour réaliser le développement du logiciel, les méthodes traditionnelles ne laissent pas beaucoup de place aux changements d’idées.

Comme elles impliquent un développement de A à Z, le temps investi peut être important même pour une tâche mineure, et il devient alors coûteux de revenir en arrière pour apporter des modifications aux exigences.

De plus, les logiciels créés dans ces conditions sont généralement spécialisés pour fonctionner dans des environnements précis — avec un langage de programmation, un système d’exploitation ou du matériel particulier — et se prêtent mal aux modifications imprévues.

Pour ces mêmes raisons, des fonctionnalités créées en cours de développement sont rarement réutilisables ailleurs, puisqu’elles sont elles aussi spécialisées. Il faut donc un client ou un utilisateur qui soit prêt à aller au bout du processus une fois qu’il est lancé.

Enfin, la faible possibilité de modification propre à ces méthodes fait en sorte que le client peut se retrouver avec un logiciel qui est le résultat de la compréhension des programmeurs, mais qui ne correspond pas entièrement à ses désirs.

Qu’est-ce que le développement low-code ?

développement low-code

Comme son nom l’indique, le low-code est une méthode de programmation pour laquelle la quantité de code devant être fournie par le développeur est maintenue au minimum. On entend par là que la majorité du code a été pré-écrite, et que le programmeur peut se contenter de choisir parmi des composantes déjà établies, sans avoir à tout programmer de zéro.

Pour illustrer la méthode, on peut penser au prêt-à-porter vs le sur mesure.

Pour une image plus collée sur la réalité, on peut imaginer une application dans laquelle l’utilisateur peut glisser-déposer ou copier-coller différents dossiers et fonctions, écrire lui-même des fonctions entières, ou simplement tirer parti de celles qui sont déjà offertes dans l’interface.

C’est une approche basée sur le visuel, dont l’objectif est de créer des outils ad hoc pour l’entreprise et de faire des employés les maîtres de leurs domaines pour les sujets dont ils sont experts.

Quelques exemples de plateformes low-code

Il existe plusieurs plateformes pour vous lancer dans la programmation low-code. Nous en présenterons ici quelques-unes, notamment Claris FileMaker, OutSystems, Appian et Microsoft PowerApps.

FileMaker

Claris FileMaker logo

Ce logiciel de modèle software as a service (logiciel en tant que service) publié par Claris est une application multiplateforme de bases de données relationnelles. Elle est dotée d’une interface graphique et de fonctionnalités de sécurité permettant aux utilisateurs de modifier des bases de données en glissant-déposant divers éléments dans des formulaires, écrans ou présentations, dans le but de créer des applications rapidement et de façon autonome.

Ce logiciel est maintenant offert sur le Web et peut être utilisé sur n’importe quel système d’exploitation. C’est un outil pratique pour les entreprises souhaitant avoir les moyens de développer à l’interne des solutions logicielles adaptées à leurs besoins commerciaux particuliers.

Ses points forts sont la facilité d’utilisation, un bon soutien technique et une possibilité de personnalisation élevée.

OutSystems

OutSystems logo

Fondée en 2001 à Lisbonne, OutSystems est une plateforme de développement low-code qui a connu un succès soudain
avec un financement évalué à plusieurs centaines de millions de dollars de Goldman Sachs et KKR. Elle a atteint le statut de « licorne » sur les marchés financiers et sa valorisation totale avoisine les 9,5 milliards de dollars.

Son succès auprès des développeurs est à l’avenant : selon PCMag, il pourrait s’agir de la plus puissante plateforme de développement low-code pour les programmeurs. OutSystems compte parmi les plus anciennes plateformes low-code. Elle est aussi la mieux adaptée à cette philosophie.

Elle offre également une expérience de programmation guidée et sur mesure, adaptée au rôle et au niveau de compétence du programmeur. Sa bibliothèque de ressources d’aide et de formations interactives en fait un choix sensé, tout comme sa boutique bien remplie de composantes et d’intégrations précodées.

Appian

Appian logo

Avec son application du même nom, l’entreprise de Virginie offre une plateforme payante de développement low-code pour les entreprises, qui met l’accent sur l’aspect collaboratif de la création.

Comme ses concurrents, Appian a fait ses débuts au tournant du 21e siècle dans un désir d’aider les entreprises à améliorer leurs processus commerciaux.

Ciblant les grandes entreprises, elle intègre dans sa plateforme une fonctionnalité de collaboration et de gestion des tâches, ainsi qu’un réseau intranet.

Sa fonction Quick Apps offre une expérience littéralement no-code, de même que des règles de décision permettant de simplifier une logique commerciale complexe.

Microsoft Power Apps

MS power apps logo

Une des plateformes les plus récentes, Power Apps peut tirer parti des moyens du géant de l’informatique pour surfer sur la vague du low-code avec une offre plus épurée que ses concurrents, mais tout aussi puissante.

Sa relative jeunesse lui confère une interface utilisateur moins encombrée, et ses capacités sont à la hauteur des attentes. Ses gammes de fonctionnalités, d’interfaces utilisateur, de modèles et d’intégrations sont tout à fait adéquates. Sa fonctionnalité pour appareils mobiles se distingue.

Si elle était plus facile d’utilisation, elle pourrait sans aucun doute rivaliser avec les poids lourds de la catégorie.

Quelles sortes d’applications peuvent être développées avec des plateformes low-code ?

vitesse de l'application à code bas

Bien qu’il ne soit pas encore à la hauteur pour le développement d’applications plus cruciales, le low-code permet de produire, entre autres, des très bonnes applications pour le service à la clientèle, l’efficacité organisationnelle et la modernisation des applications obsolescentes.

Plus concrètement, on peut penser à une application pour le service aux étudiants d’une université, et à une autre qui gère le traitement des commandes d’une entreprise de vente par correspondance. On peut aussi imaginer une application qui traite les factures ou les inscriptions d’une organisation, ou même les réclamations d’une compagnie d’assurance.

Le low-code permet aussi de moderniser les applications obsolescentes, notamment en permettant de faire migrer Lotus Notes ou Microsoft Access sur le nuage, ou en ajoutant des fonctionnalités à vos systèmes comptables.

Les possibilités du low-code sont innombrables et sa pertinence dans l’offre des plateformes de développement n’est plus à démontrer. Grâce aux avancées dans l’intelligence artificielle, ces possibilités ne font que grandir chaque jour.

L’intelligence artificielle utilise ici le traitement du langage pour interpréter et anticiper les besoins du programmeur. Il y a donc fort à parier que cette approche fera école et viendra perturber le monde du développement logiciel.

Quels sont les désavantages des plateformes de développement low-code ?

Inconvénients du développement à code bas

Comme vous effectuez du développement dans un environnement déjà limité et balisé par une autre personne, vos possibilités ne sont pas les mêmes. Il est bien possible que la fonctionnalité dont vous rêvez ne puisse pas être intégrée.

De plus, les questions de propriété intellectuelle peuvent vous compliquer la tâche. En effet, les composantes précodées que vous utiliserez, et les serveurs sur lesquels votre application sera hébergée, sont légalement la propriété du propriétaire de la plateforme. Si le propriétaire de la plateforme venait à vouloir la modifier, vous pourriez perdre l’accès à ces composantes.

Quels sont les avantages des plateformes de développement low-code ?

Avantages du développement à code bas

Les avantages sont nombreux : faible coût, facilité d’utilisation, pas de maintenance requise, délai de production très réduit (quelques semaines au lieu de quelques mois).

Dans le monde du développement logiciel, l’attrait du low-code est majeur : le fait que des gens sans expérience de programmation puissent développer des applications de base de façon autonome peut représenter d’énormes économies potentielles pour une entreprise.

Par exemple, le low-code permet à la personne la plus familière avec un dossier — l’expert maison, si on veut — d’être celle qui développe la solution logicielle. En ne considérant que le temps et l’argent qui seraient requis pour déléguer la programmation à une tierce personne, le jeu en vaut déjà la chandelle.

La facilité d’utilisation n’est pas à sous-estimer. Imaginez si vos programmeurs d’un jour devaient écrire le code derrière chaque couleur apparaissant à l’écran, derrière chaque bouton du logiciel, en plus d’écrire les fonctions complexes régissant le fonctionnement de vos systèmes.

Le low-code est une approche basée sur le visuel – toutes les fonctions de base sont déjà établies et le programmeur peut se concentrer sur l’essentiel. Les techniques de base déjà omniprésentes sur les ordinateurs, comme le glisser-déposer ou le copier-coller, permettent à un débutant de progresser rapidement.

Facteurs à considérer si vous souhaitez passer d’une plateforme à l’autre

considérations à prendre en compte lors du passage d'une plate-forme à l'autre

Passer entièrement du développement traditionnel au développement low-code n’est pas chose facile. En fait, il vaut sans doute mieux considérer ces deux approches comme complémentaires et non concurrentes. Les solutions low-code peuvent être combinées aux logiciels traditionnels pour améliorer la fonctionnalité et la sécurité ainsi qu’étendre les capacités.

Si les entreprises peuvent certainement tirer profit de la liberté d’innover qu’apporte le développement low-code, la migration à grande échelle doit être entreprise avec une équipe de développeurs expérimentés, afin d’optimiser la structure, la sécurité et les sauvegardes des applications sous-jacentes, et l’intégrité des données. Même si les progrès de l’intelligence artificielle permettaient de développer d’immenses applications dès demain, une surveillance humaine sur l’entièreté du processus sera sans doute toujours nécessaire.

Sources :

https://www.cs.uct.ac.za/mit_notes/human_computer_interaction/htmls/ch03s04.html

https://www.kpipartners.com/blog/traditional-vs-agile-software-development-methodologies

https://www.objectivity.co.uk/blog/low-code-traditional-development/#An_Overview

https://serengetitech.com/business/traditional-sdlc-vs-rad/#:~:text=The%20most%20popular%20traditional%20Software,to%20the%20application%20development%20process.

https://www.geeksforgeeks.org/software-engineering-spiral-model/

https://www.geeksforgeeks.org/difference-between-traditional-and-agile-software-development/

https://www.ionos.fr/startupguide/productivite/modele-en-spirale/

https://fr.wikipedia.org/wiki/Cycle_en_V

https://www.pcmag.com/reviews/outsystems

https://www.techradar.com/reviews/claris-filemaker-pro-19-review

https://www.pcmag.com/reviews/microsoft-powerapps

https://www.pcmag.com/reviews/appian

https://techcrunch.com/2023/01/11/blaze-makes-coding-more-accessible-with-ai-driven-no-code-app-builder/

https://www.mendix.com/blog/what-can-you-build-with-low-code-platform/#:~:text=With%20low%2Dcode%2C%20you%20can,Excel%2C%20etc.%20to%20the%20cloud

https://eternalsunshineoftheismind.wordpress.com/2013/02/04/traditional-methods-of-software-development/