SMC-S-012 Développement de logiciels
La norme « SMC-S-012 Développement logiciel », publiée par le Centre des systèmes spatiaux et de missiles (SMC) du Commandement spatial de l’Armée de l’air américaine, a pour objectif de définir des exigences uniformes pour les activités de développement logiciel des systèmes critiques. Cette norme est basée sur la norme militaire « MIL-STD-498 : Développement et documentation des logiciels » élaborée par le département de la Défense des États-Unis.

Cette norme s'applique au développement de systèmes critiques qui incluent des logiciels (tels que des systèmes matériels-logiciels), des systèmes uniquement logiciels et des produits logiciels autonomes. Cette norme peut être appliquée aux sous-traitants effectuant le développement de logiciels ou aux agences internes qui effectuent des achats. Cette norme peut être adaptée à chaque catégorie de logiciel à laquelle elle s'applique.
Cette norme est indépendante de toute méthode ou outil de développement logiciel spécifique. Aucune exigence de cette norme n’impose l’utilisation d’une méthode ou d’un outil particulier.
Le cadre utilisé pour organiser les principales activités logicielles dans le processus de développement logiciel est appelé modèle de cycle de vie de développement logiciel.
- Le développeur doit choisir le ou les modèles de cycle de vie de développement logiciel appropriés au logiciel en cours de développement. Un projet logiciel peut avoir plusieurs modèles de cycle de vie de développement logiciel pour différentes catégories de logiciels développés.
- Le développeur doit enregistrer le ou les modèles de cycle de vie de développement logiciel sélectionnés dans le modèle « Plan de développement logiciel » ci-joint.
- Le développeur doit fournir une description de chaque modèle de cycle de vie de développement logiciel qui sera utilisé dans le projet dans le plan de développement logiciel.
- Pour chaque modèle de cycle de vie de développement logiciel à utiliser, le développeur doit définir dans le plan de développement logiciel :
- À quel moment du cycle de développement du système sera-t-il utilisé ?
- Dans quelles conditions sera-t-il utilisé ?
- Quels éléments logiciels utiliser pour
- Le développeur doit établir un processus de développement logiciel conforme aux exigences du contrat.
- Le processus de développement logiciel doit inclure les principales activités et processus intégrés suivants :
- Planification et contrôle de projet
- Création d'un environnement de développement logiciel
- Analyse des exigences du système
- Conception de l'architecture du système
- Analyse des besoins logiciels
- Architecture et conception de logiciels
- Implémentation de logiciels et tests unitaires
- Intégration et tests unitaires
- Tests de qualification des éléments logiciels
- Intégration et test d'éléments logiciels-matériels
- Tests de qualification du système
- Préparation du logiciel pour la transition vers l'exploitation
- Préparation du logiciel pour la transition vers la maintenance
- Processus intégrés :
- Gestion de la configuration logicielle
- Évaluations de logiciels par les pairs et évaluations de produits
- Assurance qualité des logiciels
- Mesures correctives
- Revues techniques et de gestion conjointes
- Gestion des risques logiciels
- Mesure du logiciel
- Guvenlik et Gizlilik
- Gestion des membres de l'équipe logicielle
- Interface avec les agents logiciels IV&V
- Coordination avec les développeurs partenaires
- Améliorer les processus de projet
Ces activités importantes peuvent se chevaucher, être mises en œuvre de manière itérative ou être mises en œuvre différemment. Elle concerne divers éléments du logiciel et n’est pas nécessairement exécutée dans l’ordre indiqué ci-dessus.
- Les processus de développement logiciel du développeur doivent être décrits dans le plan de développement logiciel.
Les exigences générales pour le développement de logiciels incluent les exigences générales des développeurs pour répondre aux exigences détaillées définies dans cette norme. Des exigences plus détaillées sont incluses dans l’annexe de la norme (annexe H.1).
- Méthodes de développement logiciel : Le développeur doit utiliser des méthodes systématiques et documentées pour toutes les activités de développement logiciel. Ces méthodes systématiques de développement de logiciels doivent être spécifiées dans le plan de développement de logiciels.
- Normes pour les produits logiciels : Le développeur développe des normes pour représenter les exigences, l'architecture, la conception, le code, les cas de test, les procédures de test et les résultats des tests. Ces normes de représentation des produits sont spécifiées dans le plan de développement du logiciel. Le développeur applique les normes spécifiées dans le plan de développement logiciel pour représenter les exigences, l'architecture, la conception, le code, les cas de test, les procédures de test et les résultats des tests.
- Traçabilité : La traçabilité fournit une relation entre le contenu de deux produits liés, par exemple, la relation entre chaque exigence logicielle et les composants de conception logicielle qui satisfont à l'exigence. La traçabilité bidirectionnelle garantit une relation bidirectionnelle entre le contenu de deux produits liés. Un exemple d'une telle relation bidirectionnelle est la traçabilité de chaque exigence logicielle aux composants de conception logicielle qui satisfont l'exigence, et la traçabilité de chaque composant de conception aux exigences logicielles satisfaites par le composant de conception. L'objectif des exigences de traçabilité bidirectionnelle de cette section est de tracer à la fois vers le haut et vers le bas pour garantir que :
- Démontrer que toutes les exigences ont été attribuées aux composants, mises en œuvre et testées
- Démontrer qu’aucune exigence supplémentaire ne s’applique
- Fournir des informations sur l'impact des changements proposés
- Fournir des informations sur l'impact des problèmes découverts
- Fournir des informations pour la maintenance des logiciels.
- Produits logiciels réutilisables : Le développeur doit identifier les produits logiciels réutilisables qui seront utilisés pour répondre aux exigences du contrat. La portée de la recherche d’un produit logiciel réutilisable doit être précisée dans le plan de développement du logiciel. Le développeur doit évaluer les produits logiciels réutilisables qui seront utilisés pour répondre aux exigences du contrat. Les critères à utiliser pour évaluer le produit logiciel réutilisable doivent être ceux spécifiés dans le plan de développement du logiciel. Le développeur doit utiliser au moins les critères d’évaluation de l’annexe de la norme pour sélectionner les produits logiciels réutilisables (annexe B). Les critères d’évaluation peuvent être pondérés différemment selon les catégories de logiciels et les exigences critiques. Les produits logiciels réutilisables sélectionnés doivent répondre aux exigences en matière de droits sur les données prévues dans le contrat. Un produit logiciel réutilisable peut être utilisé tel quel ou peut être modifié et utilisé pour répondre à l'ensemble ou à une partie de l'exigence.
Notre organisation, qui s'efforce de soutenir les entreprises de tous les secteurs avec une large gamme d'études de tests, de mesures, d'analyses et d'évaluation qu'elle réalise depuis des années, dispose d'un personnel solide qui suit de près les développements dans le monde dans le domaine de la science et de la technologie et s'améliore constamment. Dans ce contexte, des services de tests sont également fournis aux entreprises conformément à la norme « SMC-S-012 Développement de logiciels ».