Pour pouvoir faire des analyses très fines sur les composants applicatifs, la base de connaissance doit être alimentée avec le maximum d'informations. Les analyseurs développés pour cette tâche sont ainsi aussi précis que les compilateurs originaux afin d'extraire tous les éléments nécessaires:
- Analyse syntaxique
- Analyse algorithmique
- Analyse des données
- Analyse des entrants/sortants
- ...
La maintenance des applications est une activité très gourmande en temps et en ressources. Pour accroître la productivité des équipes, Mia-Mining propose de nombreuses aides :
- Coloration syntaxique du source des programmes
- Menu contextuel sur chaque élément du source proposant des renvois vers les objets en rapport: paragraphe, description de variable, sous-programme... pour une navigation facilitée
- Calcul automatique des longueurs des variables groupe, packées...
- Graphe d'enchaînement des Perform
- Comparateur de structures pour les structures groupe
- ...
Lors de l'analyse des composants, tous les chemins possibles de l'algorithme sont calculés, il est alors possible de le représenter sous forme graphique. Mia- Mining propose deux types de restitutions: sous forme d'organigramme ou sous forme hiérarchique.
Un puissant paramétrage va permettre d'ajuster précisément la restitution de l'algorithme:
- Choix de l'instruction ou du paragraphe à partir duquel l'algorithme sera affiché
- Sens de propagation:
- Algorithme avant: sens logique d'exécution
- Algorithme arrière: affichage des chemins permettant d'aboutir à une instruction particulière
- Choix des types d'instructions apparaissant dans la restitution
- désignation d'instructions bloquantes ou à masquer dans la restitution
- ...
Le fait de calculer tous les chemins de l'algorithme permet aussi d'identifier les instructions qui se trouvent dans des branches qui ne sont plus jamais activées, il s'agit du code mort. Mia-Mining propose en standard l'identification de ce code mort et son affichage en rouge dans l'interface.
Une des principales problématiques lors de la maintenance d'un patrimoine est l'étude des impacts que génère une évolution. Notamment quand celle-ci touche aux variables sensibles de l'entreprise.
Mia-Mining propose une fonction d'analyse de propagation de donnée pour détecter tous les impacts possibles engendrés par la modification ou la suppression d'une ou plusieurs variables. Pour adresser ce besoin complexe, de nombreuses options de paramétrages sont disponibles:
- Prise en compte des impacts via les zones parentes ou filles
- Prise en compte des impacts via les clause redéfinitions de structures
- Choix du type d'impact: alimentation, test, calcul...
- Choix du nombre de niveaux de propagation
- Choix du sens de propagation; en avant, en arrière ou les 2 à la fois
- Interprétation des appels aux sous-programmes
- Désignation des zones à exclure ou stoppant la propagation
- ...
La restitution de l'information peut se faire sous forme graphique ou sous forme d'extrait de source lors d'une analyse industrielle à l'échelle du patrimoine complet
Mia-Mining propose une fonction unique sur le marché, le Slicing. Littéralement découpage en tranche, le Slicing va permettre de découper le programme en fonction d'un ou plusieurs points de vue pour ne garder que la "tranche" d'algorithme intéressante.
Le point d'entrée du Slicing est une ou plusieurs variables ainsi qu'un point de départ dans l'algorithme. S'appuyant sur les moteurs de flot de donnée et de flot de contrôle, le Slicing en fait la synthèse pour n'afficher que les instructions nécessaires et suffisantes à la gestion de cette variable.
La principale utilisation de cet outil est la détection et la mise en exergue des règles de gestion. En effet, la possibilité de ne se concentrer que sur les quelques lignes qui concourent à l'élaboration d'une variable permet de détecter rapidement les règles de gestion afférentes.
Si toutes les fonctions énumérées ci-dessus sont disponibles via leurs interface de paramétrage, il est également possible de les utiliser via un système de création de requêtes à la fois simple et performant pour répondre à des besoins complexes et/ou industriels.
Ce requêteur met à la disposition de l'utilisateur plus de 500 entités (représentant chaque concept du langage) et près de 1800 relations pour couvrir tous les aspects possibles des langages procéduraux. Le fait de pouvoir enchaîner les requêtes pour décomposer une problématique complexe permet virtuellement de résoudre tous les cas rencontrés sur un système d'information.
Voici quelques exemples de requêtes pouvant être conçues:
- Détecter tous les appels à un sous-programme qui utilisent une variable particulière et comment celle-ci est alimentée
- Trouver toutes les instructions conditionnées par un test précis sur une variable ou un littéral
- Trouver toutes les variables impactées par la modification d'une copy
- Détecter toutes les alimentations de zones numériques packées par des zones alphanumériques
- Détecter tous les parcours de tableaux supérieurs au nombre de postes de ces tableaux
- ...
Le requêteur est une fonction incontournable pour toutes les études de masse sur le patrimoine informatique.
Des bibliothèques de requêtes sont fournies en standard avec Mia-Mining.