Un programme informatique réponds toujours à un besoin. Sa mission ? Accomplir des tâches précisément définies à l’intérieur d’une organisation elle-même construite par l’assemblage de processus. Cependant rien n’est gravé dans le marbre, et un logiciel peut être spécialisé – « orienté métier » – sans pour autant que cela limite l’accroissement de son périmètre fonctionnel. Polyvalence des profils professionnels oblige, les outils doivent aujourd’hui permettre de se diversifier, de cohabiter avec des systèmes tiers mais aussi d’accélérer la réalisation d’opérations connues dans les versions antérieures. Voici quelques pratiques, que j’ai expérimenté et adopté comme lignes de conduite dans le développement ou l’intégration de solutions. Objectif : rendre les applications « time proof ».
Soigner l’organisation et l’accès aux données
Les programmes exploitent et alimentent très souvent des bases de données. L’organisation et la typologie des données est donc primordiale. Quelles entités (acteurs, artefacts…) ? Quels points de vues sur leurs propriétés? Quelles interactions entre ces entités ? Tout peut être résumé en une seule question dont les réponses peuvent être multiples (et donc à hiérarchiser) : quelles sont les informations porteuses de sens dans le système d’information ? Le modèle de données doit être transparent et compréhensible par toutes les parties prenantes du projet, y compris les utilisateurs finaux… surtout par les utilisateurs finaux ! Ces derniers seront mieux à même de vous faire part de leurs nouveaux besoins en terme d’accès aux données, le moment venu.
Découper les tâches… à bon escient !
Séparer les traitements dans l’exécution d’une application, cela peut paraître une évidence pour des développeur aguerris… et pourtant ! Avec des programmes appelés à toujours plus de communication (par mails, par flux, par exportation dans de multiples formats…), il est tentant d’ajouter la portion de code qui permettra de rendre « communicante » telle ou telle fonctionnalité… Alors, faut-il isoler systématiquement ces tâches ? Tout dépends de leur volume, qui peut être parfois révélateur de leur importance pour l’organisation… Encore une fois, on privilégiera le sens pour organiser ses traitements et leurs communications. Les demandes d’évolution concernent souvent la qualité de la communication des applications davantage que leurs processus intrinsèques. Cet équilibre ne doit donc pas être négligé.
Normaliser les entrées et sorties, automatiser leurs formatages
Les applications web ont mis en avant d’une manière extraordinaire la circulation inter-traitement des données : les variables sont injectées dans des URL, dans des cookies, se réfugient dans des caches, apparaissent dans le texte des pages ou s’invitent dans les formulaires pour finalement se poser dans des bases de données… avant de repartir pour un nouveau tour de manège ! Concevoir un programme en ayant une cartographie des variables exploitables de traitement en traitement, permet de gagner un temps précieux dans le développement de nouvelles fonctionnalités. Il s’agit vraiment de créer un vocabulaire. Idem pour le formatage de ces données (dates, numéros de téléphones, mail, etc.) : on parle ici de définir une grammaire, et les règles ne changent pas tous les jours, alors autant les écrire de manière consciencieuse pour ne pas avoir à les réécrire au moment d’aller plus loin.
Laisser la porte ouverte à l’hybridation des fonctionnalités
Il y a peu, des utilisateurs d’une application de réservation de places que j’ai conçue, me demandaient comment dupliquer un évènement à partir d’un original précédemment créé, de manière à n’avoir à changer que certaines informations avant d’enregistrer un quasi clone. J’avais tellement séparé les tâches dans mon esprit – entre création et édition d’évènement – que je bloquais sur cette demande, qui a finalement trouvé une réponse très rapide, à travers un formulaire d’édition (avec chargement des données de l’évènement original)… qui crée un nouvel enregistrement une fois validé. Parfois tout est déjà développé pour évoluer, il suffit de prendre le recul nécessaire et de faire les bons assemblages.
Favoriser la transmission d’information aux autres applications
Une application évolue au sein un écosystème dans lequel les échanges sont de plus en plus importants. Ne pas avoir de capacité à communiquer peut polluer la vie de vos utilisateurs finaux… XML permet de répartir le travail équitablement entre deux parties, et peut être interprété très facilement… à méditer !

