Pourquoi un processus logiciel permet de gérer la complexité d’un projet de développement?
Connaître les étapes de la construction d’une équipe
Connaître le concept d’équipe maillée et ses avantages (le rôle du leadership, les ingrédients d’une équipe maillée)
Une équipe maillée a une forte cohésion, un objectif clair et une tâche explicite. Ses avantages sont le partage de connaissance et l’amélioration continuelle. Le rôle de leadership est la cohérence dans le traitement de ses coéquipiers, le respect, l’inclusion et l’honnêteté
Connaître la loi de Conway
La loi de Conway stipule que la structure d’un système logiciel reflète la structure de communication de l’organisation qui l’a conçu
Donc pour obtenir une architecture souhaitée, il faut organiser les équipes en conséquence
Savoir la définition de cycle de vie en développement logiciel et des concepts rattachés (phase, jalon).
Le cycle de vie en développement logiciel décrit les étapes par lesquelles passe un projet logiciel, de sa conception à sa livraison et sa maintenance. Il structure le processus de développement en phases distinctes, chacune ayant des objectifs spécifiques.
Phase : Une étape du cycle de vie qui regroupe des activités similaires. Par exemple, les phases classiques incluent la conception, l’implémentation, les tests et le déploiement.
Jalon : Un point clé dans le cycle de vie qui marque la fin d’une phase ou la réalisation d’un objectif important. Les jalons servent à évaluer l’avancement du projet.
Cycle de vie en cascade
○ Définition: un modèle linéaire et séquentiel ou chaque phase doit être complétée avant de passer à la suivante
○ Caractéristiques : Rigide, bien documenté, peu flexible aux changements.
○ Avantages : Clair et facile à comprendre, idéal pour les projets aux exigences stables.
○ Inconvénients : Difficile de revenir en arrière, peu adapté aux projets complexes ou changeants.
○ Projets appropriés : Projets avec des exigences bien définies et peu susceptibles de changer (exemple : systèmes critiques comme les logiciels médicaux).
Cycle de vie incrémental
○ Définition : Le logiciel est développé par incréments, chaque incrément ajoutant de nouvelles fonctionnalités.
○ Caractéristiques : produit fractionné en ensemble de fonctionnalités, itération de production d’un produit fonctionnel
○ Avantages :génère du code fonctionnel rapidement, flexible, gestion du risque plus facile
○ Inconvénients : des problèmes d’architecture peuvent survenir car les requis ne sont pas tous connus au départ, difficile de déterminer la fin du projet
○ Projets appropriés : Projets où les exigences évoluent avec une petite équipe facile à fractionner (exemple : applications web).
Cycle de vie transformationnel
○ Définition : prototypage évolutif
○ Caractéristiques : Toutes les parties sont développés simultanément
○ Avantages : peut revenir en arrière pour faire des corrections, permet un regroupement entre les itérations
○ Inconvénients :difficile à gérer, qualité du code déficiente
○ Projets appropriés : Projets où les spécifications sont bien définies et stables (exemple : systèmes embarqués).
Cycle de vie en spirale
○ Définition : Un modèle itératif qui est axé sur la gestion des risques
○ Caractéristiques : Cycles itératifs, gestion proactive des risques.
○ Avantages : Analyse de risque très élaborée, prototype fonctionnel dispo rapidement
○ Inconvénients : Complexité de gestion, possibilité que ça devienne en cascade, difficile à réutiliser
Projets appropriés : Projets complexes avec des risques élevés (exemple : systèmes de défense).
Connaître le cycle de vie du processus unifié et pouvoir associer des objectifs et des critères aux phases et jalons
Rôle, artéfact, activité
Rôle: Définit un ensemble de compétences et de responsabilités joué par un ou plusieurs individus
Artéfact: Élément d’information produit dans le cadre du processus, il peut évoluer (ex: code source)
Activité: travail accompli pour produire ou faire évoluer les artéfacts (ex: écrire du code)
Distinction entre projet et processus
Processus: décrit comment l’information est transformée durant le développement du logiciel
Méthodologie,
Un ensemble structuré d’activités et de pratiques utilisées pour atteindre un objectif
Projet: Planifie et assigne les ressources durant le développement logiciel
Un projet est unique et limité dans le temps, tandis qu’un processus est réutilisable et peut être appliqué à plusieurs projets.
Connaître les caractéristiques du processus unifié
Définir ce qu’est une itération et les avantages d’un processus itératif
Itération
Les itérations sont des structures de gestion qui permettent de contrôler la réalisation des phases du cycle de vie. Une itération est une séquence d’activités distinctes suivant un plan et ayant des critères d’évaluation basés sur la modification d’un artéfact
Avantages :
- Flexibilité pour s’adapter aux changements.
- Livraison précoce de fonctionnalités.
- Amélioration continue grâce aux retours fréquents.
Distinctions entre processus discipliné et agile
Connaître la définition des termes cérémonieux et opportuniste dans un contexte de développement logiciel.
Comprendre les objectifs de la discipline de gestion de configuration et changement et son bénéfice principal
identifier les artéfacs pour lesquels on veut garder une trace
- Établir les relations entre les artéfacts
- Définir les mécanismes de versions
- Contrôler les changements
- Gérer les requêtes de changements
- Auditer la complétude
Quels sont les problèmes qu’on essaie d’éviter avec la gestion de configuration et de changement?
Connaître les 3 dimensions de la GCC
Connaître les distinctions entre les systèmes de gestion de version centralisé et distribué ainsi que les bénéfices de ces derniers.
Connaître les bénéfices d’établir des bases de référence dans un référentiel
Savoir distinguer ce qu’est un besoin d’une exigence en génie logiciel.
Besoin :
- Un besoin est une expression générale et souvent floue de ce que l’utilisateur ou le client souhaite obtenir du système.
- Il est de haut niveau et ne précise pas comment le système doit fonctionner.
- Exemple : “Le système doit être facile à utiliser.”
Exigence :
- Une exigence est une spécification détaillée et formelle qui décrit ce que le système doit faire ou comment il doit se comporter.
- Elle est précise, mesurable et testable.
- Exemple : “Chaque fonctionnalité du système doit avoir une bulle d’aide (tooltip) explicative.”
Exigence: expression d’un besoin documenté sur ce que le produit logiciel devrait être ou faire
Connaître les attributs d’une bonne exigence
Une bonne exigence doit posséder les attributs suivants :
- Clarté : Elle doit être facile à comprendre et sans ambiguïté.
- Précision : Elle doit être spécifique et détaillée.
- Testabilité : Elle doit pouvoir être vérifiée par des tests.
- Pertinence : Elle doit être alignée sur les objectifs du projet et les besoins des parties prenantes.
- Réalisme : Elle doit être réalisable avec les ressources disponibles.
Traçabilité : Elle doit être liée à un besoin ou à une fonctionnalité spécifique.
Connaître les trois types d’exigence en génie logiciel et pouvoir donner des exemples