mardi 25 février 2025

Ingénierie, maintenance - 6 - Construction

Les processus d’ingénierie, de maintenance numériques, incluent la construction des ensembles matériels et logiciels. Ses résultats sont des versions (initiale, évolutives ou corrective) des ensembles matériels et logiciels ou des corrections à chaud. Les livrables comportent également des documentations (d’ingénierie et de maintenance, de fabrication, d’exploitation, d’utilisation…), des dossiers et des fichiers de test, une gestion de configuration…, le tout à jour.

Les éléments constitutifs provenant de l’extérieur, ou réalisés par d’autres équipes internes, sont des composants matériels, des équipements numériques, des logiciels, des versions évolutives ou correctives, des services de mise à disposition de SI, des données numériques, des salles informatiques, des liaisons filaires, terrestres, sous-marines, locales, hertziennes, de communications par satellites…

1) Les éléments constitutifs livrés sont à installer par les équipes d’ingénierie, de maintenance, ou par le fournisseur. Dans les cas simples, il est parfois demandé aux utilisateurs de les installer eux-mêmes.

Les logiciels (versions initiale, évolutives ou correctives, patches) sont de plus en plus souvent téléchargés, par exemple sur un environnement de développement, de pré-production ou de production. Des choix sont à faire pour la sécurisation de ces téléchargements, le contrôle des éléments fournis.

Les données sont transformées s'il y a lieu.

2) Les éléments constitutifs standard, sauf cas particulier, ne sont pas contrôlés et testés préalablement à leur intégration. Ils sont à tester s'ils sont nouveaux, utilisés dans des contextes spécifiques, si la qualité des livraisons est sujette à caution. Certaines entreprises testent, par exemple, les versions de l'OS de leurs micro-ordinateurs avant déploiement.

Les éléments constitutifs réalisés sur mesure ont à faire l’objet de tests de recette dans le cadre des processus d’ingénierie, de maintenance correspondants.

La programmation est réalisée pour la fourniture initiale des composants logiciels, des logiciels, leur maintenance/évolution, sur la base de la conception détaillée.

Méthodes, normes de programmation

Des méthodes, des normes de programmation sont en général à définir, telles que programmation structurée, modularisation, types abstraits, approche objets, programmation parallèle.

Le code source doit être compréhensible, commenté, optimisé.

L’existence et la mise en œuvre effective de méthodes, normes de programmation est fondamentale pour la fiabilité, la maintenabilité et l’évolutivité des logiciels.

Écriture des programmes, contrôles, tests, traitement des non-conformités

Les outils nécessaires à l’écriture des programmes, le traitement des non-conformités, sont traités ci-après.

Les programmes, composants logiciels, sont à contrôler et à tester par l'équipe qui les a écrits, dans le cadre de la stratégie de contrôle et de test définie (contrôles statiques, tests fonctionnels, unitaires, de non-régression..., des versions initiales et des modifications). Des revues de code par une autre équipe sont réalisables. Les non-conformités constatées sont à corriger.

Des inspections, des revues de code source, sont réalisables, en vue de détecter les erreurs au plus tôt, de contrôler la lisibilité, la structuration... Leur ROI est de l’ordre de 15 pour les grands logiciels.

Des outils d'analyse du code source sont utilisables, notamment pour identifier les vulnérabilités des logiciels. 

Le code source des logiciels existants est susceptible de faire l’objet d’une analyse détaillée préalablement à sa correction ou à la prise en compte des évolutions de ses spécifications. Une documentation adéquate, des spécifications formalisées, la mise en œuvre de méthodes de programmation la facilitent.

Réusinage

Le réusinage (refactoring) du code source vise à le rendre plus lisible, plus générique, et donc plus maintenable. Il est envisageable de l'effectuer systématiquement, en totalité ou en partie, dans le cadre du développement de nouveaux logiciels, ou ponctuellement pour les modules qui le nécessitent.

L’optimisation du logiciel peut permettre des économies d’énergie, de coûts de stockage, de communication de l’information.

Outils

Des outils sont à choisir pour la programmation.

Les environnements de développement intégrés comportent au minimum un éditeur de code source, un compilateur ou un interpréteur pour le langage choisi. D'autres outils sont susceptibles d'être inclus : débogueur, éditeur de liens, outils de création d'interface graphique, d'analyse statique et dynamique des programmes, de gestion des versions, de forge, de réusinage, de profilage, de scan des vulnérabilités…

Des modifications répétitives, comme la restructuration de code, le portage dans un autre environnement d'exécution, les changements de format des données, les changements de devises, sont réalisables à partir de programmes de migration, de transformation automatique du code. Des outils de replatforming aident à réaliser la migration des applications vers le cloud.

Un outil de gestion des versions permet de maîtriser le développement d'un ensemble de composants, confiés à des programmeurs différents, et qui interopèrent.

Des outils permettent la génération de code source à partir d’UML, de métadonnées.

Des IA génératives permettent de créer des programmes, d’analyser du code. Elles sont fondées sur des processus d’apprentissage automatique à partir d’ensembles de programmes existants.

1) Le paramétrage d'ingénierie vise à réaliser des ensembles matériels et logiciels prêts à être déployés, diffusés, fabriqués, utilisés, exploités, à faire l’objet d’évolutions, de maintenance…

Le paramétrage applicatif porte sur la réponse aux besoins fonctionnels des utilisateurs finals des ensembles matériels et logiciels : caractéristiques des documents, conditions d’utilisation des jeux, règles de gestion….

Le paramétrage technique (configuration) porte sur le stockage des informations (espaces de stockage, disques, mémoires caches, principales arborescences des fichiers), l’utilisation de la mémoire centrale des ordinateurs (par exemple nombre et taille des buffers, dimensions de l’espace de pagination), l'interconnexion des équipements, des logiciels, des SI (liaisons logiques), les équipements de réseau (par exemple, nombre de retransmissions en cas d’anomalie), les bases de données (par exemple, paramètres d’initialisation, utilisation des index et des clés), les middleware.

Le paramétrage est manuel ou automatique. Les choix relatifs au paramétrage des modèles par les fonctions d’apprentissage automatique sont traités ci-après.

2) Les paramétrages sont effectués sur la base de la spécification détaillée (cf. ci-dessus), si une telle spécification a été établie. 

Des démarches de paramétrage sont à définir, ou à choisir parmi celles proposées par les éditeurs de logiciels standard.

Des environnements techniques sont parfois à définir pour le paramétrage (bac à sable, environnements de développement).

Des outils de configuration, des fonctions d'auto-configuration sont utilisables. Les fonctions de SD-WAN facilitent le paramétrage des équipements de réseau. Il est possible d'utiliser de fichiers de définition pour le paramétrage de l'infrastructure technique, au lieu d'outils de paramétrage manuels, interactifs (infrastructure as code).

Pour les logiciels dont le paramétrage est complexe, ou bien inclut des règles internes de l’entreprise, des revues de paramétrage sont susceptibles d’être effectuées, de façon analogue aux revues de code pour le logiciel.

4) Des tests unitaires sont à réaliser sur le paramétrage, sur son interfonctionnement avec les développements complémentaires réalisés : d’une manière générale, il est efficace de détecter et corriger les défauts le plus en amont possible dans le cycle d’ingénierie numérique.

Il est habituel que des tests soient effectués par l’équipe qui a conçu les paramétrages.

Pour les évolutions du paramétrage, des tests de non-régression sont à effectuer si nécessaire.

1) Les systèmes experts s'appuient sur des fonctions de simulation de raisonnement déductif à partir de règles définies. Les règles sont à définir et à enregistrer par des experts du domaine.

2) Des fonctions d’apprentissage automatique permettent de déterminer automatiquement des paramètres d’un modèle à partir d’un ensemble de données. Il est nécessaire d’éviter au maximum les biais dans le rassemblement de ces données.

L'apprentissage automatique, ou entraînement, se fonde sur l’exploitation de données, appelées observations (images, textes, exemples de fonctionnement de la machine…). Les modalités d’exécution des fonctions à déterminer ne sont pas programmées ou paramétrées par l’utilisateur. Elles sont calculées par la machine à partir des observations.

Les fonctions de mise au point dépendent des modalités d’apprentissage automatique. Elles incluent des fonctions d’analyse des données.

Ce sont d’une part des fonctions destinées aux utilisateurs : introduction des observations, des résultats attendus, récompense, contrôle, test des résultats de l’apprentissage.

Ce sont d’autre part des fonctions internes du système : détermination de paramètres du modèle, tests, calcul d’erreur…

3) Dans l’apprentissage supervisé, les observations comportent la réponse attendue (par exemple l’identification de l’image, une commande correcte exécutée dans l’environnement défini).

Dans l’apprentissage par renforcement, la machine reçoit une récompense si les résultats qu’elle fournit sont considérés comme satisfaisants. L'apprentissage par renforcement s'applique bien dans le cas des jeux, où il est facile d'effectuer rapidement des essais en très grand nombre. Il est inapplicable dans beaucoup de cas de la vie réelle (par exemple la conduite automobile).

Dans l’apprentissage non supervisé, l’utilisateur n’intervient pas. La machine définit par exemple des catégories sans connaître les catégories habituellement définies par la science.

4) L’apprentissage peut être poursuivi pendant la phase de production, si l’ensemble matériel et logiciel peut disposer d’observations nouvelles.

5) L’utilisation des IA génératives facilite la mise au point des chatbots.

Des choix sont à faire sur les processus d'intégration des logiciels, des paramétrages, des prototypes de composants, d'équipements, des SI… Les processus diffèrent selon qu'il s'agit de la version initiale, d'une maintenance/évolution, d'une désinstallation.

Le tableau ci-après présente les principaux types d’éléments constitutifs à intégrer, et les résultats de l'intégration.

Éléments constitutifs à intégrer

Résultats de l'intégration

Composants logiciels (programmés sur mesure, achetés sur le marché...)

Logiciels

Composants matériels, logiciels, données, paramétrages…

Composants, équipements numériques, parties numériques des équipements

Équipements, logiciels, paramétrages, liaisons, SI, données, salles informatiques…

SI, parfois intégrés à des systèmes

Choix relatifs à la planification, à l’articulation d’ensemble des travaux

Les activités d’intégration (installation des équipements, chargement des logiciels, paramétrage des interconnexions…) sont à planifier. Elles sont à réaliser de façon cohérente avec les activités d’ingénierie du logiciel spécifique, de paramétrage des logiciels : il est en général plus efficace d’intégrer un ensemble de logiciels pas trop longtemps après les avoir construits, paramétrés. Par ailleurs, pour réduire les délais, il est parfois souhaitable de prévoir des livraisons progressives des logiciels de façon à pouvoir commencer leur intégration avant leur livraison complète.

Les choix portent en général sur la définition adéquate d’un ou plusieurs niveaux d’intégration intermédiaires. Des matrices de couplage des éléments constitutifs sont utiles pour établir le plan d'intégration d’ensemble.

Pour l’intégration de plusieurs SI, il est classique d’intégrer d’abord chaque type de SI, par exemple les systèmes centraux, les systèmes d’accès, puis d’intégrer l’ensemble.

Des processus d'intégration continue des modifications des logiciels sont mis en œuvre. L’intégration est progressive ou globale.

Chargement des logiciels, des paramétrages

Dans l’environnement de production, un même logiciel, un même paramétrage sont susceptibles d’être transférés à l’identique vers un grand nombre d’équipements. Des choix sont à faire sur les modalités de chargement initial, de transfert entre environnements.

Des outils sont utilisables pour la télédistribution des logiciels, des paramétrages, le transfert de ces éléments entre environnements. L’installation est forcée, ou demandée par le responsable de l’équipement (modes push ou pull). Ces outils sont particulièrement utiles pour les logiciels fréquemment mis à jour et installés sur des équipements décentralisés, comme les antivirus.

Pour le chargement initial des logiciels, des paramétrages sur les équipements, des techniques de mastérisation sont susceptibles d’être mises en œuvre (chargement complet du disque dur des équipements). La mastérisation est susceptible d’être demandée au fournisseur des équipements. L’opération est plus rapide et plus simple que l’installation des logiciels un par un.

Des règles, des responsables, sont à définir pour l’installation et le contrôle des logiciels sur les équipements, notamment les équipements personnels, pour éviter les incohérences techniques, l’installation de logiciels contenant des virus, obtenus illégalement, présentant des risques pour l’entreprise.

Contrôles, tests, traitement des non-conformités

Les tests d'intégration du réalisateur technique portent sur les logiciels, les prototypes de composants et d'équipements, les SI, dans leur environnement cible. Ce sont des tests fonctionnels, de capacité, de performances, de sécurité.

Des tests d’ensemble sont à effectuer pour le paramétrage des grands logiciels, pour vérifier la cohérence entre le paramétrage des modules, entre ceux des données et des fonctions.

Des choix sont à faire sur la nature, l’étendue des tests de non-régression. Les changements de version majeure des logiciels, par exemple, sont susceptibles de faire l’objet de tests approfondis. Pour les modifications des logiciels externes, les choix dépendent de la confiance qu’a l’entreprise dans l’éditeur.

Des modalités spécifiques de contrôle sont normalement définies pour les corrections urgentes (corrections à chaud), de façon à éviter les erreurs dues à la précipitation.

Des tests sont à réaliser après retrait d'un élément constitutif.

Les non-conformités sont à corriger (cf. ci-après).

Une fois les derniers tests d'intégration réalisés avec succès, le réalisateur technique a à effectuer un dernier contrôle global de l'ensemble des livrables avant présentation en recette au donneur d'ordres. Les contrôles portent sur les programmes, les prototypes, les SI, leur documentation, les fichiers techniques associés (contrôles des versions, statiques, gestion de configuration, fichiers de test...).

Aucun commentaire:

Enregistrer un commentaire