Semaine 5: QOC - Maintenabilité Flashcards
Quels sont les principaux points du modèle de qualité pour les produits logiciels?
- Functionnal suitability
- Performance efficiency
- Compatibility
- Usability
- Reliability
- Security
- Maintenability
- Portability
Quelle est la définition de la maintenabilité?
Le degré d’efficacité et de souplesse avec lequel un produit ou un système peut être modifié par les responsables, Où les modifications peuvent inclure des
corrections, des améliorations ou des adaptations au logiciel pour des changements dans l’environnement ainsi que dans les exigences et spécifications
fonctionnelles. Elle comprend aussi l’installation de mises à jour et de mises à niveau. Elle peut être interprété comme une capacité inhérente du produit ou du système afin de faciliter les activités de maintenance, ou la qualité d’utilisation dont disposent les responsables pour maintenir le produit ou le
système.
Qu’est-ce que l’analyse?
Le degré d’efficacité et de souplesse avec lequel il est possible d’évaluer l’impact d’un changement envisagé sur un produit ou un système dans une ou plusieurs de ses parties, ou pour diagnostiquer les défaillances ou les causes d’erreurs, ou pour identifier les parties à modifier.
Qu’est-ce que la modifiabilité?
Le degré auquel un produit ou un système peuvent être efficacement et souplement modifiés sans introduire de défauts ou dégrader la qualité du
produit.
Qu’est-ce que la testabilité?
Le degré d’efficacité et de souplesse avec lequel des critères de test peuvent être établis pour un système, un produit ou un composant ainsi que des tests
peuvent être effectué pour déterminer si ces critères ont été respectés.
Qu’est-ce que la modularité?
Le degré auquel un système ou un programme informatique est composé de composants discrets, de sorte qu’un changement sur un composant aura un
impact minimal sur d’autres.
Qu’est-ce que la réutilisabilité?
Le degré auquel un module logiciel peut être utilisé dans plus d’un système, ou dans la construction d’autres modules.
Comment déterminer les caractéristiques de qualité de la maintenabilité?
Mesurer un ensemble de propriétés d’un produit logiciel.
Quelles sont les propriétés d’un produit logiciel?
● Volume: Taille globale du code source du produit logiciel. La taille est déterminée à partir du nombre de lignes de code par langage de programmation.
● Duplication: Elle concerne l’apparition d’un fragments de code source identiques en plus d’un endroit du produit.
● Complexité de l’unité: Le degré de complexité dans les unités du code source. La notion d’unité correspond aux plus petites parties exécutables du
code source, telles que des méthodes ou des fonctions.
● Accouplement de module: Le couplage entre les modules en fonction du nombre de dépendances entrantes pour les modules du code source. La
notion de module correspond à un groupement d’unités liées.
● Balance des composants: il est le produit de la rupture du système, qui est une estimation pour le nombre de composants du niveau supérieur dans
le système, et l’uniformité de leurs taille, qui est une estimation pour la distribution de taille de ces composants du niveau supérieur. La notion de
composants du niveau supérieur correspond à la première subdivision des modules de code source d’un système en composants, où un composant est
un regroupement de modules de code source.
● Indépendance des composants: L’indépendance des composants est une estimation du pourcentage de code dans les modules qui n’ont aucune dépendance entrante à partir des modules des autres composants du niveau supérieur.
Quelles sont les dix consignes du SIG?
● Écrivez de courtes unités de code: les courtes unités (c’est-à-dire les méthodes et les constructeurs) sont plus faciles à analyser, à tester et à réutiliser.
● Écrire des unités de code simples: Les unités avec un petit nombre de points de décision sont plus faciles à analyser et à tester.
● Écrire le code une fois: la duplication du code source doit être toujours évitée, étant donné que des modifications devront être apportées dans
chaque copie. La duplication est également une source de régression de bogues.
● Gardez de petites interfaces d’unité: les unités (méthodes et constructeurs) avec moins de paramètres sont plus faciles à tester et à réutiliser.
● Séparez les préoccupations en modules: les modules (classes) qui sont lâchement couplés sont plus faciles à modifier et conduisent à un système plus modulaire.
● Composants de l’architecture faiblement couplés: les composants d niveau supérieur d’un système qui sont plus faiblement couplés sont plus faciles à être modifié et conduisent à un système plus modulaire.
● Maintenir les composants de l’architecture équilibrée: Une architecture bien équilibrée, qui n’a ni beaucoup ni trop peu de composants, de taille uniforme, elle est la plus modulaire et qui permet une modification facile par la séparation des préoccupations.
● Gardez votre codebase petit: un grand système est difficile à maintenir, car plus de code doit être analysé, modifié et testé. En outre, la productivité de la
maintenance par ligne de code est plus faible dans un système de grande taille que dans un petit système.
● Automatiser les pipelines de développement et des tests: les tests automatisés (c’est-à-dire les tests qui peuvent être exécutés sans intervention manuelle) permettent une rétroaction quasi instantanée sur l’efficacité des modifications. Les test manuels ne sont pas à l’échelle (scalable).
● Écrire du code propre: avoir des artefacts non pertinents tels que TODOs et le code mort dans votre codebase rend plus difficile pour les nouveaux
membres de l’équipe à devenir productifs. Par conséquent, il rend la maintenance moins efficace.
Qu’est-ce qu’un point de branche?
Un point de branche est une instruction dans laquelle l’exécution peut prendre plus d’une direction en fonction d’une condition (ex. les instructions if et switch).
Qu’est-ce que le principe de responsabilité unique?
● Les principes SOLID de Robert C. Martin
● Chaque module/classe devrait avoir la responsabilité sur une seule partie de la fonctionnalité fournie par un logiciel.
● La responsabilité doit être entièrement encapsulée par la classe.
● Tous ses services devraient être étroitement alignés sur cette responsabilité.
● Une classe doit avoir une seule raison de changer.
● Principe de cohésion
Qu’est-ce que Couple Architecture Components Loosely?
● Atteindre un faible couplage entre les composants de niveau supérieur.
● Pour ce faire, réduisez au minimum la quantité relative de code dans les modules exposés (c’est-à-dire pouvant recevoir des appels de) modules dans
d’autres composants.
● Cela améliore la maintenabilité car les composants indépendants facilitent la maintenance isolée.
● Les composants doivent être faiblement couplés; C’est-à-dire qu’ils devraient être clairement séparés en ayant peu de points d’entrée pour les autres
composantes et une quantité limitée d’informations partagées entre les composantes.
● Basse dépendance des composants permet une maintenance isolée
● Basse dépendance des composants sépare les responsabilités d’entretien
Que permet de faire la basse dépendance des composants?
● Basse dépendance des composants permet une maintenance isolée
● Basse dépendance des composants sépare les responsabilités d’entretien
Qu’est-ce que conserver les composants d’architecture équilibrés?
● Équilibrez le nombre et la taille relative des composants de niveau supérieur dans votre code.
● Faites cela par organisez le code source d’une manière telle que le nombre de composants soit proche de 9 (c’est-à-dire entre 6 et 12) et que les
composants aient approximativement une taille égale
● Cela améliore la maintenabilité car les composants équilibrés facilitent la localisation du code et permettent une maintenance isolée.