Cours génie logiciel

43
Introduction Génie Logiciel Mr Alaya Raddaoui AU. 2012/2013 1 Alaya Raddaoui Faculté des sciences de Gafsa

Transcript of Cours génie logiciel

Page 1: Cours génie logiciel

Introduction Génie Logiciel

Mr Alaya Raddaoui

AU. 2012/20131 Alaya Raddaoui

Faculté des sciences de Gafsa

Page 2: Cours génie logiciel

Méthodes d’analyseet de conception

2Alaya Raddaoui

Page 3: Cours génie logiciel

La modélisation en général

Modèles :

Définition :

Un modèle est une représentation abstraite de la réalité

qui exclut certains détails du monde réel.

Utilité :

Reflète ce que le concepteur croit important pour la

compréhension et la prédiction du phénomène modélisé,

les limites du phénomène modélisé dépendent des

objectifs du modèle.

3 Alaya Raddaoui

Page 4: Cours génie logiciel

Modèles :

Utilité (suite) :

Permet de réduire la complexité d’un phénomène en

éliminant les détails qui n’influencent pas son

comportement de manière significative.

Modélisation :

Définition :

Processus par lequel on arrive à élaborer un modèle

décrivant un système réel (ou un phénomène du monde

réel).

La modélisation en général

4Alaya Raddaoui

Page 5: Cours génie logiciel

Types de Modélisation :

Modélisation à priori :

Modéliser un système avant sa réalisation (le système

n’existe pas encore).

Objectifs :

Comprendre le fonctionnement du future système.

Mesurer et Maîtriser sa complexité.

Assurer sa cohérence.

Pouvoir communiquer au sein de l’équipe de réalisation.

La modélisation en général

5 Alaya Raddaoui

Page 6: Cours génie logiciel

Types de Modélisation :

Modélisation à posteriori :

Modéliser un système après sa réalisation (le

système existe déjà).

Objectifs :

Corriger les erreurs dans l’ancien système.

Faire évoluer l’ancien système.

La modélisation en général

6 Alaya Raddaoui

Page 7: Cours génie logiciel

Approches de modélisation pour le logiciel

Approche fonctionnelle :

Approche traditionnelle basée sur l’utilisation des

procédures et des fonctions.

Les grands programmes sont décomposés en sous-

programmes.

Approche orientée objets :

On identifie les éléments du système et on en fait des

objets.

On cherche à faire collaborer ces objets pour qu’ils

accomplissent la tâche voulue.7 Alaya Raddaoui

Page 8: Cours génie logiciel

Approches de modélisation pour le logiciel

Modélisation fonctionnelle :

Approche descendante :

La modélisation du système se base sur les fonctions, et

non pas sur les objets.

On commence par déterminer la fonction globale du

système.

Puis, on décompose la fonction globale du système en

plusieurs sous-fonctions jusqu’à obtenir des fonctions

élémentaires simples à programmer.

Il s’agit d’une démarche descendante.8 Alaya Raddaoui

Page 9: Cours génie logiciel

Approches de modélisation pour le logiciel

Démarche :• Recenser les fonctionnalités à implanter

Résultat : •Cahier des charges fonctionnel

On distingue: •Fonctions de service : besoins des utilisateurs•Fonctions techniques : requises pour implanter les fonctions de service

Pour chaque fonction, préciser :• Son importance• Des critères de qualité

Application : (language de modélisation) SADT

Analyse fonctionnelle

9 Alaya Raddaoui

Page 10: Cours génie logiciel

Approches de modélisation pour le logiciel

Présentation de S.A.D.T. (Structured Analysis and Design Technique)

Représentation sous la forme d’actigrammes :Contrôle

Décomposition de la « boîte » Activité :

10 Alaya Raddaoui

Page 11: Cours génie logiciel

Modélisation fonctionnelle :

Avantages :

Adéquate pour les petits logiciels et les système peu

complexes.

Démarche ordonnée et organisée.

Inconvénients :

Pose des problèmes de structuration de données, car elle est

orientée fonctions.

Produit des logiciels non réutilisables.

Produit des logiciels très difficile à les faire évoluer ou corriger.

Approches de modélisation pour le logiciel

11 Alaya Raddaoui

Page 12: Cours génie logiciel

Approches de modélisation pour le logiciel

Modélisation orientée objets :

Approche fondée sur les objets :

Le modèle à produire est décrit en terme d’objets et

non pas en terme de fonctions.

On peut partir des objets du domaine (briques de

base) et remonter vers le système global.

On défini également les interactions et les

collaborations entre les objets du système.

Il s’agit essentiellement d’une approche ascendante.

12 Alaya Raddaoui

Page 13: Cours génie logiciel

Démarche

•Analyser les objets intervenant dans le système

Résultat

•Diagramme de classes (objets)

• Ensemble des classes (objets) nécessaires

• Liens entre les classes (objets)

•Méthodes et éventuellement attributs des classes

Applications (languages de modélisation)

•OMT, BOOCH, OOSE, UML

Approches de modélisation pour le logiciel

13 Alaya Raddaoui

Page 14: Cours génie logiciel

Modélisation orientée objets :

Avantages :

Démarche naturelle et logique.

Raisonnement par abstraction sur les objets du domaine.

Inconvénients :

Parfois moins intuitive que l’approche fonctionnelle.

Rien dans les concepts de base objets ne précise

comment modéliser la structure objet d’un système de

manière pertinente.

Approches de modélisation pour le logiciel

14 Alaya Raddaoui

Page 15: Cours génie logiciel

Objectifs :

Définir la sémantique des concepts.

Définir une notation pour la représentation des concepts.

Définir des règles d’utilisation des concepts et de

construction.

Langages de modélisation :

Adaptés aux système procéduraux (MERISE, …).

Adaptés aux systèmes temps réel (ROOM, SADT, …).

Langages de modélisation

15 Alaya Raddaoui

Page 16: Cours génie logiciel

Langages de modélisation

Langages de modélisation (suite):

Adaptés aux systèmes à objets (OMT, Booch, UML, …).

Ateliers de génie logiciel :

Présenter des outils pour la modélisation.

Le rôle de ces outils est primordial pour l’utilisabilité en

pratique des langages ( exemple Rational Rose )

16 Alaya Raddaoui

Page 17: Cours génie logiciel

17

Les différents types delangages de

programmation

Alaya Raddaoui

Page 18: Cours génie logiciel

18

Langages impératifs

•programme = suite d’instructions (éventuellement parallèles)

• exemples : C, C++, ADA, PASCAL, BASIC, etc.

Langages fonctionnels

• programme = composition de fonctions

• exemples : LISP, SISP, CAML, SML

Langages logiques

• programme = ensemble de faits et de règles d’inférence

• exemples : PROLOG, Mercury

Taxonomie de base

Alaya Raddaoui

Page 19: Cours génie logiciel

19

Niveaux de langages

Langage machine / Assembleur

Langage « intermédiaires »

• exemple : C

• structure de l’implantation doit encore être connue

Langage « évolué »

•exemple : ADA, Eiffel, Perl

•structure interne complètement masquée

Langage de quatrième génération (L4G)

Alaya Raddaoui

Page 20: Cours génie logiciel

20

Classification selon le code exécuté Langage interprété (ex. Perl)

• code exécuté = le source du programme• chaque instruction est d’abord traduite puis exécutée• exécution lente, mais mise au point aisée

Langage compilé (ex. C)•code exécuté = une version en langage machine du programme• le source est traduit une fois pour toute• exécution rapide, mais recompilation nécessaire à chaque modification

Langage semi-interprété (ex. Java)

•code exécuté = traduction en un pseudo-assembleur du sourceAlaya Raddaoui

Page 21: Cours génie logiciel

21

Les langages orientés objet

Idée de base

•Toute donnée est une structure à laquelle sont rattachées

des fonctions appelées méthodes

• Programme = ensemble de données reliées entre elles

Langages concernés : tous

•Perl (impératif interprété)

•Objetive Caml (fonctionnel interprété)

•Eiffel (impératif compilé)

•Java (impératif semi-interprété)

Alaya Raddaoui

Page 22: Cours génie logiciel

22

Tests et mise au point

Alaya Raddaoui

Page 23: Cours génie logiciel

23

• Principe du test

- des données en entrée

- un résultat attendu

- une exécution du logiciel obtenu sur les données

- comparaison du résultat obtenu avec le résultat attendu

•Interprétation du test

- si échec : il y a un problème

- si réussite : ??

La notion de test

jeu de test

Alaya Raddaoui

Page 24: Cours génie logiciel

24

Tests unitaires :

•vérification du bon comportement d’une fonction, d’un

module, par rapport à sa spécification

Tests d’intégration :

• vérification du bon fonctionnement de la collaboration entre

modules

Tests fonctionnels :

•vérification globale d’une fonctionnalité du système décrite

lors de l’expression des besoins

Les niveaux de test

Alaya Raddaoui

Page 25: Cours génie logiciel

Gestion de projet

25 Alaya Raddaoui

Page 26: Cours génie logiciel

Les différentes tâches

Phases préliminaires

- Estimation de charge

- Ecriture du PQL

- Constitution de l’équipe

En cours de développement

- Mise en place des différentes phases (de la

spécification aux tests)

- Gestion des anomalies

- Contrôle de la qualité

- Suivi de projet26 Alaya Raddaoui

Page 27: Cours génie logiciel

Types de projet

D’après Boehm, Trois types de projet :

– Organiques (environnement stable, pas de contraintes

temps réel)

exemples : compilateur, calcul scientifique

– Médians (environnement instable, contraintes temps réel)

exemples : automates programmables, systèmes de régulations

– Imbriqués (environnement très instable, performances

en temps et précision difficiles à atteindre)

27 Alaya Raddaoui

Page 28: Cours génie logiciel

Structuration de l’équipe

Structure traditionnelle d’une équipe:

28 Alaya Raddaoui

Page 29: Cours génie logiciel

Rôles des intervenants (1)

Chef de projet :

- mise en œuvre de la qualité

- assurer le suivi du projet

- coordonner les équipes

- diriger les différentes phases (sauf conception détaillée

et tests unitaires)

Chef d’équipe :

- diriger la conception détaillée et les tests unitaires

- assurer l’interface entre son équipe et le chef de projet

29 Alaya Raddaoui

Page 30: Cours génie logiciel

Responsable Assurance Qualité

- Mettre au point le Plan Qualité Logiciel

- Définir les mesures nécessaires et leur interprétation

- Mener le suivi de la qualité

- Indépendant du Chef de Projet

Responsable Gestion de Configuration

- Gérer les différentes versions, les noms, les anomalies

Responsable d’Affaires

- Chiffrer les évolutions envisagées

- Négocier avec le client

Rôles des intervenants (2)

30 Alaya Raddaoui

Page 31: Cours génie logiciel

Alaya Raddaoui31

U.M.L. en un clin d’oeil…

Page 32: Cours génie logiciel

Alaya Raddaoui32

Pourquoi UML ? UML: Version 1.1 en 1997, version 2.0 en 2005.

les méthodes orientées objets sont actuellement en vogue

UML est bien adapté (classes, interfaces, héritage, …)

Pas forcément associé à la programmation objet, peut servir

dans un contexte plus large:Description des aspects statique (représentation des données)et dynamiques (comportements + évènements)

Notation devenue un standard de fait Synthèse de notations

antérieures (OMT, OOA/OOD, OOSE, …)

Définie et maintenue par l’OMG (http://www.omg.org) Consortium de spécification (IBM, Sun, Oracle, HP, Boeing, BEA,…) À la base de nombreux standards (CORBA, SOAP, MDA, …)

Page 33: Cours génie logiciel

Alaya Raddaoui33

Permet d’établir divers modèles du système à réaliserFournit des notations (semi-graphiques) : diagrammes…

Les diagrammes peuvent être enrichis par des textesUML ne fournit pas le mode d’emploi Quel usage ?

Graphique => outil de communication possible avec les clients Modèles partagés par l’équipe de développement Plusieurs modèles selon les étapes, dans la même notation

UML se veut Universel (limité à une notion discrète du temps)Extensible (via des « stéréotypes » et des « profiles »Couvre le développement de l’analyse à la conception

UML = Unified Modeling Language

Page 34: Cours génie logiciel

Alaya Raddaoui34

Qu’est-ce que UML ?

UML, Version 1.1 : 9 types de diagrammes

3 vues différentes :

UML Version 2.0 ajoute 4 types de diagrammes :Diagrammes de structure composite, de communication, de paquetages,de contraintes temporelles (« timing »)

Page 35: Cours génie logiciel

Alaya Raddaoui35

Les « cas d’utilisation » en UML 2

Un « cas d'utilisation » :

une fonctionnalité du système

déclenchée par un acteur extérieur

Acteur : tiers qui joue un rôle

En interagissant avec le système :

Il envoie des données / signaux au système

et/ou en reçoit des informations

Il est extérieur au système

Page 36: Cours génie logiciel

Alaya Raddaoui36

Les cas d’utilisation décrivent le comportement du système, les

interactions

qu’il a avec l’extérieur.

Un système ne fait pas des choses spontanément, mais en réaction à

une sollicitation initiale par un « acteur » extérieur

On doit préciser un cas d’utilisation

en décrivant les flots d’événements à l’aide d’un texte ;

À l’aide de diagrammes de séquences pour préciser

graphiquement ces flots.

Il faut prendre en compte

Les cas normaux, leurs variantes éventuelles

Les cas « d’erreurs »

Il faudra aussi mettre en évidence les interactions entre fonctionnalités

des cas d’utilisation (diagrammes de séquence)

Les « cas d’utilisation » en UML 2

Page 37: Cours génie logiciel

Alaya Raddaoui37

Diagrammes de séquence

Ils correspondent à des « diagrammes système »

le système est vu comme une « boite noire »

Échanges de messages entre les acteurs et le

système

jamais entre acteurs (pas du ressort du

système !)

ni entre éléments internes au système

(conception)

Représentation de la chronologie des échanges

Pas de boucle, branchement !

Un chemin principal, des alternatives,

des cas d’exception, des commentaires

Page 38: Cours génie logiciel

Alaya Raddaoui38

Syntaxe des Classes et Instances en UML 2

Page 39: Cours génie logiciel

Alaya Raddaoui39

Les attributsDe type simple (int, boolean, …) ou primitif (Date) uniquement !

Les liens avec les autres classes d’intérêt sont représentés par les

associations

Dans le modèle d’analyse, on les considère comme public (on

raffinera à la conception, ainsi que les méthodes d’accès)

On ne distingue pas les attributs « dérivés » des autres

Les opérations:dans un premier temps, on ne considère que les opérations

principales (liées

aux cas d’utilisation)

on ne les rattache pas à une classe particulière, donc on ne se

préoccupe pas des méthodes à ce niveau (quels paramètres ?)

Syntaxe des Classes et Instances en UML 2

Page 40: Cours génie logiciel

Alaya Raddaoui40

Syntaxe des Classes et Instances en UML 2

Cardinalités dans les associations: de la forme

1, 2, ou un nombre entier précis (pas une

expression !)

* : un nombre quelconque, éventuellement nul

un intervalle comme 1..*, 0..1, 1..3, (pas 1..N)

on donnera systématiquement les cardinalités

Page 41: Cours génie logiciel

Alaya Raddaoui41

Exemple: En guise de cahier des charges…

Une station service ATTOL a plusieurs postes de

distribution

soit automatiques (par carte bancaire) ouverts 24h/24

soit manuels (utilisables seulement si la station est ouverte)

Chaque poste est identifié par un numéro.

Chaque poste peut délivrer 3 sortes de carburant. A chaque

instant, il en délivre au plus une sorte.

Chaque poste est muni de 3 compteurs

la quantité de carburant servie

le prix au litre

le prix à payer (qui ne change pas pendant la journée)

Les compteurs affichent 0 s’il n’y a pas de distribution en cours.

Page 42: Cours génie logiciel

Alaya Raddaoui42

La station dispose de 3 citernes (une par type de

carburant) avec

le niveau courant de carburant,

un niveau d’alerte pour prévenir le gérant qu’elle va être

vide

un niveau minimal qui, une fois atteint, ne permet plus de

délivrer du carburant.

Les niveaux d’alerte et minimaux sont les mêmes pour toutes

les citernes.

Le système doit garder une trace de tous les achats

effectués depuis la

dernière ouverture de la station.

Un opérateur ouvre la station quand il arrive et la ferme

quand il part

Exemple: En guise de cahier des charges…

Page 43: Cours génie logiciel

Alaya Raddaoui43

Pour utiliser un poste automatique :

Un client insère sa carte bancaire et tape son code

Le système authentifie la carte auprès du service bancaire

En cas de succès, le client choisit un type de carburant et se sert

d’un certain nombre de litres.

Le système enregistre l’achat, envoie un ordre de débit au service

bancaire et remet à zéro les compteurs du poste. Pour utiliser un poste manuel :

le client choisit son carburant et se sert.

Les caractéristiques de l’achat sont envoyées à l’opérateur.

Lorsque le client a payé en indiquant son numéro de pompe,

le pompiste enregistre l’achat et remet à zéro les compteurs

du poste

Exemple: En guise de cahier des charges…