Comment le client l’a
souhaité
Comment le chef de
projet l’a compris
Comment l’analyste l’a
compris
Comment le
programmeur l’a écrit
Comment le business
consultant l’a décrit
Ce dont le client avait
réellement besoin.
Ce dont le support
technique est effectué
Comment le client a été
facturé
Ce qui a été installé chez
le client
Comment le projet a été
documenté
Observer l’image et le titre:
1- Problématique des logiciels?
2 – Le génie logiciel: Objectifs?
Prendre du recul sur des expériences vécues (ou à venir) en:
stages,
mini-projets,
travaux pratiques.
Formaliser votre expérience du développement logiciel.
OBJECTIFS
Art et science de concevoir et de construire, avec économie et élégance
des applications, et d’autres systèmes informatiques, qui soient corrects,
robustes, réutilisables, sûrs, efficaces, facile à maintenir et à utiliser.
Le génie logiciel applique les techniques d’ingénierie à la définition, la
conception, la réalisation et l’évolution de systèmes logiciels .
Le génie logiciel comprend des méthodes et techniques et des outils
Définitions et Objectifs
Domaine des ‘sciences de l’ingénieur’ dont la finalité est la conception, la
fabrication et la maintenance de systèmes logiciels complexes, sûrs et de
qualité (‘Software Engineering’ en anglais). Aujourd’hui les économies de
tous les pays développés sont dépendantes des systèmes logiciels.
Le GL se définit souvent par opposition à la ‘programmation’, c’est à dire la
production d’un programme par un individu unique, considérée comme
‘facile’. Dans le cas du GL il s’agit de la fabrication collective d’un système
complexe, concrétisée par un ensemble de documents de conception, de
programmes et de jeux de tests
Définitions et Objectifs
Le GL se préoccupe d’assurer que les 4 critères suivants soient satisfaits.
Le système qui est fabriqué répond aux besoins des utilisateurs (correction fonctionnelle).
La qualité correspond au contrat de service initial:
la validité
la fiabilité
la robustesse
l’extensibilité
la réutilisabilité :
la compatibilité :
l’efficacité
la portabilité
la traçabilité :
la vérifiabilité
l’intégrité
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.
Rigueur ( fermeté; détermination; assurance …).
Séparation des problèmes (stratégie «diviser pour régner »).
Modularité: composition en sous systèmes plus simples (primitives)
Abstraction: ne considérer que les aspects jugés importants.
Anticipation du changement: pour prévoir, faciliter et gérer des évolutions inévitables.
Construction incrémentale: chaque résultat est construit en étendant le précédent.
Générosité: résolution d’un problème général au lieu de la résolution d’un problème
spécifique.
principes
CYCLE DE VIE D’UN LOGICIEL
Définitions
Ensemble des étapes de la réalisation, de l’énoncé des besoins à la
maintenance ou au retrait du logiciel.
Le cycle de vie permet de détecter les erreurs au plus tôt et ainsi de
maîtriser la qualité du logiciel, les détails de sa réalisation et les coûts
associés.
C’est la période de temps s’étalant du début à la fin du processus du
logiciel.
CYCLE DE VIE D’UN LOGICIEL
Étapes
• Pourquoi développer le logiciel?
• Y a-t-il de meilleurs alternatives?
• Comment procéder pour faire ce développement?
• Y a-t-il un marché pour ce logiciel?
• Quels moyens faut-il mettre en œuvre? A t-on le budget, le personnel, le matériel
nécessaires?
Activité Faire une étude préalable
Description Etudier la faisabilité du projet, ses contraintes techniques (coût, temps, qualité) et les
alternatives possibles
Entrées Problème à résoudre, objectifs à atteindre.
Sorties Si oui: décision de réaliser le logiciel
Si non: projet abondonné.
Doc: faisabilité
CYCLE DE VIE D’UN LOGICIEL
Étapes
• Que doit faire le logiciel?
• Les spécifications fonctionnelles? Les spécifications non fonctionnelles?
• Performance requise?
• Comportement en cas d’erreur?
• Interfaces avec l’utilisateur?
• Contraintes de réalisation?
• Environnement?
Activité Spécifier
Description Décrire ce que doit faire le logiciel. Décrire comment vérifier que le logiciel fait bien ce sui est
exigé.
Entrées Client qui a une idée de ce qu’il veut. Exigences, désir, besoins… concernant le système
permettant de résoudre le problème.
Sorties Cahier des charges du logiciel. Des procédures de validation.
Doc: cahier des charges
CYCLE DE VIE D’UN LOGICIEL
Étapes
• Conception générale ou globale ou préliminaire ou architecturale?
• Description de la solution retenue; description de l’architecture de la solution: les
entités, les interfaces des entités et interaction entre entités
• Conception détaillée
• Décomposition des entités en entités plus élémentaires
• Interface; algorithmes utilisés, traitements des erreurs,; performance….
Activité Concevoir
Description Organiser le logiciel afin qu’il puisse satisfaire les exigences de la spécification et faire les
principaux choix techniques pertinentes.
Entrées Une spécification
Sorties Une description des décisions de conception. Des procédures de tests qui permettent de
vérifier que les décisions de conception sont correctement implémentées en code source.
Doc: conception générale
Doc: conception détaillée
CYCLE DE VIE D’UN LOGICIEL
Étapes
• Tests unitaires?
• Assemblage
• Tests d’intégration?
Activité Intégrer
Description Assembler le code source du logiciel et dérouler les tests d’intégration
Entrées Conception, code source, tests (d’intégration)
Sorties Rapport de tests d’intégration
CYCLE DE VIE D’UN LOGICIEL
Étapes
• Tests unitaires?
• Assemblage
• Tests d’intégration?
• Installation dans son environnement d’exploitation
Activité Validder
Description Construire le logiciel complet exécutable. Dérouler les tests de validation sur le logiciel
complet exécutable.
Entrées Le logiciel complet exécutable à valider. Tests de validation
Sorties Rapport de tests de validation
CYCLE DE VIE D’UN LOGICIEL
Étapes
• Maintenance corrective:
• Corriger les erreurs: défaut d’utilité; d’utilisabilité; de fiabilité
• Identifier la défaillance, le fonctionnement
• Localiser la partie du code responsable
• Corriger et estimer l’impact d’une modification
• Maintenance adaptative: ajuster le logiciel pour qu’il continue à remplir son rôle compte
tenu de l’évolution des environnements d’exécution…
• Maintenance perfective ou d’extension:
• Accroitre / améliorer les possibilités du logiciel (services; interface, performance..)
CYCLE DE VIE D’UN LOGICIEL
Etude de faisabilité
Analyse des besoins
Spécifications
Conception
Implémentation
Validation
Modèle DE développement D’UN LOGICIEL
Modèle en cascade
• Description:
Linéaire ou séquentiel
Découpage en phase successives dans le temps
A chaque phase correspond une activité précise produisant des livrables
On ne passe à l’étape suivante que si les résultats de l’étape précédente
sont jugés satisfaisants
Les entrées de chaque étape sont les sorties de l’étape qui lui précède
Chaque phase ne peut être remise en cause que par l’étape qui précède
La phase de spécification est critique
Modèle DE développement D’UN LOGICIEL
Modèle en cascade
• Avantages:
Simple
Logique
Bien adapté pour des petits systèmes
Contrôle facile
Facilité de planification des étapes et délais
Accent sur la documentation et la structure
Idéal pour les petits projets logiciels stables
Modèle DE développement D’UN LOGICIEL
Modèle en cascade
• Inconvénients:
Mal adapté à des systèmes complexes (processus de développement
rarement séquentiel)
Les tests s’appliquent à l’application globale (pas de validation de
besoins)
Difficultés de définir les besoins dès le début du projet.
Délais assez long pour voir quelques choses.
Modèle DE développement D’UN LOGICIEL
Modèle en V
Expression des besoins
Spécifications
Conception Générale
Conception détaillée
Implémentation
Tests unitaires
Tests Intégration et tests d’intégration
Tests de validation
Installation & tests système
Modèle DE développement D’UN LOGICIEL
Modèle en V
• Description:
La première branche correspond à un modèle en cascade
La seconde branche correspond à tests effectifs
Chaque étape est accompagnée d’un test
Enchainement successive des phases
Relations logiques entre les phases plus éloignées
Le début du processus conditionne ses dernières étapes
L’intégration est réalisée jusqu’à l’obtention du système final.
Modèle DE développement D’UN LOGICIEL
Modèle en V
• Avantages:
Stricte structure en V permet d’espérer un livrable final parfait
Facile de prévoir les tests à réaliser
Bien adapté au partage des tâches entre clients et prestataires, et
définissant parfaitement les rôles du partenariat,
le cycle recommence en proposant un produit de plus en plus complet.
Largement utilisé en informatique
Idéal quand les besoins sont bien connus, quand l’analyse et la
conception sont claires.
Modèle DE développement D’UN LOGICIEL
Modèle en V
• Inconvénients:
N’envisage pas que les spécifications initiales puissent être modifiées après
leurs validations.
Difficile de l’appliquer à des projets complexes ou trop techniques ou à des
projets qui risquent d’évoluer.
Modèle DE développement D’UN LOGICIEL
Modèle en Spirale
des alternatives
des contraintes
/validation
Modèle DE développement D’UN LOGICIEL
Modèle en spirale
• Description:
Un cycle de la spirale commence par l’élaboration d’objectifs tels que la performance, la
fonctionnalité… on énumère ensuite les différentes manières de parvenir à ces objectifs
ainsi que les contraintes.
On évalue ensuite chaque alternative en fonction de l’objectif
L’étape suivante consiste à évaluer les risques pour chaque activité, comme l’analyse
détaillée, le prototypage, la simulation etc…
Modèle DE développement D’UN LOGICIEL
Modèle en spirale
• Description:
Après avoir évalué le risque, on choisit un modèle de développement pour le système.
• Si les risques concernent l’interface utilisateur modèle prototypage évolutif
• Si les risques concernent l’intégration des sous systèmes modèle en cascade
La situation est ensuite réévaluée pour déterminer si un développement supplémentaire
est nécessaire
Le modèle de la spirale englobe tous les autres modèles
Modèle DE développement D’UN LOGICIEL
Modèle en spirale
• Description:
Chaque spire confirme et affine les spires précédentes en mettant des activités de même
nature successivement.
L’analyse ou la conception ne sont plus effectuées dans une seul phase ou étape mais sont
conduites en tant qu’activités qui se déroulent sur de multiples phases.
A chaque étape, après avoir défini les objectifs et les alternatives, celles-ci sont évaluées
par différentes techniques (prototypage, simulation,..;)
Le nombre de cycles est variable selon que le développement est classique ou
incrémental
Modèle DE développement D’UN LOGICIEL
Modèle en Spirale
• Avantages:
Ce modèle met l’accent sur l’analyse des risques (exigences
technologiques, réutilisation des composants, calendrier, budgets
irréalistes, défaillance du personnel…)
Modèle souple et adaptatif
Le prototype est évalué par le client
Estimation des coûts faciles (grâce à la construction des prototypes
Permet de développer l’expertise du client sur un nouveau système
Utilisé pour des projets dont les enjeux (risques) sont importants.
Modèle DE développement D’UN LOGICIEL
Modèle en Spirale
• Inconvénients:
Fonctionne le mieux uniquement pour les grands projets
Besoins de compétences ressources
Difficile de travailler sur un protocole pré définie
Evaluation des risques génère une augmentation dans les coûts
Modèle DE développement D’UN LOGICIEL
Modèle par prototypage
Spécification
schématique
Evaluation
du prototype
Acceptation
du logiciel
Utilisation
du logiciel
Livraison
du logiciel
Logiciel
adéquat
Réalisation
du prototype
ouinon
Modèle DE développement D’UN LOGICIEL
Modèle par prototypage
• Description:
Il s’agit d’écrire une première spécification et de réaliser un sous-ensemble du produit
logiciel final,
Cet ensemble est ensuite raffiné incrémentalement et évalué jusqu’à obtenir le produit
final.
• Deux types de prototypage:
• Jetable: squelette du logiciel qui n’est crée que dans un but et dans une phase
particulière de développement
• Evolutif: conservé tout au long de développement, Il est amélioré et complété pour
obtenir le logiciel final.
Modèle DE développement D’UN LOGICIEL
Modèle itératif
Expression des besoins
Spécifications Validation
Développement
Evaluation
Déploiement
Modèle DE développement D’UN LOGICIEL
Modèle itératif
• Description:
Tout commence par l’expression de besoin : le client explique ce qu’il veut, tout en sachant
que ces besoins peuvent être modifiés par la suite du processus. Ensuite, on se lance dans
le processus itératif en lui-même avec la rédaction des spécifications qui est suivie par
le développement, puis la validation (c’est à dire les tests) et enfin une évaluation du
travail qui servira d’information de départ pour le cycle suivant en dressant le bilan des
difficultés rencontrées et des fonctionnalités abandonnées pendant le cycle. A l’issue de la
validation on passe aussi au déploiement : les livrables (il peut s’agir d »une version du site
ou logiciel, ou même d’une documentation) qui ont été validés sont déployés, c’est à dire mis
à disposition.
Modèle DE développement D’UN LOGICIEL
Modèle itératif
• Avantages:
Le plus modèle le plus souple
chaque itération permet de s’adapter à ce qui a été appris dans les
itérations précédentes et le projet fini peut varier du besoin qui a été
exprimé à l’origine.
Comme dans le cycle en spirale, la mise à disposition de livrables à
chaque cycle permet un apprentissage de l’utilisateur final en
douceur.
Modèle DE développement D’UN LOGICIEL
Modèle itératif
• Inconvénients:
La confiance qui amène bien souvent à négliger les test d’intégration.
On peut livrer une nouvelle fonctionnalité sans se rendre compte qu’on a
modifié une chose qui fonctionnait dans les cycles précédents.
1 2
3 4
1.1 1.2
1.3
3.1 3.3
3.2
4.1 4.2
4.3 4.4
Diagramme de contexte
Niveau 1
Niveau 2
Diagrammes de flots
de données DFD
Décrit les processus mis en œuvre dans le cadre
du développement d’un logiciel.
Il comprend généralement:
– Les tâches (ou processus ou activité)
– Les artefacts (ou répertoire des données)
fichiers, données, … ou
– Les flux de données (liens)
Représenter le diagramme de flots de données pour calculer
la formule mathématique suivante: (x+y)*(w+z)
Ajouter
Ajouter
Multiplier
Afficher la
Réponse
y
x
w
z
Somme 1
Somme 2
Un abonné d’une médiathèque fait une
demande d’emprunt d’un film spécifique. Le
gestionnaire vérifie à la fois l’historique de
l’emprunt de son client (s’il est à jour) et la
disponibilité du film demandé. L’enregistrement
de l’emprunt ne peut avoir lieu que si les deux
paramètres sont validés.
Une fois l’enregistrement validé, le stock le
compte client sont mis à jour.
Du langage naturel au langage semi formel
Du langage naturel au langage semi formel
client
Stock film
Compte
client
validation K7demande Enregistrer
emprunt
Vérifier
solvabilité
Du langage semi formel au langage naturel
client
Stock
Compte
client
validation factureCommande Calculer
facture
Vérifier
solvabilité
Tarifs
Estimation
Types de projets
L’effort (mois_hommes)
E= a * KDSI b
Temps de développement (mois)
TDEV= c * KDSI d
Organique
< 50 KDSI
E= 2,4 * KDSI 1,05 TDEV= 2,5 * KDSI 0,38
Semi-détaché
< 300 KDSI
E= 3,0 * KDSI 1,12 TDEV= 2,5 * KDSI 0,35
Imbriqué
> 300 KDSI
E= 3,6 * KDSI 1,20 TDEV= 2,5 * KDSI 0,32
Taille Equipe = E / TDEV (nombre de personnes)