Les processus d’ingénierie, de maintenance numériques, incluent la conception détaillée des ensembles matériels et logiciels. Ses résultats sont des spécifications, une conception technique détaillées des ensembles matériels et logiciels et de leurs éléments constitutifs. Ils sont obtenus sur la base des choix de conception générale, et des caractéristiques des produits et services externes acquis, des éléments internes retenus.
Ils constituent, avec ceux de la conception générale, la référence de la construction, de l’intégration, de la fabrication, de la maintenance des ensembles matériels et logiciels.
Ils sont à établir complètement, ou à faire évoluer, à corriger.
Pour le logiciel, il existe plus de 100 méthodes de conception détaillée, telles que ordinogrammes classiques, langage naturel, pseudo-code, tables de décision, méthodes orientées objet. Des patrons de conception sont utilisés.
Des besoins détaillés sont définis, des spécifications détaillées sont établies pour les ensembles matériels et logiciels à réaliser. Leur niveau de détail est suffisant pour la réalisation des travaux ultérieurs, selon la démarche choisie, le contexte fonctionnel et technique de cette réalisation.
1) Pour les logiciels standard à paramétrer, comme par exemple les ERP, les spécifications détaillées correspondent au fonctionnement des ensembles matériels et logiciels sur lesquels ils sont installés, après paramétrage, applicatif ou technique.
Des démarches de spécification détaillée du paramétrage sont parfois à définir, sur la base des possibilités offertes par les logiciels prévus, pour les logiciels utilisés collectivement, le paramétrage par défaut des équipements, des logiciels... L’établissement de telles spécifications détaillées permet de faciliter l’utilisation des ensembles matériels et logiciels, de disposer d’une base de référence adaptable par les utilisateurs.
Pour définir de façon détaillée les fonctions attendues, des démarches d’analyse d’écarts (gap analysis) entre les besoins et les possibilités des logiciels standard sont parfois à définir pour les ERP, ou à choisir parmi celles proposées par les éditeurs. Des tests sont réalisables sur les logiciels, dans des environnements techniques de type "bac à sable".
La spécification détaillée du paramétrage est souvent associée à celle des éventuels développements spécifiques complémentaires.
2) Pour les logiciels spécifiques, sauf dans le cas particulier d’un logiciel réalisé par un utilisateur pour lui-même et qu’il n’est pas prévu de transmettre à un autre utilisateur, un choix important est à faire sur les démarches de définition des besoins et de spécification détaillée.
Dans les cycles de développement dits « en cascade », la définition détaillée des besoins fait l’objet d’un document écrit, établi par le donneur d’ordres et remis au responsable de l’ingénierie du logiciel pour établissement de spécifications détaillées également écrites. Dans les cycles de développement agiles, une équipe utilisateurs-informaticiens est constituée et les besoins sont définis (ou précisés) de façon non formalisée, interactive, notamment à partir de prototypes. D’autres cycles de développement prévoient à la fois l’établissement par le donneur d’ordres de documents écrits et des réunions de travail plus ou moins nombreuses entre le donneur d’ordres et l’équipe d'ingénierie du logiciel. Certains cycles prévoient l’établissement de use cases, de cas de test pour chaque besoin.
Des spécifications détaillées écrites sont utiles sur le plan contractuel, pour les maintenances/évolutions ultérieures, en cas d'audit interne ou externe. Elles sont susceptibles d'être établies une fois le logiciel programmé et testé.
Des outils permettent de sécuriser les spécifications, en mettant en évidence des erreurs, des possibilités d'utilisation malveillantes des fonctions.
3) Des versions évolutives des logiciels standard sont parfois proposées par les éditeurs. Elles sont à analyser. Des décisions sont à prendre pour leur prise en compte (acceptation ou refus, planification, définition des tâches à réaliser…).
Logiciels
La conception technique détaillée du logiciel doit permettre d’obtenir les performances attendues, que le logiciel soit maintenable, évolutif, testable, protégé contre les intrusions... Un logiciel existant doit aussi parfois être optimisé.
1) Des algorithmes sont à trouver, à définir ou à modifier, pour les logiciels à développer, par exemple lorsque la spécification des fonctions ne contient qu'un résultat attendu (trouver une solution optimale, traduire un texte dans une autre langue, établir un diagnostic...). Un algorithme contient la définition des fonctions élémentaires à exécuter pour obtenir le résultat attendu. Il existe différents types d’algorithmes : déterministes, non-déterministes, randomisés...
Ils sont parfois établis sur la base d’un modèle de traitement des informations.
Les algorithmes relèvent des techniques du numérique (par exemple les algorithmes de tri, de compression des informations), en partie d'autres techniques (comme les algorithmes de chiffrement), sont fonctionnels (comme les algorithmes de diagnostic), s'appuient sur des méthodes statistiques... Leur définition demande la participation de professionnels du numérique et le plus souvent celle d'experts du domaine métier concerné.
Il est nécessaire d’éviter au maximum les biais dans la conception de certains algorithmes. Des arbitrages sont parfois à faire entre explicabilité et performance (mieux vaut parfois un modèle plus explicable et moins performant).
2) Un logiciel est souvent constitué d'un ensemble de composants, d’objets. Si des composants logiciels propres à l'entreprise sont à développer, leurs spécifications sont définies.
3) En ce qui concerne la modularité, les choix à réaliser visent notamment à ce qu’elle n’entraîne pas une augmentation anormale des temps de réponse, que des services ne constituent pas des goulets d’étranglement. Les actions envisageables sont par exemple de cloner des services, minimiser le nombre d’accès disques, toujours coûteux en temps, optimiser les requêtes envoyées aux SGBD, utiliser des procédures stockées dans le SGBD qui permettent d’optimiser des traitements lourds, mettre en œuvre des options d’isolation raisonnables.
Un logiciel est aussi optimisable par le parallélisme et la réduction du nombre des accès à la mémoire centrale.
4) La conception détaillée des structures de stockage des données sur disque est à effectuer.
5) Pour garantir la fiabilité des traitements, des contrôles intermédiaires et redondants sont programmables. Dans le concept de programmation défensive, chaque programme est responsable de la vérification de ses données en entrée.
Matériels
Celle des circuits intégrés a pour objectif d'obtenir un fichier des dessins de masque du circuit intégré à partir d'une spécification. Elle est effectuée à partir d’outils logiciels de conception de circuits électroniques : modélisation, simulation, vérification fonctionnelle, synthèse logique...
Utilisation d'outils de conception
Des choix sont à faire sur l’utilisation d’outils de gestion des exigences, de langages de spécification, d’outils de modélisation des données et des traitements, de représentation graphique de la conception (réalisation de diagrammes), de rétro-ingénierie de modèles à partir du code source, de simulation du fonctionnement des SI, des réseaux, des produits. Des patrons de conception sont réutilisables. Les AGL contiennent parfois des langages de spécification formels ou semi-formels (OCL, par exemple, pour la spécification des contraintes). UML est utilisable pour la modélisation de la conception détaillée.
Il est possible, parfois conseillé, prévu par les méthodes fondées sur les tests (test driven development), de préparer les tests des ensembles matériels et logiciels au stade de la conception détaillée.
Aucun commentaire:
Enregistrer un commentaire