Cours Génie Logiciel 2016

49
Mohamed ERRADI ENS de Martil MAROC

Transcript of Cours Génie Logiciel 2016

Page 1: Cours Génie Logiciel 2016

Mohamed ERRADIENS de Martil MAROC

Page 2: Cours Génie Logiciel 2016

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?

Page 3: Cours Génie Logiciel 2016

Explosion de CHALLENGER

Perte de Mars sattellite , 1999

Accident de train au USA

Panne du système de réservation SNCF

Page 4: Cours Génie Logiciel 2016

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

Page 5: Cours Génie Logiciel 2016

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

Page 6: Cours Génie Logiciel 2016

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 laproduction 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èmecomplexe, concrétisée par un ensemble de documents de conception, deprogrammes et de jeux de tests

Définitions et Objectifs

Page 7: Cours Génie Logiciel 2016

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.

Page 8: Cours Génie Logiciel 2016

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

Page 9: Cours Génie Logiciel 2016

CYCLE DE VIE D’UN LOGICIELDé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.

Page 10: Cours Génie Logiciel 2016

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 logicielSi non: projet abondonné.

Doc: faisabilité

Page 11: Cours Génie Logiciel 2016

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

Page 12: Cours Génie Logiciel 2016

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

Page 13: Cours Génie Logiciel 2016

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

Page 14: Cours Génie Logiciel 2016

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

Page 15: Cours Génie Logiciel 2016

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..)

Page 16: Cours Génie Logiciel 2016

CYCLE DE VIE D’UN LOGICIEL

Etude de faisabilité

Analyse des besoins

Spécifications

Conception

Implémentation

Validation

Page 17: Cours Génie Logiciel 2016

Analyse des besoins

Conception

Codage

Tests

Validation

Maintenance

Spécifications

Modèle DE développement D’UN LOGICIEL

Modèle en cascade

Page 18: Cours Génie Logiciel 2016

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

Page 19: Cours Génie Logiciel 2016

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

Page 20: Cours Génie Logiciel 2016

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.

Page 21: Cours Génie Logiciel 2016

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

Page 22: Cours Génie Logiciel 2016

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.

Page 23: Cours Génie Logiciel 2016

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.

Page 24: Cours Génie Logiciel 2016

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.

Page 25: Cours Génie Logiciel 2016

Modèle DE développement D’UN LOGICIEL

Modèle en Spirale

des alternativesdes contraintes

/validation

Page 26: Cours Génie Logiciel 2016

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…

Page 27: Cours Génie Logiciel 2016

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

Page 28: Cours Génie Logiciel 2016

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

Page 29: Cours Génie Logiciel 2016

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.

Page 30: Cours Génie Logiciel 2016

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

Page 31: Cours Génie Logiciel 2016

Modèle DE développement D’UN LOGICIEL

Modèle par prototypage

Spécification schématique

Evaluationdu prototype

Acceptationdu logiciel

Utilisationdu logiciel

Livraisondu logiciel

Logicieladéquat

Réalisation du prototype

ouinon

Page 32: Cours Génie Logiciel 2016

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.

Page 33: Cours Génie Logiciel 2016

Modèle DE développement D’UN LOGICIEL

Modèle itératif

Expression des besoins

Spécifications Validation

Développement

Evaluation

Déploiement

Page 34: Cours Génie Logiciel 2016

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.

Page 35: Cours Génie Logiciel 2016

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.

Page 36: Cours Génie Logiciel 2016

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.

Page 37: Cours Génie Logiciel 2016

Problématique générale

Page 38: Cours Génie Logiciel 2016

Les méthodesLes outilsLes modèles

dirigées par les données

• Jackson (1975)

Fonctionnelles

• Analyse structurée (SA-SD)

• SADT

Systémique

• MERISE

Orientées objets

• OMT

• UML

informels (formatés)

• Dictionnaire de données

• Table de décisions

• Table états-transitions

graphiques ou semi formels

• DFD

• Diagramme de structure

• Diagramme Entité – relation

• États d’états transitions

• Pétri

Iconiques

Analogiques

Analytiques

Conceptuels

• Structurels

• Comportementaux

Typologie des modèles, outils et des méthodes d’analyse

Page 39: Cours Génie Logiciel 2016

L’analyse structurée

(SA: structuredanalysis) est une méthode descendante par raffinement successifs des traitements ou processus.

Page 40: Cours Génie Logiciel 2016
Page 41: Cours Génie Logiciel 2016

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

Page 42: Cours Génie Logiciel 2016

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)

Page 43: Cours Génie Logiciel 2016

gestion

stockage

Clientgestion

venteCommander

régler

facturer gestion

comptabilité

Envoyer copiefacture

Envoyercopie BL

Page 44: Cours Génie Logiciel 2016

gestion

stockage

Client

gestion

commandes

régler

facturergestion

comptabilité

Envoyer copie facture

Envoyer copie BL

gestion

facturation

envoyerDouble

BL

Envoyer Double BC

Commander

Page 45: Cours Génie Logiciel 2016

Représenter le diagramme de flots de données pour calculer la formule mathématique suivante: (x+y)*(w+z)

Ajouter

Ajouter

MultiplierAfficher la

Réponse

y

x

w

z

Somme 1

Somme 2

Page 46: Cours Génie Logiciel 2016

Un abonné d’une médiathèque fait unedemande d’emprunt d’un film spécifique. Legestionnaire vérifie à la fois l’historique del’emprunt de son client (s’il est à jour) et ladisponibilité du film demandé. L’enregistrementde l’emprunt ne peut avoir lieu que si les deuxparamètres sont validés.

Une fois l’enregistrement validé, le stock le compte client sont mis à jour.

Du langage naturel au langage semi formel

Page 47: Cours Génie Logiciel 2016

Du langage naturel au langage semi formel

client

Stock film

Compte client

validation K7demande Enregistrer emprunt

Vérifier solvabilité

Page 48: Cours Génie Logiciel 2016

Du langage semi formel au langage naturel

client

Stock

Compte client

validation factureCommande Calculer facture

Vérifier solvabilité

Tarifs

Page 49: Cours Génie Logiciel 2016

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)