mercredi 2 avril 2008

Plusieurs moteurs graphiques

Notre longue expérience de développeurs sous Microstation nous a appris l'intérêt d'utiliser un moteur puissant et ergonomique pour interagir avec des données spatiales : affichage performant, impression de qualité, richesse des outils d'intégration. Notre expérience (également longue et riche) en développements d'applications Web nous a également appris que la majorité des applications 'finales' étaient couvertes fonctionnellement à l'aide d'un jeu limité d'outils très simples (à condition que leur ergonomie soit suffisamment riche et dynamique). Un outil comme Microstation est surdimensionné pour la plupart des postes de travail.

Dans ce projet, nous avons souhaité utiliser un moteur graphique 'sur étagère' pour prendre en charge l'affichage et l'interaction avec les données spatiales. Pour plusieurs raisons : (1) les optimisations propres à ce genre d'outils sont une affaire de spécialistes, et (2) nous souhaitions pouvoir intégrer différents moteurs graphiques. Nous avons défini une interface neutre pour isoler ViSit Anywhere du moteur graphique ; nous avons ensuite développé deux implémentations concrètes de cette interface : pour Microstation XM dans un premier temps, puis pour un composant librement redistribuable ensuite. Nous pensons être en mesure de faire une implémentation similaire pour Autocad en quelques semaines, sil le besoin s'en fait sentir.

Dans cette introduction, j'ai volontairement simplifié mon discours en parlant d'une interface. En réalité, nous avons conçu plusieurs interfaces, pour mieux décrire les fonctionnalités requises et permettre différents niveaux d'implémentation. Nous avons identifié quatre domaines clés pour décrire les interactions entre ViSit Anywhere et un moteur graphique quelconque :
  • l'intégration de l'interface utilisateur,
  • l'affichage de fichiers graphiques (vecteur et raster), assurant la continuité spatiale ('seamless mapping'),
  • la composition et l'impression,
  • la manipulation par l'utilisateur d'objets graphiques.

Intégration de l'interface utilisateur : l'objectif est de présenter une interface identique quelque soit le moteur choisi. Un moteur graphique 'composant de programme' s'intègre comme un simple contrôle dans l'application, pas un éditeur évolué tel que Microstation. L'interface permet d'isoler ViSit Anywhere de ces détails, qu'il héberge le moteur graphique ou qu'il soit intégré dans Microstation XM.

Avec un composant CAO, le graphique est complètement intégré dans la fenêtre de l'application ViSit Anywhere.

Avec un moteur CAO comme Microstation XM de Bentley Systems, la fenêtre de l'application est intégrée dans l'éditeur. L'interface ViSit Anywhere est identique, et tous les outils de Microstation restent accessibles.

Affichage de fichiers graphiques : La performance de ViSit Anywhere au niveau de l'affichage des données graphiques repose sur l'utilisation de fichiers graphiques optimisés pour le moteur graphique, même pour les données spatiales managées (gérées au niveau de l'objet par le gestionnaire de transactions). L'interface isole ViSit Anywhere des détails d'implémentation en fournissant un modèle abstrait de description des fichiers et des couches. Le rendu graphique peut être légèrement différent d'un moteur à l'autre, mais le contenu et le géo-référencement des données sont identiques.

Composition et impression : chaque moteur utilise un paradigme spécifique pour décrire la composition de données et piloter les impressions. L'interface repose un modèle abstrait de description des compositions (cartouche, mise en page et mise à l'échelle, encarts, etc). Son implémentation est optionnelle.

Manipulation d'objet graphiques : Dans ViSit Anywhere, l'utilisateur manipule les données spatiales managées à l'aide d'outils développés en .NET. L'interface de programmation isole complètement l'outil (1) de la gestion des changements (alimentation de la transaction longue) et (2) du moteur graphique sous-jacent. Pour uniformiser l'interaction avec les données spatiales, nous avons du choisir entre plusieurs approches : sélection préalable puis choix de la commande ou manipulation à l'aide de poignées, choix préalable de la commande puis identification / acceptation (ou rejet) à l'aide des boutons de la souris, etc... Nous avons retenu le modèle de Microstation, qui conjugue productivité et intuitivité. L'objet identifié sous le curseur (automatiquement ou par un clic gauche) est proposé (surbrillance) ; l'utilisateur peut l'accepter (clic gauche) ou le rejeter (clic droit pour atteindre le prochain élément). Pour la petite histoire, le fait d'adopter le modèle mis en oeuvre dans Microstation ne nous a pas fait économiser une implémentation : nous avons trouvé une erreur dans Microstation XM (reconnue par Bentley) , et nous avons du complètement le reprogrammer.

La mise en place d'une interface générique vers un moteur graphique a représenté un gros travail de conception, mais les gains obtenus sont considérables : indépendance vis à vis des fournisseurs de technologie CAO, limitation du code spécifique, uniformisation de l'interface, souplesse de déploiement, capacité d'évolution. Alors, quel moteur utiliser ? Le bureau d'étude travaillera toujours avec Microstation (ou Autocad), pour conjuguer sa richesse fonctionnelle au travail collaboratif sous Visit Anywhere. La majorité des utilisateurs trouvera dans les outils de ViSit Anywhere toutes les fonctionnalités requises pour ses tâches et utilisera le composant graphique intégré, moins coûteux et plus facile à déployer.

vendredi 21 mars 2008

Les gestionnaires de réseaux

Nous concevons ViSit Anywhere comme un outil destiné aux gestionnaires de réseaux de distribution. Pourquoi limiter un tel produit à une cible aussi étroite (une niche) ? Ses fonctionnalités de base (client léger d'édition de données spatiales) permettent de couvrir un spectre très large d'applications : une collectivité pourrait l'utiliser pour maintenir son système d'information géographique, une entreprise pour gérer son parc immobilier, etc.

Dès le début de ce projet; nous avons adopté 'eXtreme Programming' (XP), une méthode de développement 'Agile' qui commence à être reconnue dans le monde du développement de logiciel. Un aspect essentiel de cette approche est son exigence d'une définition précise et concrète des objectifs à atteindre, exprimée du point de vue de l'utilisateur. Pour éviter par exemple qu'un programmeur ajoute une fonctionnalité parce qu'il la trouve 'cool' (de son point de vue naturellement). De la même façon, en ciblant dès le début une cible concrète (les gestionnaires de réseaux), nous espérons éviter d'alourdir le produit de fonctionnalités trop générales pour être vraiment utiles, en manquant du même coup de ressources pour ce qui est vraiment utile.

L'activité d'un gestionnaire de réseau est fondamentalement organisée autour de la maintenance en condition opérationnelle d'un 'patrimoine réseau'. De plus, les gestionnaire de réseau est de fait dans une situation de monopole sur son territoire. A ce titre, il doit en permanence fournir des informations sur ses opérations à un contrôle de plus en plus exigeant. Il doit donc mettre en place un système d'information performant et évolutif. Ce système doit nécessairement gérer des données spatiales. Ceux qui ont essayé de décrire dans une base de données relationnelle 'classique' des composants enterrés (conduite d'eau ou ligne électrique souterraine) sans passer par une représentation géographique savent de quoi je parle ici.

Ces données spatiales doivent être accessibles à quasiment tous les collaborateurs : on peut notamment citer les études, la maintenance, et même la comptabilité (pour garantir la véracité des immobilisations) ou la gestion de clientèle (pour maintenir un lien valide entre un point de livraison et le réseau qui l'alimente). Ces exemples montrent également que ces données spatiales ne doivent pas être confinées dans un 'silo' isolé (un SIG par exemple), mais doivent être en permanence connectées aux autres données (plus classiques) de l'entreprise : gestion d'interventions et de travaux, gestion de clientèle, comptabilité.

L'orientation 'maintenance' de l'activité a un impact majeur sur le système d'information réseaux. Il doit décrire dans la durée (en général plusieurs dizaines d'années) un relativement grand nombre d'objets (de l'ordre du million), avec un nombre annuel limité de changement (de l'ordre de la dizaine de milliers). Il doit représenter de façon fiable un état stable du réseau (en ignorant les modifications temporaires). Ce dernier point implique que les modifications doivent être organisées en transactions : les changements apportés par un utilisateur ne doivent pas être visibles (par les autres utilisateurs) avant qu'il ait terminé et validé son travail.

Le fait de cibler spécifiquement les gestionnaires de réseaux nous oblige à traiter les problèmes clés qui leur sont posés :
  • prendre en charge la dimension spatiale du système d'information réseaux,
  • donner à tout collaborateur un accès aux données spatiales, en consultation et en édition,
  • supporter le travail en mode déconnecté,
  • connecter ces données spatiales aux autres SI de l'entreprise,
  • déployer de multiples applications spécialisées et faciles à utiliser.

Nous pensons que ces besoins ne sont pas nécessairement couverts correctement aujourd'hui, même si des réponses partielles existent. La majorité des systèmes de gestion de bases de données relationnelles (Oracle, Db2, Sql*Server, etc) gère maintenant les données spatiales (stockage, indexation, requêtes). Mais il s'agit seulement d'une infrastructure, et les applications restent à développer. Inversement, les systèmes d'informations géographiques (SIG) proposent généralement une offre applicative suffisamment riche, mais sur une plateforme propriétaire difficile à connecter aux autres systèmes d'informations. Dans les deux cas, le déploiement de tels systèmes sur l'ensemble des postes de travail est souvent trop onéreux pour être envisagé, en termes de licences et de formation.


mercredi 12 mars 2008

Introduction à ViSit Anywhere

Ce blog est entièrement consacré à l'évolution de ViSit Anywhere, la nouvelle application de géo-ingéniérie de Géotech, du stade de projet à celui d'un produit professionel adapté aux besoins de l"entreprise.

Si vous n'êtes pas déjà un client de Géotech, vous devez vous demander qui est Géotech et qu'est ce que ViSit.

Géotech est une petite entreprise implantée à Garches (France) qui fournit des solutions de géo-ingéniérie sous Microstation depuis 1989. Nous avons développé de nombreuses applications dédiées, mais nos produits phares sont ViSit et ViSit/Web. ViSit est un outil généraliste de gestion cartographique des données, qui peut être librement configuré pour de nombreuses applications, comme notamment la gestion de réseaux de distribution (eau, assainissement, gaz, chauffage urbain, électricité, etc) ou du cadastre pour les collectivités. Sa flexibilité nous a permis de mettre en place des applications spécifiques comme le suivi de construction de tunnel ou la gestion de sites industriels et tertiaires.
ViSit/Web est développé au dessus de ViSit pour permettre aux utilisateurs de consulter et de modifiier les données de ViSit à l'aide d'un navigateur Web. Avec cette extension Web, ViSit est devenu une véritable plate-forme SIG, souple et robuste, adaptable à de nombreux contextes d'utilisation.

ViSit (Visualisation de Sites) est un programme qui s'éxécute dans Microstation, l'outil CAO de Bentley Systems. Son principe novateur réside dans son modèle de sites, qui organise logiquement toute collection de fichiers graphiques et assure son indexation spatiale. Ce modèle permet de filtrer logiquement (par thèmes), et géographiquement (par étendue et échelle) des milliers de fichiers graphiques. Ses performances ont permis de l'utiliser sur de très grands jeux de données sur des ordinateurs ordinaires dès le début des années 90. Pour plus di'nformation sur le modèle de sites de ViSit, vous pouvez contacter Géotech.

Avec la version 8 de Microstation, Bentley a radicalement modifié la structure de son fichier graphique, avec un impact majeur sur la logique de ViSit. A cette période, nous avons décidé de ne pas porter le code existant (issu de plus de 10 ans de développement continu) et de ré-écrire entièrement l'application. Cette option nous permettait de restructurer entièrement le programme, en tirant partie à la fois de l'expérience accumulée auprès de nos clients et d'adopter de nouvelles (et attayantes) technologies de développement. Notre objectif était de fournir un produit plus robuste et plus flexible, adaptés aux nouveaux besoins de nos clients. ViSit Anywhere est le résultat de cette décision.

La première version beta de ViSit Anywhere est planifiée pour le premier trimestre 2008. Elle sera fournie à un groupe limité de testeurs dans les semaines qui viennent. Nous allons simultanément alimenter ce site pour expliquer la nouvelle architecture du produit, ses fonctionnalités, divers scenarii d'utilisation et les premiers retours des testeurs.
En prélude à cette première version, je veux mentionner rapidement quelques unes des fonctionnalités que je préfère dans ce produit :

  • Il est implémenté comme une application Microsoft .NET. Ce chois nous apporte une meilleure intégration dans Windows et nous donne accès aux technologies les plus récentes dans le domaine de l'interface utilisateur, de la connectivité et de l'intégration à l'entreprise. ViSit Anywhere est actuellement basé sur le framework .NET 3.0.
  • Il utilise un modèle abstrait de meoteur graphique. L'utilisation de Microstation comme éditeur graphique apporte toute la puissance et la richesse fonctionnelle nécessaires aux utilisateurs. Mais elle a un coût, non seulement en terme de licence Microstation mais également de formation. Aec ViSit Anywhere, nous continuons a fournir une intégration dans Microstation, mais nous approtons également un environnement léger pour les utilisateurs qui doivent contribuer à la maintenance des données sans être des dessinateurs professionnels.
  • Il supporte le travail en mode déconnecté. Les utilisateurs peuvent charger les données nécessaires et partir sur le terrain (ou simplement rester au bureau). Leur travail reste local tant qu'il n'est pas terminé. Ils peuvent ensuite décider de le consolider pour le partager avec leurs collègues ou de l'abandonner. L'utilisation d'un projet local est notamment un excellent moyen d'effectuer des simulations, dès lors qu'il contient l'intégralité des données liées au projet.
  • Il fournit une gestion des transactions simple et robuste. Les projets de géo-ingéniérie sont souvent liés à la maintenance d'un patrimoine, où les changements sont (relativement) peu nombreux et dispersés géographiquement. C'est un excellent contexte pour une gestion optimiste des transactions, sans verrouillage a priori. ViSit Anywhere apporte une résolution des conflits par l'utilisateur lui même (par opposition à une résolution par un administrateur), qui simplifie la gestion des changements.
  • Il utilise une gestion simplifiée des licences. Géotech approte une nouveau schéma de gestion des licences, qui donnera au plus grand nombre la possibilité de modifier les données sans pour autant alourdir le coût su sytème. De plus, la gestion centralisée des licences sur un serveur rend très simple le déploiement de ViSit Anywhere.

En résumé, nous pensons que ViSit Anywhere représente une nouvelle génération d'outil qui va changer la vision qu'ont les entreprises du SIG. Son nouveau modèle devrait leur permettre de valoriser au moindre coût leurs données spatiales.