22 mai
Publié par sebastien.bois dans Applications Web, Applications Internet riches (RIA), Méthodologie
L’application web riche est une solution au besoin d’interaction entre les systèmes complexes d’information et les utilisateurs. Ce genre d’applications est de plus en plus réclamée par les utilisateurs de l’entreprise, exemple les agents d’un centre d’appels. Cette solution comporte de très nombreux avantages :
Cette solution comporte aussi quelques défis de taille. Parmi ces défis, la complexité technique associée à l’implantation de règles fonctionnelles est celui qui peut causer le plus de problèmes dans le cycle de développement d’une application.
Par exemple, pour la règle fonctionnelle suivante : “Afficher un voyant rouge si la quantité de pomme dans l’inventaire est plus petite que 10.” Cette règle se conceptualiserait simplement comme suit:
Par contre, l’implantation de ce pseudo code liera fortement les concepts énoncés avec des mécaniques techniques complexes. Pour le concept de “Obtenir l’inventaire” : Celui-ci sera lié avec une demande, probablement asynchrone, du fureteur au serveur. Le serveur, une fois l’information obtenue du système de gestion de données, retournera une réponse au fureteur où devra être codé une technique pour assigner la réponse du serveur à la demande précédente de “Obtenir l’inventaire“.
Pour le concept “Si la quantité est plus grande ou égale à 10 alors neutraliser le voyant rouge” : Celui-ci sera lié avec une comparaison entre un paramètre externe (la valeur 10) et une série de lignes de code pour faire l’évaluation, une décision (le code à exécuter si la comparaison est vraie ou fausse) et une demande à un composant graphique pour changer d’apparence (un autre module qui possède aussi toute une complexité technique).
Cette règle fonctionnelle pourtant simple a le potentiel de voir sa signification dissoute parmi des centaines de ligne de code sur plus d’une plateformes et en plus d’un langage de programmation. Une application complète réalisée de cette manière implanterait plusieurs centaines de fonction réparties dans plusieurs milliers, ou même des millions de lignes de code. Le cycle de vie de cette application devient alors un cauchemar pour le développeur qui devra la modifier et pour le gestionnaire qui sera incapable d’obtenir une évaluation fiable de l’effort pour accomplir cette tâche.
Abstraire le fonctionnel du technique dans une interface web riche devient ici un enjeux qu’il convient d’inscrire formellement dans la planification d’un projet informatique. Cette tâche doit être accomplie dans la phase de design de l’application. Le design doit permettre au développeur de transposer les informations contenues dans le dossier fonctionnel en élément technique qui en respecte la sémantique.
Pour illustrer la dissociation du fonctionnel et du technique, reprenons l’exemple précédant:
Dans le cas du concept : “Obtenir l’inventaire”
Le design doit alors fournir une mécanique répondant au besoin de “question-réponse“. Cette mécanique sera disponible pour implanter toutes les règles associées à ce besoin. Le développeur utilisera celle-ci comme une abstraction à plus haut niveau. Il n’aura plus à se soucier de ses spécificités techniques. La complexité technique se sépare alors de la règle fonctionnelle.
Dans le cas du concept de “Si la quantité est plus grande ou égale à 10 alors neutraliser le voyant rouge” :
Le design doit alors fournir plusieurs mécaniques répondant au besoin suivant :
La définition de composants visuels comme :
Le développeur peut alors transposer les concepts exprimés en langage naturel dans le dossier fonctionnel en éléments prédéfinis du design. Le design s’articule autour de concepts clefs qui sont facilement reconnaissables dans la langue française ou anglaise. Une documentation ayant pour sujet «comment utiliser le design » explique aisément au développeur comment faire le pont entre les besoins exprimés dans le dossier fonctionnel et la manière de réalisation de l’application. De plus, ces éléments de design se réfèrent également à la notion de « design patterns ». Ces « design patterns » sont des concepts généralement reconnus dans l’industrie. Ceci permet d’avoir un vocabulaire commun qui exprime des concepts de design très sophistiqués avec une appellation simple. La communication de ces connaissances en est grandement améliorée.
Ce paradigme permet de :
En résumé, cet effort de design offre autant une relation de coût et bénéfice avantageuse qu’un positionnement stratégique concurrentiel des outils de productivité de l’entreprise. L’environnement en constante évolution dans lequel évolue l’entreprise met une pression sur le cycle de développement de ses applications informatiques. Les changements dans les systèmes informatiques sont grandement simplifiés si un design adéquat à servi à leurs construction.
Flux RSS pour les commentaires de cet article. URI de TrackBack.
Laisser un commentaire