Examen Architecture Logiciel 04
Section : Critères de qualité (ISO/IEC 25010)
Quelle caractéristique de qualité est essentielle pour éviter les interruptions dans un logiciel ?
a) Fonctionnalité
b) Fiabilité
c) Maintenabilité
d) Sécurité
Parmi les critères suivants, lequel est un sous-ensemble de la sécurité dans ISO/IEC 25010 ?
a) Confidentialité
b) Performance
c) Robustesse
d) Adaptabilité
Comment un critère comme la maintenabilité peut-il être illustré dans une application e-commerce ?
a) Par un design visuellement attractif
b) Par un code facilement modifiable en cas d'ajout de nouvelles fonctionnalités
c) Par la rapidité d'exécution des pages
d) Par l'utilisation d'une base de données cryptée
Quel est l'objectif principal du critère de compatibilité ?
a) Permettre au logiciel de fonctionner sur plusieurs plateformes
b) Améliorer la documentation
c) Réduire les coûts d'entretien
d) Accélérer le déploiement
Quel scénario peut illustrer la fiabilité d'une API REST ?
a) Gestion des erreurs pendant une surcharge
b) Fonctionnement sans interruption pendant une semaine
c) Accélération des délais de mise à jour
d) Support des nouvelles versions sans bugs
Section : Pratiques et outils de gestion de qualité
Quel est l'avantage principal du pair-programming ?
a) Économie de temps
b) Réduction des erreurs de code
c) Amélioration de la documentation
d) Automatisation des tests
Quel outil est le plus souvent utilisé pour l'analyse statique de code ?
a) IntelliJ IDEA
b) Jenkins
c) SonarQube
d) Eclipse
Quelle bonne pratique est associée aux revues de code ?
a) Programmation en solo
b) Partage d'idées entre pairs
c) Automatisation des tests unitaires
d) Utilisation de pipelines CI/CD
Dans quel contexte Jenkins est-il souvent utilisé ?
a) Revue de code
b) Déploiement continu
c) Analyse statique
d) Pair-programming
Qu'est-ce qu'une revue de code permet principalement d'accomplir ?
a) Résolution des conflits de merge
b) Correction des fautes grammaticales dans le code
c) Identification des bugs et des problèmes potentiels
d) Réduction de la taille du fichier
Section : Refactoring
Qu'est-ce que le refactoring ne modifie jamais ?
a) La structure interne du code
b) Le comportement externe du logiciel
c) Les méthodes utilisées dans le code
d) Les dépendances du projet
Quel outil peut être utilisé pour automatiser le refactoring dans un IDE ?
a) Jenkins
b) GitHub
c) IntelliJ IDEA
d) Docker
Quel est un risque majeur lié au refactoring ?
a) Diminution de la qualité du code
b) Introduction de régressions
c) Augmentation des coûts
d) Suppression des commentaires
Quelle technique est utilisée pour simplifier une structure complexe lors d'un refactoring ?
a) Optimisation de base de données
b) Extraction de méthodes
c) Réduction de la dette technique
d) Implémentation de CI/CD
Comment éviter les régressions pendant le refactoring ?
a) En supprimant les tests existants
b) En utilisant des tests automatisés
c) En ajoutant des duplications dans le code
d) En limitant les modifications
Section : Cas pratiques et concepts complémentaires
Quel concept est crucial dans les pipelines CI/CD ?
a) Revue manuelle
b) Déploiement continu
c) Codage en binôme
d) Structure monolithique
Quels sont les avantages d'utiliser SonarQube ?
a) Accélération des revues manuelles
b) Analyse approfondie des vulnérabilités du code
c) Amélioration de la documentation
d) Automatisation des déploiements
Quels outils facilitent le pair-programming ?
a) Jenkins et GitHub
b) IntelliJ IDEA et Visual Studio Code
c) Docker et Kubernetes
d) GitHub Actions et Gerrit
Quelle est la meilleure stratégie pour améliorer la maintenabilité d'un code existant ?
a) Ajouter des fonctionnalités sans tests
b) Documenter les API
c) Réorganiser les modules et fonctions inutilisés
d) Augmenter le nombre de dépendances
Comment évaluer la sécurité d'une API REST ?
a) En vérifiant la rapidité des requêtes
b) En analysant les permissions et authentifications
c) En mesurant le temps de développement
d) En augmentant le nombre de requêtes simultanées
PARTIE 2 --------------------
Section : Critères de qualité (ISO/IEC 25010)
Quel sous-critère de qualité évalue la capacité d’un logiciel à maintenir son niveau de performance sous une charge croissante ?
a) Fiabilité
b) Maintenabilité
c) Efficacité de performance
d) Sécurité
Quelle caractéristique relève de l’utilisabilité ?
a) La capacité à détecter les erreurs
b) La facilité d’apprentissage pour les utilisateurs
c) La compatibilité multiplateforme
d) L’optimisation des temps d’exécution
Quel critère de qualité garantit que les données sensibles ne sont pas accessibles aux utilisateurs non autorisés ?
a) Confidentialité
b) Maintenabilité
c) Fiabilité
d) Compatibilité
Qu’est-ce que l’adaptabilité dans le cadre de la qualité logicielle ?
a) La capacité du logiciel à s’intégrer facilement dans un nouvel environnement
b) L’efficacité du logiciel sous une forte charge
c) La facilité de modification du code
d) L’optimisation des temps de réponse
Quel critère mesure la capacité d’un système à éviter des erreurs de fonctionnement pendant son exécution ?
a) Maintenabilité
b) Sécurité
c) Fiabilité
d) Compatibilité
Section : Pratiques et outils de gestion de qualité
Quelle méthode peut être utilisée pour identifier les problèmes avant l’exécution d’un logiciel ?
a) Tests unitaires
b) Analyse statique du code
c) Tests d’intégration
d) Pair-programming
Quel est le principal objectif des tests automatisés dans un environnement CI/CD ?
a) Réduire le temps de développement
b) Éliminer les besoins en documentation
c) Détecter rapidement les régressions
d) Automatiser les revues de code
Quelle pratique permet d'améliorer la qualité des commits dans un projet collaboratif ?
a) L’utilisation de branches dédiées
b) La suppression de tests inutiles
c) La réduction du nombre de merge requests
d) L’automatisation des déploiements
Quel type de tests permet de vérifier l’intégration entre différentes parties d’un système ?
a) Tests de charge
b) Tests d’intégration
c) Tests de performance
d) Tests statiques
Comment améliorer l’indépendance des tests automatisés ?
a) En utilisant des données réelles
b) En isolant chaque cas de test
c) En exécutant tous les tests en parallèle
d) En éliminant les assertions
Section : Refactoring
Quelle est la première étape lors d’un refactoring ?
a) Modifier directement le code
b) Identifier les zones problématiques
c) Supprimer les anciens commentaires
d) Ajouter de nouvelles fonctionnalités
Pourquoi le code "mort" doit-il être supprimé pendant un refactoring ?
a) Pour réduire la taille du fichier
b) Pour améliorer la lisibilité et la maintenabilité
c) Pour éviter les conflits de merge
d) Pour accélérer les performances
Quelle est une bonne pratique lors du refactoring d’une classe contenant trop de responsabilités ?
a) Augmenter le nombre de méthodes privées
b) Diviser la classe en plusieurs classes plus spécifiques
c) Ajouter des commentaires pour expliquer le code complexe
d) Regrouper toutes les fonctionnalités dans une seule méthode
Quelle est la conséquence d’un mauvais refactoring ?
a) Une meilleure sécurité
b) L’introduction de bugs ou de régressions
c) Une réduction des dépendances
d) Une diminution de la dette technique
Quel outil peut être utilisé pour détecter les "mauvaises odeurs" dans le code (code smells) ?
a) Docker
b) Jenkins
c) SonarQube
d) Kubernetes
Section : Concepts complémentaires et cas pratiques
Dans un pipeline CI/CD, quel élément est crucial pour garantir une livraison rapide et fiable ?
a) Une intégration manuelle
b) Des tests automatisés et des builds fréquents
c) L’absence de tests d’intégration
d) Une documentation exhaustive
Comment Docker aide-t-il à maintenir la qualité logicielle ?
a) En isolant les environnements d’exécution
b) En remplaçant les tests automatisés
c) En améliorant la lisibilité du code
d) En optimisant les temps de réponse
Quels sont les avantages d’utiliser Git pour le contrôle de version dans un projet collaboratif ?
a) Permet de travailler hors ligne et de gérer les conflits efficacement
b) Remplace complètement les tests d’intégration
c) Améliore automatiquement les performances du code
d) Automatisation des déploiements
Quel est le rôle principal d’un administrateur dans le cadre d’un système de gestion de bases de données relationnelles ?
a) Modifier le modèle logique
b) Gérer les ressources physiques et les performances
c) Développer les applications
d) Réaliser des analyses statiques
Quelles sont les responsabilités principales d’un SGBD dans un système relationnel ?
a) Gérer la présentation des données uniquement
b) Assurer la sécurité, la performance et l'accès concurrentiel
c) Automatiser les tests d’intégration
d) Superviser la documentation des tables