M. Marc TEJIOGNI
Email : mtejiogni@yahoo.fr
Tél : 693 90 91 21 / 670 10 23 98
Initiation au Génie Logiciel 2018 / 2019
PLAN DU COURS
OBJECTIF GENERAL........................................................................................................................ 6
CHAPITRE I : PRESENTATION DU GENIE LOGICIEL................................................................ 7
I. Objectifs ................................................................................................................................... 7
II. Définition et principes d’ingénierie pour le logiciel ................................................................ 7
III. Processus de développement logiciel .................................................................................... 8
III.1. Analyse des besoins ............................................................................................................ 8
III.2. Spécification........................................................................................................................ 8
III.3. Conception .......................................................................................................................... 9
III.4. Programmation (Implémentation)....................................................................................... 9
III.5. Validation et vérification .................................................................................................. 10
III.6. Intégration et tests (Déploiement)..................................................................................... 10
III.7. Maintenance ...................................................................................................................... 11
IV. Tests de connaissances ........................................................................................................ 12
CHAPITRE II : CYCLE DE VIE DU LOGICIEL ............................................................................ 13
I. Objectifs ................................................................................................................................. 13
II. Différents cycles de vie.......................................................................................................... 14
II.1. Cycle en cascade ................................................................................................................ 14
II.2. Cycle en V .......................................................................................................................... 15
II.3. Cycle en spirale .................................................................................................................. 17
II.4. Développement par prototypage ........................................................................................ 18
II.5. Développement incrémental............................................................................................... 19
II.6. Méthodes agiles .................................................................................................................. 20
III. Tests de connaissances ........................................................................................................ 20
CHAPITRE III : ANALYSE DES BESOINS ET SPECIFICATIONS FONCTIONNELLES ........ 21
I. Objectifs ................................................................................................................................. 21
II. Intérêt de l’analyse des besoins.............................................................................................. 21
III. Concepts de base ................................................................................................................. 21
III.1. Qu’est-ce qu’un client ? .................................................................................................... 21
III.2. Qu’est-ce qu’un besoin, une fonction, un produit ou un service ? ................................... 22
III.3. Qu’est ce qu’une fonction d’usage et une fonction d’estime ? ......................................... 24
III.4. Quels sont les acteurs de l’analyse du besoin ? ................................................................ 25
IV. Analyse fonctionnelle (Spécification) ................................................................................. 26
IV.1. Définition .......................................................................................................................... 26
IV.2. Analyse fonctionnelle interne ........................................................................................... 26
2 M. Marc TEJIOGN I | mtejiogni@yahoo.fr | Tél : 693 90 91 21 – 670 10 23 98
Initiation au Génie Logiciel 2018 / 2019
VII.1. Vocabulaire...................................................................................................................... 52
VII.2. Différentes méthodes d'estimation des charges ............................................................... 53
VII.2.1. La non méthode ........................................................................................................ 53
VII.2.2. La Méthode Delphi................................................................................................... 53
VII.2.3. Méthode de répartitions proportionnelle .................................................................. 54
VII.2.4. Méthode COCOMO (COnstructive COst Model).................................................... 54
VIII. Tests de connaissances .................................................................................................... 55
CHAPITRE VI : TEST D’UN LOGICIEL........................................................................................ 56
I. Objectifs ................................................................................................................................. 56
II. Fondement du test (pourquoi réaliser un test ?) ..................................................................... 56
III. Cycle de développement du test .......................................................................................... 57
III.1. Mise au point inductive..................................................................................................... 58
III.2. Mise au point déductive .................................................................................................... 58
IV. Les différents techniques de test ......................................................................................... 59
IV.1. Test statique ...................................................................................................................... 59
IV.2. Test dynamique................................................................................................................. 60
IV.3. Test « Boîte blanche » ...................................................................................................... 60
IV.3.1. Structures de la représentation de la boîte blanche.................................................... 61
IV.3.2. Mesure de complexité de Mac Cabr .......................................................................... 61
IV.4. Test « Boîte noire »........................................................................................................... 62
CHAPITRE VII : FIABILITE DU LOGICIEL ................................................................................. 64
I. Objectifs ................................................................................................................................. 64
II. Défaut et faute ........................................................................................................................ 64
III. Amélioration de la fiabilité ................................................................................................. 65
IV. Métrique de la fiabilité ........................................................................................................ 65
IV.1. Probabilité d’une panne .................................................................................................... 65
IV.2. Taux de panne ................................................................................................................... 65
IV.3. Temps moyen entre deux pannes...................................................................................... 65
IV.4. Disponibilité...................................................................................................................... 66
V. Classification de défaut .......................................................................................................... 66
VI. Exercice d’application ......................................................................................................... 66
CHAPITRE VIII : MAINTENANCE DU LOGICIEL ..................................................................... 68
I. Objectifs ................................................................................................................................. 68
II. Les types de maintenance.......................................................................................................... 68
II.1. La maintenance perfective ou évolutive............................................................................. 68
II.2. La maintenance adaptative ................................................................................................. 69
II.3. La maintenance corrective.................................................................................................. 69
OBJECTIF GENERAL
Le (Génie Logiciel) GL se préoccupe des procédés de fabrication des logiciels de façon à s’assurer
que les quatre critères suivants soient satisfaits :
• Le système qui est fabriqué répond aux besoins (exigences) des utilisateurs (correction
fonctionnelle) ;
• La qualité correspond au contrat de service initial. La qualité du logiciel est une notion multiforme
qui recouvre notamment :
o La validité : aptitude d’un logiciel à réaliser exactement les tâches définies par sa
spécification,
o La fiabilité : aptitude d’un logiciel à assurer de manière continue le service attendu,
o La robustesse : aptitude d’un logiciel à fonctionner même dans des conditions anormales,
o L’extensibilité : facilité d’adaptation d’un logiciel aux changements de spécification,
o La réutilisabilité : aptitude d’un logiciel à être réutilisé en tout ou partie,
o La compatibilité : aptitude des logiciels à pouvoir être combinés les uns aux autres,
o L’efficacité : aptitude d’un logiciel à bien utiliser les ressources matérielles (mémoire,
CPU...),
o La portabilité : facilité à être porté sur de nouveaux environnements matériels et/ou
logiciels,
o La traçabilité : capacité à identifier et/ou suivre un élément du cahier des charges lié à un
composant d’un logiciel,
o La vérifiabilité : facilité de préparation des procédures de recette et de certification,
o L’intégrité : aptitude d’un logiciel à protéger ses différents composants contre des accès ou
des modifications non autorisés,
o La facilité d’utilisation, d’entretien, etc.
• Les coûts restent dans les limites prévues au départ.
• Les délais restent dans les limites prévues au départ.
Ces qualités sont parfois contradictoires. Il faut les pondérer selon les types d’utilisation. Il faut
aussi distinguer les systèmes sur mesure et les produits logiciels de grande diffusion.
Avoir des procédures systématiques pour des logiciels de grande taille afin que :
• La spécification corresponde aux besoins réels du client
• Le logiciel respecte sa spécification
• Les délais et les coûts alloués à la réalisation soient respectés
Besoins du
client Analyse des besoins Cahier des charges
III.2. Spécification
Permet d’établir une description claire de ce que doit faire le logiciel (fonctionnalités détaillées,
exigences de qualité, interface...) et clarifier le cahier des charges (ambiguïtés, contradictions).
III.3. Conception
Permet d’élaborer une solution concrète réalisant la spécification. C’est le moment idéal de :
• Description architecturale en composants (avec interface et fonctionnalités)
• Réalisation des fonctionnalités par les composants (algorithmes, organisation des données)
• Réalisation des exigences non- fonctionnelles (performance, sécurité...)
Conception Dossier de
Cahier des charges conception
fonctionnel
Ici c’est la programmation qui nécessite la connaissance d’un certain nombre de langage pour le
mener à bien, il faut savoir bien programmer et connaitre les outils à utiliser. Il existe des outils qui
peuvent aider de manière à réduire le nombre d’erreur à ce niveau.
Validation
Besoins du
client Cahier des Logiciel
charges
fonctionnel
Vérification
Méthodes de validation
• Revue de spécification, de code
• Prototypage rapide
• Développement de tests exécutables (extrême programming)
Méthodes de vérification
• Test (à partir de la spécification)
• Preuve de programmes
• Model-checking (vérification de modèles)
III.7. Maintenance
La maintenance du logiciel désigne, en génie logiciel, les modifications apportées à un logiciel,
après sa mise en œuvre, pour en corriger les fautes, en améliorer l'efficacité ou autres
caractéristiques, ou encore adapter celui-ci à un environnement modifié.
Types de maintenance
160
140
120
100
Integration/test
80
Programmation
60 Conception
40 Spécialisation
20
0
Effort Origine des Coût maince
erreurs
Définir clairement la portée de l’étude des risques permettant de guider le travail d’analyse et réduit
ainsi les possibilités que les résultats soient facilement remis en question. Pour ce faire, il est
souhaitable de définir et de formuler le domaine d’application de l’analyse du risque afin de
produire un plan d’analyse du risque dès le début du projet. Il est souhaitable d’inclure, dans la
définition du domaine d’application du risque, les éléments suivants :
• La description des raisons ou problèmes qui ont donné lieu à l’analyse du risque.
• La formulation des objectifs de l’analyse de risque, sur la base des principales
préoccupations identifiées
• La définition du système à analyser.
• L’identification des sources d’information.
• La définition des conditions de fonctionnement couvertes par l’analyse de risque ainsi que
d’éventuelles limites applicables;
• L’identification des sources permettant d’obtenir des détails des aspects techniques,
environnementaux, légaux, organisationnels et humains concernant l’activité et le problème
à analyser. Il y a lieu, en particulier, de décrire également tout aspect sécuritaire.
• L’analyse des accidents passés.
• La détermination des hypothèses et contraintes régissant l’analyse.
• L’identification des décisions à prendre, des décideurs et du résultat requis de l’étude.
Chaque étape doit être terminée avant que ne commence la suivante, à chaque étape, il y a
production d'un document base de l'étape suivante.
Ce modèle créé par Winston W.Royce en 1970 est basé sur 2 éléments fondamentaux :
Lors du processus, chaque phase doit être définie précisément, c’est-à-dire, qu’il correspond au
cahier des charges écrit ultérieurement, et possède une date d’échéance fixe. Lorsque l’étape est
validée le processus continu, sinon l’étape est refaite. Si une erreur critique est rencontrée, il est
possible de revenir à la première étape.
Avantages
Inconvénients
• Découverte d'une erreur entraîne retour à la phase à l'origine de l'erreur et nouvelle cascade,
avec de nouveaux documents...
• Coût de médication (traitement) d'une erreur important, donc choix en amont cruciaux
(typique d'une production industrielle)
Il n’est pas toujours adapté à une production logicielle, en particulier si les besoins du client sont
changeants ou difficiles à spécifier.
II.2. Cycle en V
Principe
• Analyse des besoins : le client va exprimer sa demande, une analyse est faite par la suite par
l’équipe, pour pouvoir présenter une solution intéressante au client.
• Les spécifications fonctionnelles : Elles permettant de décrire de manière complète ou
précises le produit et ses différentes fonctionnalités.
• Conception architecturale ou préliminaire : Ici vont être présenté l’interface graphique ou
maquette, l’arborescence à travers le module de la solution et leur interaction, …
• Conception détaillé : tout simplement, ça sera les spécifications fonctionnelles avec les
diagrammes (UML) pour être plus explicite pour que les développements commencent.
• Codage (ou développement) : l’équipe commence les développements des fonctionnalités
du produit tout en respectant les spécifications détaillées (Spécifications fonctionnelles +
Maquettes), afin de respecter le contrat avec le client et réaliser la demande du client.
• Tests unitaires : Après les développements des fonctionnalités du produit, l’équipe réalise
les tests unitaires, techniquement parlant, les tests de chaque méthode qui fait un traitement
spécifique.
• Tests d’intégration : Des tests de chaque fonctionnalité sont par la suite fait, ce sont des
tests qui se font sur tout une fonctionnalité, ils peuvent passer par plusieurs méthodes pour
assurer le bon résultat.
• Tests de validation : permet de vérifier si toutes les exigences client décrites dans le
document de spécification d'un logiciel, écrit à partir de la spécification des besoins, sont
respectées. Les tests de validation se décomposent généralement en plusieurs phases:
o Validation fonctionnelle : Les tests fonctionnels vérifient que les différents modules
ou composants implémentent correctement les exigences client.
o Validation solution : Les tests solutions vérifient les exigences client d'un point de
vue cas d'utilisation (use cases). Généralement ces tests sont des tests en volume.
Chaque grand cas d'utilisation est validé isolément; puis tous les cas d'utilisation sont
validés ensemble. L'intérêt est de valider la stabilité d'une solution par rapport aux
différents modules qui la composent, en soumettant cette solution à un ensemble
d'actions représentatif de ce qui sera fait en production.
o Validation performance, robustesse : Les tests de performance vont vérifier la
conformité de la solution par rapport à ses exigences de performance, alors que les
tests de robustesse vont essayer de mettre en évidence des éventuels problèmes de
stabilité et de fiabilité dans le temps (fuite mémoire par exemple, résistance au pic de
charge, augmentation de la volumétrie des données,...).
• Recette et maintenance : Le cahier de recette (réalisé en parallèle avec les spécifications
fonctionnelles), contient les descriptions des fonctionnalités des spécifications
fonctionnelles, l’équipe utilise ce cahier pour tester ces fonctionnalités sur le produit pour
pouvoir détecter les bugs, pour les corriger, afin d’assurer formellement que le produit est
conforme aux spécifications
Avantages
• Simple et intuitive à utiliser : Cette méthodologie est encore enseignée dans la plupart des
écoles d’ingénieurs et constitue un process naturel où il faut concevoir avant de réaliser.
• Attitude proactive : Le travail effectué lors des phases de conception permet de limiter les
risques et dérives pendant les phases de tests. Il s’agit de mettre en face de chaque phase de
spécification un moyen de vérification.
Le cycle en spirale reprend les étapes du cycle en V, et prévoit la livraison de versions successives,
ce qui permet de mettre l’accent sur la gestion des risques. Ce cycle prévoit la livraison de
prototypes, c’est à dire de versions incomplètes du produit. Il peut s’agir par exemple d’une simple
maquette sans aucune fonctionnalité.
Avantages
Meilleure maîtrise des risques (mais nécessite une très grande expérience).
Inconvénients
Il n’est adapté qu’aux grands projets et peut engendrer plus des surcoûts d'analyse par rapport à la
réalisation du logiciel. Enfin, le cycle entre les étapes prévues en théorie et celles mises en pratique
il y a parfois une grande différence.
• Développement rapide d'un prototype avec le client pour valider ses besoins ;
• Écriture de la spécification à partir du prototype, puis processus de développement linéaire.
Avantages
Inconvénients
Besoin du
client Prototypage Cahier des
charges Logiciel
Fonctionnel
Inconvénients
Intégration fonctionnalités secondaires non pensées en amont
Avantage
Développement rapide en adéquation avec les besoins
Inconvénients
• Pas de spécification, documentation = tests, maintenance
• Fonctionne pour petites équipes de développement (< 20) car communication cruciale
Ainsi, ce chapitre met en exergue les définitions et les concepts touchant aux thèmes suivants :
• La notion de client interne et la notion de client externe.
• La notion de besoin.
• La notion de produit ou de service pour couvrir le besoin.
• La notion de fonction.
• Les acteurs qui participent à l’analyse du besoin.
Analyser un besoin c’est devenir un « traducteur », cette traduction doit être la plus fidèle
possible afin que celui qui va « couvrir » le besoin y réponde précisément.
Le besoin est ensuite décrit dans un document qui est appelé « cahier des charges ».
Le client est la personne la mieux placée pour exprimer son besoin, toutefois elle aura tendance à
raisonner solution plutôt que besoin. Ainsi elle dira « je veux une voiture » plutôt que « je
souhaite me déplacer d’un point A à un point B dans telle condition de confort ».
21 M. Marc TEJIOGN I | mtejiogni@yahoo.fr | Tél : 693 90 91 21 – 670 10 23 98
Initiation au Génie Logiciel 2018 / 2019
Un client interne est un client qui appartient à l’entreprise productrice du bien ou service considéré.
Le terme de client interne désigne généralement un département, service ou salarié qui reçoit un
produit ou service produit par un autre département de l’entreprise.
Exemple : Au sein d’une même entreprise, l’atelier de montage est ainsi le client interne des
départements produisant les pièces nécessaires au montage.
Le client externe est un individu externe à l’entreprise qui achète et / ou consomme les produits ou
services de cette entreprise.
Exemple :
Le besoin peut être exprimé de la manière suivante : « je voudrais trouver un moyen facile et rapide
pour aller de mon domicile à mon travail » c’est le besoin exprimé, mais de manière implicite
l’utilisateur pense « avec toutes les conditions de sécurité... »
Les fonctions doivent être normalement qualifiées afin qu’il n’y ait pas d’ambiguïté, en effet
la notion de « rapidement » peut être très différente d’un utilisateur à l’autre. On va donc dire
que la fonction « être transporté » sera qualifiée à 50 km/h de moyenne sur tout le trajet.
22 M. Marc TEJIOGN I | mtejiogni@yahoo.fr | Tél : 693 90 91 21 – 670 10 23 98
Initiation au Génie Logiciel 2018 / 2019
Les fonctions sont remplies par des produits ou des services offerts au client- utilisateur.
Ainsi si l’analyse du besoin est bien réalisée elle laisse un grand champ de possibles pour couvrir le
besoin.
Nous pouvons par exemple proposer plusieurs produits qui remplissent la fonction « se
déplacer à une moyenne de 50 km/h », la voiture, le tramway, le scooter, le bus, etc.
Si le besoin a bien été analysé, l’ensemble des fonctions sera listé, et les produits proposés
couvriront le besoin.
Pour faire un bon produit, il faut d’abord avoir identifié le vrai besoin. L’approche méthodique est
comme suit :
1 2 3
Les fonctions doivent satisfaire aux besoins comme illustre le schéma ci-dessous :
Besoin
Fonction
Inutilité
Insatisfaction
La fonction d’estime est liée au goût de l'utilisateur et peut être ressentie différemment d'un
utilisateur à un autre. La fonction d'estime est en rapport étroit avec le style de l'objet (forme,
matières, modes, couleurs ...)
L’ensemble des fonctions d’un produit comporte des fonctions d’usage et des fonctions
d’estime. Ainsi le coût total d’un produit est la somme des coûts nécessaires pour remplir
les fonctions d’usage et pour remplir les fonctions d’estime.
La répartition de ces coûts est très différente suivant les produits. Les produits d’utilisation et de
consommation courante privilégient la fonction d’usage, ainsi dans un paquet de lessive c’est
généralement l’usage (laver le linge) qui prime. Cependant l’estime n’est jamais totalement ignorée,
ainsi on mettra dans la lessive des petites paillettes bleues pour indiquer qu’il y a des agents actifs,
la couleur, une grosse partie de la présentation et du packaging remplissent des fonctions d’estime.
Prenons le cas d’une montre, sa fonction d’usage principale est de donner l’heure, pour remplir
cette fonction vous pouvez acheter une Swatch (encore qu’il existe une certaine « estime » à
porter une Swatch !) ou acheter une Rolex qui elle aussi donnera l’heure aussi bien que la Swatch.
La multiplication des acteurs dans l’analyse du besoin donne plus de recul à chacun et permet de
meilleurs arbitrages. Cependant les erreurs d’interprétation sont généralement plus nombreuses.
L’équipe peut être réduite aux utilisateurs, l’analyste et le décideur, il est alors plus facile
de communiquer mais l’étude sera moins ouverte, moins complète et sûrement plus orientée.
Un système est un ensemble d’éléments formant un tout structuré satisfaisant plusieurs besoins
cohérents.
Le produit est considéré comme un assemblage de constituants dont chacun remplit certaines
fonctions (fonctions de services) vis-à-vis des autres. Elle exprime le point de vue du concepteur
réalisateur du produit. Elle met en évidence les fonctions techniques qui sont internes au produit, et
qui sont choisies par le constructeur pour assurer une fonction de service.
Il existe plusieurs méthodes ou outils mettant en exergue l’analyse fonctionnelle interne donc nous
en citerons un (01) en particulier à savoir :
Principe de fonctionnement
Dès lors que les fonctions de services sont identifiées, cette méthode les ordonne et les décompose
logiquement pour aboutir aux solutions techniques de réalisation.
Le diagramme FAST constitue alors un ensemble de données essentielles permettant d’avoir une
bonne connaissance d’un produit complexe et ainsi de pouvoir améliorer la solution proposée.
Exemple :
Elle exprime le point de vue du client et met en évidence les fonctions d’usage ou d'estime.
Il existe plusieurs méthodes ou outils mettant en exergue l’analyse fonctionnelle externe donc nous
en citerons deux (02) en particulier à savoir :
Produit
Exemple :
Tondeuse
Vocabulaire
Principe de fonctionnement
Pour créer un diagramme pieuvre nous devons tout d’abord placé l’objet à étudier dans une bulle
centrale puis, rechercher les Elé ments du Milieu Extérieur (EME) en relation avec le produit ou
service et les placer autour de la première bulle. Identifier les fonctions principales FP (= relier
deux bulles extérieurs en passant par l’objet à étudier) et enfin identifier les fonctions de
contraintes FC en reliant par une ligne les bulles restantes de l’extérieur à l’objet à étudier.
Exemple :
V. Tests de connaissances
Faire l’analyse des besoins et l’analyse fonctionnelle d'un téléphone portable.
Dans le cadre de ce cours, l’apprenant est orienté vers les compétences suivantes :
• Permettre la réalisation des tâches prévues,
• Minimiser l'investissement nécessaire pour pouvoir utiliser l'interface
• Garantir des interactions fiables
• Favoriser la standardisation ;
• Favoriser la standardisation :
La standardisation permet de réduire les temps d'apprentissage, augmente la confiance et les
performances des utilisateurs (moins d'erreurs) et améliore la portabilité des systèmes.
• Règles :
o Séparer la conception de l’application de la conception de l’interface
o Prendre en compte les utilisateurs
o Concevoir de manière itérative, avec phases d’affinement progressif par une équipe
pluridisciplinaire.
1. Déterminer l'ensemble des tâches que l'IHM devra permettre de réaliser : une bonne
IHM est une IHM dont les objectifs fonctionnels sont clairement identifiés ;
2. Déterminer les caractéristiques principales des utilisateurs qui seront ame nés à utiliser
l'IHM (leur profil) : La qualité d'une IHM est directement dépendante de son adéquation
avec la population d'utilisateurs pour laquelle elle est prévue ;
3. Proposer plusieurs prototypes d'interface qui seront discutés et évalués par les
concepteurs et les utilisateurs potentiels : Une bonne IHM naît le plus souvent de la
diversité... et plusieurs pistes doivent donc être explorées ;
IV.3. Le matériel
Le matériel qui supporte l’interface comporte des caractéristiques qui lui sont propres. Il définit
parfois un type d’interaction avec l’utilisateur, par exemple avec le choix d’un périphérique de
saisie plutôt qu’un autre (clavier physique, souris, tactile…). Plus généralement, il est nécessaire de
relever également les propriétés des éléments qui servent à l’utilisateur, en complément de
l’interface (bloc-notes, documents textuels, manuels…).
V. Tests de connaissances
Apres avoir présenté de manière sommaire la notion d’ergonomie, faites un lien étroite avec la
notion de qualité logiciel et les utilisateurs.
II. Définition
Selon AFITEP (Association Française des Ingénieurs et Techniciens d'Estimation et de
Planification), Dictionnaire de manage ment de projet [1996],
Savoir combien de temps doit durer la réalisation d’un projet n’est pas aisé, même si cela fait partie
du travail d’un ingénieur. Certains projets ne sont pas urgents, ni même importants, mais ils
comportent forcément une deadline à partir de laquelle ils deviennent caducs.
Un client est prêt à dépenser une certaine somme pour un projet donné. La valeur du projet peut
éventuellement s’adapter à un certain nombre de critères, mais il y a forcément un seuil au-delà
duquel il est impossible de le rentabiliser. La notion de coût englobe aussi bien les frais d’étude (en
fonction du temps passé aux spécifications fonctionnelles et techniques) et de réalisation (suivant le
nombre de développeurs nécessaires, le matériel mis à leur disposition, la présence d’une équipe de
test et de validation, …), que les frais d’exploitation (matériel nécessaire pour faire tourner le projet
en production, salaire de l’opérateur de maintenance, …)
Un projet de médiocre qualité remplira les besoins immédiats du client, en s’autorisant un certain
nombre de raccourcis. Un projet de bonne qualité aura été spécifié pour couvrir certains besoins
futurs identifiables, et offrira une ergonomie adaptée, des performances homogènes, une évolutivité
étudiée, une documentation complète.
• Phase de conception :
o Déterminer le but du projet
o Estimer les ressources matérielles, logicielles et humaines
o Définir le type d'organisation
o Choisir le MOA (Maîtrise d’ouvrage), le MOE (Maîtrise d’œuvre) et le chef de
projet
o Estimation des risques liés à la réalisation du projet
o Définir les moyens ou méthodes de gestion ou de pilotage de projet à utiliser
• Phase de planification
o Organigramme des tâches
o Détail des coûts et délais
o Engagement des hommes-clés
o Définition des responsabilités
• Phase de réalisation :
o Mise en place de l’organisation
o Exécution du travail
o Pilotage délais-coûts-spécifications
o Résolution des problèmes
• Phase de terminaison :
o Analyse des écarts entre planifié et réalisé
o Evaluation du projet
o Archivage
o Réaffectation du personnel
Maîtrise d'Ouvrage (MOA) : L’entité génératrice du projet. La MOA lance le projet, définit les
limites et les frontières ainsi que la nature du projet. C’est elle qui établit le cahier des charges.
3 1
Tâche
Elle permet au projet d’avancer vers son état final. On attribue une lettre à chaque tâche afin
d’alléger le schéma. La tâche a des propriétés d’ordre temporel qui qualifient le temps de réalisation
: la durée, exprimée en minutes ou bien heures, jours, semaines, mois, etc.
Exprimée via la méthode PERT, une tâche est représentée par une flèche, précisée par son nom et sa
durée.
Une tâche ne peut être représentée qu’une seule fois ; inversement, une flèche ne peut représenter
qu’une seule tâche. La longueur, la courbure et la forme des flèches sont sans signification
particulière.
Étape
Une étape indique le début et/ou la fin d’une tâche. On numérote les étapes afin de clarifier le
schéma.
L’étape a des propriétés d’ordre temporel : dates au plus tôt et au plus tard, exprimées en
minutes, heures, etc.
Exprimée via la méthode PERT, une étape est représentée par un rond, découpé en 3 zones, précisé
par son numé ro, ainsi que ses dates au plus tôt et au plus tard.
Numéro de l’étape
2
3 5
Date au plus tôt Date au plus tard
La date au plus tôt est le délai minimum, depuis le début du projet, nécessaire pour atteindre
l’étape considérée.
La date au plus tard est la date maximum, depuis le début du projet, à laquelle doit être atteinte
l’étape considérée pour que le délai de l’ensemble du projet ne soit pas modifié.
Réseau
Un réseau est l’ensemble des tâches et des étapes formant l’intégralité de la planification du projet
(on parle aussi de diagramme PERT).
Deux tâches qui se succèdent immédiatement dans le temps sont représentées par deux flèches qui
se suivent, séparées par une étape.
1 A 2 B 3
5 3
NB : Les différentes propriétés temporelles (durée, date, etc.) doivent impérativement être
exprimées suivant la même unité, et la même échelle.
afin de minimiser les délais, ainsi que réduire l’impact des retards lors de l’exécution des différentes
tâches.
Exemple :
1 A 2 B 3 C 4 D 5 E 6
5 3 1 4 3
Afin de finaliser la mise en œuvre de la méthode PERT, un certain nombre d’activités doivent être
menées à bien :
• Définir de manière précise le projet ;
• Définir un responsable de projet auquel on rendra compte et qui prendra les décisions
importantes ;
• Analyser le projet par grands groupes de tâches, puis détailler certaines tâches si besoin est ;
• Définir très précisément les tâches et déterminer leur durée ;
• Rechercher les coûts correspondants, ce qui peut éventuellement remettre en cause certaines
tâches ;
• Mettre en œuvre les tâches selon la chronologie décidée ;
• Effectuer des contrôles périodiques pour vérifier que le système ne dérive pas ; si c’est le
cas, prendre les dispositions nécessaires – quitte à revoir la planification selon la méthode
PERT – afin de minimiser les conséquences.
Exemple :
1
C 2 E 3
1 7
A
0
3 Fin
Début C F
3
1
B
12 4 5 6 0
D F G 7
6 3 3
On commence tout d’abord par calculer les dates au plus tôt. Pour une étape donnée, cette
information détermine à quelle date minimum depuis le début du projet sera atteinte, au plus tôt,
l’étape considérée.
Pour ce faire, on se base sur l’estimation de la durée des tâches. On part de l’étape de début, pour
laquelle la date au plus tôt est initialisée à 0, et on parcourt le réseau en suivant l’agencement des
tâches déterminé auparavant.
Deux méthodes de calcul existent alors selon que l’étape considérée est atteinte par une ou par
plusieurs tâches :
• Une (01) tâche : il n’y a qu’un seul chemin possible pour atteindre l’étape ;
La date au plus tôt vaut la date au plus tôt anté rieure à laquelle on rajoute la durée de la
tâche liant les 2 étapes :
to0 = to1 + durée1
to1 to0
durée1
to1
durée1
to0
durée2
to2
La date au plus tôt de l’étape de fin indique alors le temps minimum nécessaire à l’achèvement du
projet.
On poursuit avec le calcul des dates au plus tard. Pour une étape donnée, cette information
détermine à quelle date maximum, depuis le début du projet, doit être atteinte, au plus tard, l’étape
considérée, afin que le délai de l’ensemble du projet ne soit pas modifié.
Pour ce faire, on se base sur l’estimation de la durée des tâches. On part de l’étape de fin, pour
laquelle la date au plus tard est initialisée à la même valeur que la date au plus tôt déterminée
précédemment, et on parcourt le réseau en suivant l’agencement inverse des tâches.
Là encore, il existe deux méthodes de calcul selon qu’une ou plusieurs tâches partent de l’étape
considérée :
• Une (01) tâche : il n’y a qu’un seul chemin possible pour partir de l’étape ;
La date au plus tard vaut la date au plus tard « précédente » (la postérieure dans
l’agencement des tâches) à laquelle on retranche la durée de la tâche liant les 2 étapes :
ta0 = ta1 – durée1
ta0 ta1
durée1
ta1
durée1
ta0
durée2
ta2
Une fois cette étape terminée, on regroupe les informations de dates au plus tôt et au plus tard en un
seul schéma. Ainsi, si on reprend l’exemple précédent on aura :
1 3
C 2 E
3 16 1 13 17 7 20 24
A
0
3 Fin
Début C F
3 24 24
0 0 1
B
12 4 5 6 7
0
D F G
12 12 6 18 18 3 21 21 3 24 24
Certaines tâches bénéficient d’une latence variable dans leur aboutissement sans pour autant
remettre en cause la date d’achèvement du projet. Cette période de latence est appelée marge.
L’évaluation quantitative de ces marges (appelées aussi battements) permet d’optimiser la gestion
du projet. En effet, l’analyse de ces marges permet d’aménager le déroulement de certaines tâches
selon des critères autres que temporels : coûts, plan de charge de l’entreprise, goulets
d’étranglements 3, …
On appelle "marge" d'une tâche le retard qu'il est possible de tolérer dans la réalisation de celle-ci,
sans que la durée optimale prévue du projet global en soit affectée. Il est possible de calculer trois
types de marges : la marge totale, la marge certaine et la marge libre.
Marge totale
La marge totale d'une tâche indique le retard maximal que l'on peut admettre dans sa réalisation
(sous réserve qu'elle ait commencé à sa date au plus tôt) sans allonger la durée optimale du projet.
Elle se calcule en retirant la durée de la tâche en question à l'écart qu'il peut y avoir entre sa date au
plus tôt de début et sa date au plus tard de fin :
marge totale = (ta2 – to1) – durée
Sauf cas particulier, un retard correspondant à la marge totale d'une tâche se traduit par une
modification des dates au plus tôt des tâches qui lui succèdent et entraîne, généralement, l'apparition
d'un second chemin critique.
Il n'est donc pas possible de cumuler des retards correspondant à leur marge totale sur plusieurs
tâches successives, sans remettre en cause la durée optimale prévue pour le projet.
Marge libre
La marge libre d'une tâche indique le retard que l'on peut admettre dans sa réalisation (sous réserve
qu'elle ait commencé à sa date au plus tôt) sans modifier les dates au plus tôt des tâches suivantes et
sans allonger la durée optimale du projet.
Elle se calcule en retirant la durée de la tâche en question à l'écart qu'il peut y avoir entre ses dates
au plus tôt de début et de fin :
marge libre = (to2 – to1) – durée
Un retard correspondant à la marge libre d'une tâche reste sans conséquence sur les marges des
tâches qui lui succèdent. Il est donc possible de cumuler des retards, s'inscrivant dans leur marge
libre, pour plusieurs tâches successives, sans remettre en cause la durée optimale prévue pour le
projet.
Marge certaine
La marge certaine d'une tâche indique le retard que l'on peut admettre dans sa réalisation (quelle
que soit sa date de début) sans allonger la durée optimale du projet.
Elle se calcule en retirant la durée de la tâche en question à l'écart qu'il peut y avoir entre sa date au
plus tard de début et sa date au plus tôt de fin :
marge centaine = Max [0, (to2 – ta1) – durée]
D'après cette formule, la marge certaine est considérée comme nulle lorsque son calcul donne un
nombre négatif.
Un retard correspondant à la marge certaine d'une tâche reste sans conséquence sur les marges des
tâches qui lui succèdent, même si elle commence à sa date au plus tard. Il est donc possible de
cumuler des retards, s'inscrivant dans leur marge certaine, pour plusieurs tâches successives, même
si elles commencent à leur date au plus tard, sans remettre en cause la durée optimale prévue pour le
projet.
Dans le cadre de notre exemple, on a regroupé les marges calculées dans le tableau suivant :
1
C 2
E 3
3 16 1 13 17 7 20 24
A
0
3 Fin
Début C F
3 24 24
0 0
1
B
12 4 5 6 7 0
D F G
12 12 6 18 18 3 21 21 3 24 24
Les tâches ayant une marge nulle ne bénéficient donc d’aucune latence dans leur exécution leur
permettant de ne pas retarder le projet. L’ensemble de ces tâches permet de déterminer le chemin
critique.
Le chemin critique indique quelles sont les tâches à successivement observer au cours de la mise en
œuvre du projet afin de surveiller les éventuels retards. Le but est de détecter les dérives et d’agir
alors rapidement en conséquence afin de minimiser leur impact sur la durée de l’ensemble du projet.
On parle de « che min » car il part de l’étape initiale et mène à l’étape finale via une suite de
différentes tâches.
Il est dit « critique » car tout retard pris sur l’une des tâches constituant ce chemin aura une
incidence directe sur la date d’achèvement du projet ; celui-ci sera retardé d’autant que la tâche est
elle- même retardée.
Pour savoir quel est le chemin critique et donc aussi quelles tâches observer, il suffit de répertorier
toutes les tâches ayant une marge nulle. La mise en avant de ces tâches détermine d’elle-même le
chemin critique.
1
C 2 E 3
3 16 1 13 17 7 20 24
A
0
3 Fin
Début C F
1 3 24 24
0 0
B
12 4
D 5 F 6 7
0
G
12 12 6 18 18 3 21 21 3 24 24
À partir de résultats obtenus du réseau PERT, plus les hypothèses sur la ressource disponible, on
construit un planning (calendrier) sous forme de diagramme dont l’axe des abscisses représente le
temps et l’axe des ordonnées représente les tâches.
Il se construit simplement en suivant les différents niveaux du tableau d’avancement des tâches ; on
procède niveau par niveau, en traitant chacune des tâches prenant fin au niveau considéré.
1. Les tâches n’ayant pas de tâches antérieures sont des tâches de niveau 0 (n = 0). Ces tâches
constituent l’ensemble des tâches que l’on peut démarrer de suite.
2. Les tâches n’ayant pas de tâches antérieures après suppression des tâches qui se trouvent
déjà dans un niveau (tâches supérieures) sont les tâches de niveau n+1.
Niveau 0
Niveau 1
Niveau 2
Niveau 3
Diagramme de Gantt
Tâche(s) Tâche(s)
Tâches Durée Niveau
antérieure(s) postérieure(s)
A _ C 3 Niveau 0
B _ C, D 12 Niveau 0
C A, B E, F 1 Niveau 1
D B F 6 Niveau 1
E C _ 7 Niveau 2
F D G 3 Niveau 2
G F _ 3 Niveau 3
1 2
C E 3
3 16 1 13 17 7 20 24
A
0
3 Fin
Début C F
3 24 24
0 0 1
B
12 4 5 6 7 0
D F G
12 12 6 18 18 3 21 21 3 24 24
Selon que l’on utilise les dates au plus tôt ou au plus tard on peut avoir le diagramme de Gantt au
plus tôt et le diagramme de Gantt au plus tard.
On remarque que le choix des dates au plus tôt ou au plus tard n’influence pas la durée du projet sur
le diagramme de Gantt mais néanmoins permet de mettre en exergue les marges (totale et libre)
dans la réalisation de la tâche liée au projet.
Unité utilisée
Remarques
Taille du projet
Ordre de grandeur
Durée
Exemple
Principe
Etape ratio
Etude préalable 10 % de la charge totale
Etude détaillée 20 à 30 % de la charge totale
Etude technique 5 à 15 % de la charge "réalisation"
Réalisation 2 fois la charge "étude détaillé"
Mise en œuvre 30 à 40 % de la charge "réalisation"
Ce modèle cherche à limiter les erreurs de budget et les retards de livraison, qui sont monnaie
courante dans l’industrie de développement logiciel.
COCOMO à l'avantage d'être ouvert. Les données de calibrage, les formules et tous les détails des
définitions sont disponibles. La participation à son développement est encouragée.
Ainsi :
• Il est facile à un informaticien d'estimé le nombre de lignes source.
• La complexité d'écriture d'un programme est la même quelque soit le langage de
programmation.
• Il propose une méthode basée sur la corrélation entre la taille d'un projet et sa charge.
Formule
Charge = a.(Kisl)b
Délai = c.(Charge)d
Avec
• Kisl = kilo instruction source livrée (lignes de
programme source testées)
• Les paramètres a, b, c et d qui dépendent de la catégorie
du projet.
Classification
Dans l’absolu, l’effort de test (validation, intégration et unitaire) d’un logiciel peut être aussi
important que l’on veut. La combinatoire des données d’entrée, des modes d’utilisation, des modes
de fonctionnement, des paramètres d’exploitation, la variété des aspects vérifiables (conformités
aux spécifications, aux manuels d’utilisation et d’exploitation, aux exigences de robustesse, de
performance, d’ergonomie, comportement nominal, en cas de défaillance, etc.) sont telles qu’une
infinité de tests peut être menée sans qu’on soit certain de la conformité totale aux exigences.
Difficulté rencontrée : il faut arriver à gérer une suite de test la plus complète possible à un coup
minimal. Un test ne peut pas dire « il n'y a pas d'erreur » car il teste le logiciel de façon poussive (à
l’extrême) plus que dans l'utilisation réelle.
Spécification Spécification du
programme test
Scénario de test
Résultat attendu
Chargement du prog.
et de son
Exécution du
environnement test
Comparaison de
résultats
Induction
Archivage du test Analyse de
+ résultats résultats
Déduction
Gestion de
configuration
Inconsistance
Prouver l’hypothèse (Est-elle
pertinente ?)
Corriger l’erre ur
Corriger l’erre ur
Vocabulaire :
• Espace générateur : Il s’agit de l’ensemble des tests générés pour assurer la complétude du
logiciel
• Espace de cas possibles : Il s’agit de l’ensemble des erreurs possibles pouvant être
rencontrées sur le logiciel
Propriétés recherchées :
Si l’espace générateur est couvert alors la probabilité d'une défaillance dans l'espace de cas
possibles est très faible (inférieure à une limite fixée à l'avance). La difficulté est de faire que
l'espace générateur soit consistant et complet.
Instrument de Composante
visualisation
Données Code
• If : • Until :
début
1
2
4
6
5
8 7
9
10
11
2
R1
R4
3
6 4
R3
8 7 R2 5
9
11
10
Pour vérifier, on regarde les chemins minimaux (un test par chemin pour tester toutes les
possibilités du programme) :
1. 1.11
2. 1.2.3.4.5.10.1.11
3. 1.2.3.6.7.9.10.1.11
4. 1.2.3.6.8.9.10.1.11
Principe :
Exemple :
Soit P un programme. Supposons que les données de P soient des nombre de cinq chiffres. Alors les
classes de nombre à cinq chiffres s'obtiennent de la manière suivante:
1. X < 10 000 2. 10000 ≤ X ≤ 99 999 3. X ≥ 100 000
Les cas de test aux limites de classes sont donc 00 000 et 09 999 pour la première classe, 10 000 et
99 999 pour la deuxième classe et 100 000 pour la troisième.
Exemple
Pour un logiciel de saisie, une faute serait de ne pas vérifier la mauvaise saisie. Un défaut serait que
le logiciel plante suite à la mauvaise saisie.
Entrées possibles
Ie
Il est clair que toute faute ne
provoque pas nécessairement un
défaut, c’est possible si et seulement
PROGRAMME
si la donnée est prise dans la partie
fautive.
Oe
Sorties possibles
Exemple
Système non stop, la probabilité de panne = 0.001 c'est-à-dire sur 1000 requêtes, on a une
probabilité d’un (01) défaut.
Exemple
Système d’exploitation ou transactionnel, le taux de panne = 0.02 c'est-à-dire sur 100 unités de
temps, on a 2 défauts.
Exemple
Réseau (essentiellement échange de gros fichiers), le temps moyen entre deux pannes =500 c'est-à-
dire le temps moyen entre deux défauts est de 500 unité de temps.
IV.4. Disponibilité
C’est la probabilité que le système soit opérationnel. Elle prend en compte le temps de réparation
éventuel.
Exemple
Disponibilité = 0,998 c'est-à-dire sur 1000 unités de temps, le système est disponible et utilisable
pendant 998 unités de temps.
Unité de temps
V. Classification de défaut
CLASSE DE PANNE DESCRIPTION
Transitoire Ne se produit qu’avec certaines entrées.
Permanente Se produit avec toutes les entrées.
Réparable Ne nécessite pas d’intervention humaine.
Irréparable Nécessite une intervention de l’opérateur.
Non corruptrice Ne détruit, ni corrompt les données.
Corruptrice Corrompt les données. (INACCEPTABLE !!!)
Question : Classer les pannes et proposer les métriques qui vont avec.
Solution
Exemple
• Changement d’OS
• Changement de SGBD…
Exemple
• Mise à l’euro
• Passage de données par fichiers…
Au niveau de l’utilisateur
Validation de
la correction
non régressive
Distribution
correction
fin
Elle est exprimée en Mois/Homme (M/H). Elle correspond à l’effort annuel de maintenance
(EAM).
Il est basé sur le pourcentage de ligne de code source du logiciel à corriger dans une année.
Elle est exprimée en Mois/Homme (M/H). Elle est obtenue à l’aide la méthode COCOMO lors de
l’estimation des charges liées au projet.
Le bénéfice sur le coût total de maintenance d’un système est proportionnel au pourcentage
d’investissement sur le développement.
Solution
Remarque
Toute modification du code doit être reflétée dans les documents de maintenance, le manuel de
l’utilisateur et le document de conception.
VII. Ré-ingénierie
Dans le domaine du génie logiciel, cela signifie processus qui ne consiste pas seulement à
redécouvrir la conception des logiciels existants mais aussi à utiliser cette information pour
reconstruire le système existant dans le but d'améliorer toutes ses qualités.
Cela dépend du coût d’un nouveau produit (analyse) par rapport à celui de la maintenance. Si ce
dernier est trop élevé, il est alors temps d'arrêter sa maintenance.
Non, il y a des logiciels qui n’auront pas à évoluer, les besoins n’évoluant pas. D’autres au contraire
auront besoin d'évoluer rapidement.
Cela dépend de ce que l'on veut réaliser en fonction de l'importance du logiciel pour l'entreprise.
Quoi qu’il en soit, a priori la deuxième solution est la moins bonne (modification après
modification).
II. Normalisation
La normalisation répond au souci d’interchangeabilité (ou interopérabilité). Dans le domaine du
logiciel, on distingue trois niveaux :
• 1er niveau : caractéristiques,
• 2ième niveau : modèle (Merise),
• 3ième niveau : la qualité (ISO 9001).
Classe ISO
En fait, la normalisation définit les principes de base pour mettre en œuvre le contrôle qualité.
La certification et valable trois ans en France (délivré par l’AFNOR). Cet organisme définit la
qualité ainsi : « c’est l'ensemble des propriétés et caractéristiques d'un produit ou d'un service qui
lui confère l'aptitude à satisfaire des besoins exprimés ou implicite ».