Outils

- Générateur de code de lecture fiable et performant à partir de métadonnées : directprogramming a développé un ensemble d'outils qui accélèrent, fiabilisent le développement et assurent une qualité ultime des programmes délivrés. Ces outils ne sont pas nécessaires pour les programmes les plus simples, mais ils deviennent indispensables pour maîtriser les développements complexes opérant sur des données volumineuses. Ils consistent en la génération de code (pour le C) ou en métatraitements (avec python) pour exploiter des métadonnées décrivant la structure des données à lire et/ou à écrire. directprogramming a développé un format de métadonnées rationnel qui élimine toute redondance déclarative en exploitant la sémantique des noms de champs pour en déduire leur type. Ces outils mettent en oeuvre le principe MDA : Model Driven architecture. Ils permettent la réalisation d'ETL (Extract, Transfert an Load) en programmant des requêtes complexes (mélangeant filtres, agrégations, traitement impératif) directement en C avec nombre quelconque de jointures sur des fichiers chargés en mémoire ou parsés d'une manière plus performante et plus lisible qu'avec le langage SQL. Le code de lecture des données normalisées texte ou binaire est entièrement généré, et les structures de données mémoires allouées sont optimales. Elles résolvent notamment l'intégrité référentielle par usage des fonctions de hachage et pointeurs et vérifient l'unicité des clés primaires, la présence des champs lus, le type des colonnes. Ces outils originaux et s'appuyant sur aucun framework ni middleware existant et sont propriété de directprogramming. Ils constituent ainsi une solution d'ORM (Object Relational Mapping) qui gère la persistance en texte ou binaire des objets mémoire. L'exécutable du générateur peut être livré avec les applications développées pour que l'utilisateur puisse réaliser des évolutions à partir des métadonnées. Cette version exécutable fait l'objet d'une licence d'utilisation. Elle n'est pas requise pour utiliser les applications qui n'évoluent pas à la main du client. Les applications ainsi livrées sont libres d'utilisation par le client et de revente et ne font pas l'objet de licence directprogramming. La performance (temps de calcul) des applications utilisant le générateur de lecture de données C approche la limite théorique des performances possibles, tout en permettant un haut niveau d'abstraction, de fiabilité et de productivité, car les freins à la productivité et de fiabilité classiquement reprochés avec l'usage du C sont éliminés et que les fonctionnalités retenues du C sont standard et portables.
- Bibliothèque de comparaison et identifications des différences entre des listes d'identifiants, sans limite de taille : directprogramming a développé une bibliothèque de comparaison de listes (en nombre quelconque) d'identifiants comprendant des millions de clés données dans des fichiers texte, et même des milliards. En fait, des outils sont paramétrables et s'adaptent aux capacités de la machine d'exécution : nombre de fichiers adressables et mémoire vive disponible. Ils reposent, lorsque de stockage direct d'une des listes complète en mémoire dépasse la capacité machine, sur une sous-structuration du problème, des tris par blocs, et un entrelacement des paquets triés, permettant la comparaison sur des listes sans limite de taille, seul le temps de traitement étant d'autant plus rallongé que la mémoire vive est faible et le nombre de fichiers adressables sur disques est faible. Cette structuration permet de dépasser toutes les limites des SGBD et de s'adapter à l'environnement matériel, ainsi que d'exploiter une architecture distribuée. Deux listes de chacune 35 milllions d'identifiants en écart de moins de 10 % et bien entendus données dans un désordre total dans chaque liste et entre les deux listes, voit un volume de 400 Mo, sont lues, comparées et les différences identifiées en seulement 1 min 15 sur un PC bureautique 32 bits limité à 3 Go de RAM utilisateur Elitebook. Dans ce cas, l'une des listes est stockée en mémoire. Le recours au langage C et des structures de hachage économiques sont nécessaires car les dictionnaires python sont trop gourmands en mémoire pour une telle volumétrie. Le recours à un SGBD est largement plus gourmand, tant en temps de traitement que d'espace disque nécessaire, du fait même du temps de chargement des données. Au delà de cette volumétrie, la sous-structuration et le tri par blocs sont nécessaires sur une machine limitée à 32 bits. Sur une machine 64 bits, qui devient le standard, le besoin en sous-structuration est repoussé.
- Factorisation des données et des traitements pour obtenir la modularité et la performance : directprogramming applique dans tous ses développements des règles strictes de modularité, permettant une concision et une lisibilité maximale du code produit, en même temps que des performances quasiment indépassables : structures de données miroir exact de la structure des fichiers d'entrée normalisés, prétraitement de normalisation des données et optionnellement conversion en binaire, code algorithmique réalisant toutes les factorisations possibles (principe DRY : Do not Repeat Yourself) par l'usage raisonné et bien compris des structures de contrôle, appels de procédures et fonctions, programmation objet, programmation générique, génération de code et utilisation de métadonnées. Ces principes permettent notamment de minimiser l'espace mémoire alloué, et maximiser la performance de tout traitement et requêtes, de maximiser l'évolutivité et la portabilité en rendant la plus locale possible toute modification tant de la structure des données que des spécifications métiers de traitements, et enfin que le code serve lui-même de référence de spécifications détaillées de part la lisibilité des lignes de code, et ce, dans les langages les plus courants. L'application stricte de ces règles permet également de détecter précocement toute anomalie sur les données : doublons de clés primaires, violation d'intégrité référentielle, champs obligatoires vides, mauvais typage de champ, nombre erroné de champs, absence de champ obligatoire, doublon de champ/colonne, etc... Ces détections se font en un temps de résolution aux limites de ce qui est théoriquement possible, car elles sont fondées sur les fonctions du plus bas niveau possible des langages utilisés, et sur la notion essentielle de table et fonctions de hachage, re-codées rigoureusement et largement éprouvées.
- Parseurs performants en une passe de type machine de Turing à états internes : afin d'analyser les données peu structurées du type rencontré dans l'analyse big data et data mining, directprogramming a optimisé l'utilisation des pointeurs C et développé des parseurs en une passe avec principes d'utilisation de variables d'états internes fondées sur les machines de Turing couplées à l'utilisation de tables de hachage, afin d'être en mesure de réaliser des analyses aux meilleures performances possibles. Les outils directprogramming ne reposent sur aucune bibliothèque externe, tout est reprogrammé "maison" et tout est intensivement testé.
- Générateur de formulaires web dynamiques avec droits dynamiques : directprogramming prototype un outil de développement dynamique de formulaires web exploitant des métadonnées de droits dynamiques d'utilisateurs suivant leur profil et de la présence de valeurs d'autres champs, qui devrait permettre à terme de se substituer à de complexes middeware du type de ceux de gestion de processus métiers : outils de MDM (Master Data Management) et BPM (Business Processus Management). Les écrans de saisie ou de restitution se composent en général de données correspondant à des requêtes avec jointures, collectant les données de plusieurs tables. directprogramming développe un outil de génération de telles restitutions composites de manière générique, ainsi qu'un outil graphique de composition de requêtes exploitant la jointure naturelle sans aucune redondance déclarative, comme c'est le cas en utilisant le SQL.
- Exécutables embarqués dans Excel de manière transparente : directprogramming dispose également d'outils d'embarquation de programmes exécutables dans Excel permettant la distribution d'applications Excel intégrant des programmes développés dans n'importe quel langage compilé, de manière totalement transparente comme si l'application n'était composée que d'un simple fichier Excel classique. De même, directprogramming développe des programmes VBA permettant le chargement en structures de données mémoires en VBA sur le même modèle que les structures C utilisées, exploitant les classes (modules) VBA et les Collections (qui utilisent des fonctions de hachage).