/* directprogramming */

 

Le retour aux sources du code C et des meilleures théories pour réaliser de manière fiable, performante, évolutive, des requêtes complexes, rapprochements, migrations de bases de données full et tous traitements de données massifs.

 

***

A contrecourant de la profusion de frameworks, directprogramming fait le pari du retour au développement en langage C pur, sans aucune dépendance à aucune librairie (mais aussi python, PHP, VBA), pour réaliser pour ses clients des traitements aux limites théoriques de la performance, tout en garantissant fiabilité et évolutivité.

Les outils et méthodes directprogramming permettent le retour aux plans de migration full pour les grandes entreprises, des développements spécifiques rapides pour les PME, un accélérateur de productivité pour les SSII.

directprogramming propose une méthode pour réaliser rapidement des programmes informatiques de traitements de données fiables, performants et évolutifs, au moindre coût. Pour cela, deux axes sont combinés :

  • la mise en place de relations développeur/utilisateur interactives et vivantes tout au long du cycle de vie,
  • l'utilisation de techniques de type Model Driven Architecture : génération de code à partir de métadonnées.

Les relations entre personnes sont peu formalisées, mais le produit est structuré très rigoureusement. La production se concentre sur le modèle de données et le code. Bien structurés, ils portent en eux-mêmes la part essentielle des spécifications, qui sont découvertes et formalisées au cours même du développement, sans régression. Les trois activités de spécification, conception et développement sont couplées, et non pas simplement itérées comme dans les méthodes agiles classiques.

La méthode que propose directprogramming consiste à parler, penser, et programmer, sous forme d'un travail en binôme entre utilisateur métier expert et développeur expert, ce dernier étant tout autant un assistant à maîtrise d'ouvrage (AMOA), qu'un concepteur et un programmeur. Ainsi la solution optimale est découverte et mise en oeuvre, sans perte de temps. Les évolutions sont intégrées en mode extreme programming sans régression de conception grâce à la génération de code.

 

***

Les entreprises ont maintenant intégré l'idée que pour rester "time to market", une certaine forme de gestion agile des projets de développement informatique était une nécessité, et que cette approche pouvait ne pas se limiter aux petits projets. Le code et les données doivent pouvoir être modifiés très rapidement tout en maintenant la qualité finale de l'application.

Or il ne suffit pas pour cela de modulariser le développement en mettant en oeuvre le paradigme orienté objet et une "usine logicielle", ni en automatisant la fabrication (build) et le passage de cas tests. Il faut également utiliser à bon escient les principes de génération de code à partir de métadonnées représentant un modèle de données très bien structuré.

directprogramming répond à cette exigence et a développé un générateur de code de lectures/écritures/agrégations et un format de métadonnées concis qui permet d'éliminer toute redondance déclarative, d'accélérer et de fiabiliser la production tout en visant des performances (temps de traitement) indépassables, ce qui est nécessaire pour les gros volumes de données et la mise au point progressive qui nécessite de nombreuses modifications du modèle de données et de nombreuses exécutions.

directprogramming pousse les principes RAD/JAD (Rapid Application Development / Joined Application Design) ou agile des projets, jusqu'à l'extreme programming, en banissant les approches fondées sur un cycle strict de delivery ainsi que la dichotomie MOA/MOE au point de mettre en interaction le développeur et l'utilisateur, et initie même l'utilisateur à la conception et au développement. Spécifications fonctionnelles et techniques sont fusionnées, l'abstraction des langages retenus étant suffisante. Développeur et AMOA ne font qu'un. Le prestataire se mue en coach. En effet, une conception doit pouvoir ne jamais être définitvement figée. Par ailleurs, un bon AMOA et un bon concepteur est nécessairement un développeur. L'activité pivot est la programmation.

Les intervenants de directprogramming sont des ingénieurs généralistes, qui ont une triple expérience : recherche fondamentale et académique, enseignement et production de logiciel en milieu opérationnel. C'est cette compétence qui permet à directprogramming de proposer ce rapprochement extrême avec réelle possibilité de succès et de maîtrise.

Ainsi les principes du développement agile peuvent-ils tenir réellement leur promesse et révéler leur véritable supériorité face aux méthodes traditionnelles de la séparation MOA/MOE et du cycle en V. La méthode agile de directprogramming va au delà des méthodes agiles traditionelles, tant dans les processus que dans les outils mis en oeuvre : toute l'activité est programmation. Celle-ci est abordée directement, spécifications et conceptions sont un processus continu, au travers de la modélisation des données et du code de traitement.

Grâce à une bonne structuration et un bon nommage des données, le code source peut être rendu clair au point qu'il se lit comme un langage naturel parlé, directement compréhensible par un nom spécialiste et portant en conséquence l'essentiel de la spécification.

Approche technique : pour obtenir un haut niveau de qualité, directprogramming "revient aux sources", dans tous les sens du terme : étude de la théorie des structures de données fondamentales et de leur bon usage, organisation des "sources" (programmes) et des paradigmes de programmation, mapping relationnel/objet, typage statique... Le problème particulier du lien précis entre structuration des données en base de données ou fichiers et structures mémoire après chargement mémoire ("lecture" des données), ainsi que leur correspondance avec la structuration des interfaces utilisateur a été approfondi. Ce problème n'est en général pas considéré comme un volet important et noble du développement, alors qu'en réalité, il constitue une partie essentielle du code, qui conditionne toutes les dimensions de la qualité. La littérature sur le sujet parle de "mismatch" et fait le constat que structuration relationnelle des bases de données et orientée objet des programmes et structures de données mémoire ne sont que partiellement compatibles. Il y a donc lieu d'approfondir la question.

L'utilisation des langages efficaces et portables (notamment C et python), d'algorithmes performants, de résolution des clés étrangères par hachage et attachement de pointeur ainsi que de règles strictes de nommage des variables et champs (sémantiquement significative, voir la page outils), conduisent à la lisibilité et la concision du code. En effet, la "compréhensibilité" d'un code source est essentielle à sa maîtrise. L'ensemble de ces éléments permet d'aller bien au delà de ce qu'offent les outils du marché qui se contentent de "générer des classes". En effet, toute la lecture fiable et performante des fichiers est générée, avec structuration optimale en mémoire des données, préalable essentiel à l'obtention de la performance, de la fiabilité et de l'évolutivité du code et du modèle de données.

L'approche directprogramming de la programmation est l'aboutissement de 15 ans de recherches et d'expérimentations dans divers langages pour divers types de problèmes (calcul scientifique, simulations, applications de gestion, traitement de données massives).