Génie Logiciel

Transcription

Génie Logiciel
Licence Informatique
Marisela Hernandez
[email protected]
Marisela Hernandez
1
Présentation de la 1ere partie du
module d’A/E

Description breve: Les premieres phases
de la mise en oeuvre d´un logiciel

Objetif: Savoir analyser et concevoir un
logiciel
Moyens: 3 cours
TDs avant la semaine de
partiels
 Evaluation: Mini-projet noté

Marisela Hernandez
2
Programme du module

Cycle de développement d´un logiciel
 Expression de besoins du logiciel
 Conception générale du logiciel
 L´analyse descendente
 Conception détaillée du logiciel
 Programmation (Codage et tests
unitaires)
 Intégration de modules
 Essais –Validation
Marisela Hernandez
3
Programme du module
 Maintenance
Structuration d´un logiciel pour la
programmation structurée
 Etude de cas
 La documentation
 Étude de la méthode MERISE
(2e partie)

Marisela Hernandez
4
Bibliographie




Alfred Strohmeier.
Génie Logiciel: principes, méthodes et
techniques. Presses polytechniques
Romandes.1997.
Gaudel, Marre, Bernot, Schelienger.
Précis de Génie Logiciel. Masson.1996.
J.P. Laurent
Initiation à l’Analyse et à la Programmation.
Dunod. 1985.
Jacques Printz
Le Génie Logiciel. Que sais-je? 1995
Marisela Hernandez
5
Introduction
Qu’est ce qu’un Logiciel ?
C’est un ensemble de programmes et de procédures
nécessaires au fonctionnement d’un système
informatique.
Qu’est ce qu’un Programme ?
C’est un ensemble d’instructions, rédigé dans un
langage de programmation, permettant à un système
informatique d’exécuter une tâche donnée.
Marisela Hernandez
6
Exemples de logiciels
 Système qui gère la gestion du personnel d’une






entreprise
Système de gestion de location de voitures
Les traitements de texte (WORD par exemple)
Gestion de réservations de vols
Le système SOCRATE de la SNCF
Traitement d’images (Photoshop)
Gestion d’une banque
Marisela Hernandez
7
Exemples de programmes
Programme C pour trier un tableau avec
la méthode dichotomique
 Programme Java pour calculer une
valeur particulière de la suite de
Fibonacci
 Fonction Java pour calculer le volume
d’une sphère
 Fonction C pour calculer le nombre
d’éléments d’une liste chainée

Marisela Hernandez
8
Developpement du logiciel
Comparé aux autre produits, le logiciel
présente quelques, particularités: le
problème de production en série ne se
pose pas.
 Le logiciel est produit unique fait avec
un procédé de production ou un
processus de développement.

Marisela Hernandez
9
Developpement du logiciel
il fait une large place à l'analyse des
besoins, à la conception et à la
validation ;
 il s'opère par raffinements successifs
 la partie technique du développement
d'un logiciel consiste en l'établissement
d'une suite de descriptions de plus en
plus proches d'un programme
exécutable et sa documentation

Marisela Hernandez
10
Processus de developpement

certaines étapes peuvent déclencher la
révision des étapes précédentes :
 un manque de précision des spécifications
peut être détecté lors de la conception.
 Une erreur de conception peut ne paraître
que lors du test du logiciel.
Marisela Hernandez
11
Developpement du logiciel
pour pallier au problème de
l'invisibilité, il donne lieu à la
production de documents intermédiaires
permettant de contrôler un logiciel en
cours de développement ;
 la plupart du temps il est poursuivi après
la livraison du logiciel,

Marisela Hernandez
12
Developpement du logiciel
pour la maintenance qui peut remettre
en cause les fonctions du système et
impliquer des modifications et un
redéveloppement
 L'ensemble des phases par lesquelles
passe le logiciel s'appelle le cycle de
vie.

Marisela Hernandez
13
L‘Analyse Système

Un logiciel n'est que l'un des composants d'un
système plus vaste.

C'est l'analyse système qui détermine
• le rôle du logiciel,
• le mode d'interaction du logiciel avec son
environnement (= les autres
composants).

Etude des besoins, d'opportunité, d'impact,
coût/bénéfice, de faisabilité
Marisela Hernandez
14
Étude de cas 1
"Resumix : Traitement de CVs "

L'entreprise "Resumix" propose ses services de traitement
automatisé et en masse des CVs de postulants. Quelles sont
les technologies utilisées pour réaliser cette automatisation ?

Scanner pour obtenir une image numérique à partir du CV
numérisé
Logiciel de recognition de caractère pour transformer l'image
en texte
Logiciel d'analyse de texte pour l'extraction d'information et
de mots clés,
Ce logiciel utilise une base de connaissance pour
"comprendre" et extraire des éléments de connaissance
depuis les texte,
Base de données pour le stockage des information obtenus,
Interface graphique pour l'interrogation et la manipulation de
la base de données.




Marisela Hernandez
15
Étude de cas 1
Objetifs de Resumix

nombre de CVs traités (c.à.d acceptés ou rejetés) ventilé
sur le temps (par jour, par semaine, par mois, par an);

nombre de CVs ayant donnée lieu à des embauches
ventilées sur le temps (trimestre, année),
sur les secteurs d'activités (bâtiments, informatique,
pharmacie, .. ) sur le type de poste (ingénieur, manager,
dirigeant, chef de projet, expert, ...)

taux de turnover (c.à.d changement d'emploi) pour les
personnes embauchés par Résumix, ventilé sur le temps,
les secteurs d'activités, ...
Marisela Hernandez
16
Étude de cas 2
Bibliothèque Universitaire

Gestion d’utilisateurs (étudiants, enseignants,
employés)

Gestion de prêts

Gestion d’acquisitions (livres, revues, journaux)

Gestion de personnels de la Bibliothèque

Gestion du budget

Logiciel de recherche de publications (livres, revues,
journaux)
Marisela Hernandez
17
Étude de cas 3
Gestion d’un bureau de location pour plusieurs
stations touristiques.

Différents prestataires offrent des locations. Ils
peuvent les retirer tant qu’aucune réservation
définitive n’est réalisée. Ils touchent 90% du prix
de la location.

Les clients adressent des demandes de
renseignement.

Le bureau y répond par des propositions de
location et
d’assurance annulation ou une mise en attente.
Marisela Hernandez
18
Étude de cas 3
Gestion d’un bureau de location pour plusieurs stations
touristiques.

Le client peut alors refuser ou demander une réservation en
envoyant des arrhes et en souscrivant éventuellement
l’assurance annulation. Si la location choisie est encore libre,
elle est réservée, sinon la demande est mise en attente.

Après un délai de 8 jours, la réservation est confirmée de
manière définitive. En cas d’annulation après ces 8 jours, un
pourcentage est dû par le client sauf s’il a souscrit
l’assurance annulation. L’annulation en cas de mise en liste
d’attente est toujours possible sans frais.

La facture est envoyée avant le début du séjour. Un rappel
suit en cas de non paiement. En cas de nouveau défaut de
paiement le dossier est transmis au contentieux.
Marisela Hernandez
19
Étude de cas 3
Marisela Hernandez
20
Objéctif actuel
• La stratégie ancienne
"code and fix" (coder et fixer)
activité non pilotée, au résultat totalement aléatoire.
• L'objectif actuel
passer au stade industriel, en terme de maîtrise de :
• la qualité
• l'efficacité (maîtrise des coûts et délais)
Marisela Hernandez
21
But d’un logiciel
Le but du développement d’un logiciel est de développer des logiciels de qualité.
Exemple de critères de qualité :
- Exactitude : aptitude d’un logiciel à fournir des résultats voulus dans les
conditions normales d’utilisation. C’est le critère le plus important.
C’est la base de l’informatique : on souhaite développer des logiciels qui
répondent aux besoins des utilisateurs.
- Robustesse : Aptitude à bien réagir lorsque l’on s’écarte des conditions
normales d’utilisation
- Extensibilité : Facilité avec laquelle un programme pourra être adapté
pour faire face à une évolution des besoins des utilisateurs
Marisela Hernandez
22
But d’un logiciel
Exemple de critères de qualité :
- Réutilisabilité : Possibilité d’utiliser certaines parties du logiciel pour
développer un autre logiciel répondants à d’autres besoins
- Portabilité : facilité avec laquelle on peut exploiter un logiciel sous
différents systèmes d’exploitation (Linux ou windows XP ou MAC-OS )
- Efficacité : temps d’exécution, taille mémoire, …
Marisela Hernandez
23
Critères de qualité
La prise en compte de ces critères de qualité dans la réalisation d'un
logiciel implique:
• un temps important de développement (plusieurs hommes sur
plusieurs années)
• et une méthode de développement
Il n’est donc pas possible de se lancer dans la programmation tout
de suite même lorsque le logiciel ne comporte qu’un seul
programme de petite envergure.
(objetif de la matière Analyse et Etude de cas)
Réfléchissez d'abord, vous programmerez plus tard.
Proverbe de H.F. Ledgard
Marisela Hernandez
24
Dans le module Analyse et Étude de cas
Nous ne nous intéressons pas au programme
Ce n’est pas un cours de programmation
Pas de programmation
Marisela Hernandez
25
Méthode classique de développement de
logiciels
Dans le cheminement de la pensée qui va de la naissance d’un
projet informatique jusqu’à son terme on distingue trois
grandes étapes :
- La première prend la décision de développer un
logiciel ou non
au sein de l’entreprise.
- La seconde est l’élaboration proprement dite du
logiciel.
- la troisième est la phase de maintenance du logiciel
construit.
Marisela Hernandez
26
Méthode classique de développement de
logiciels
Ces activités sont mises en œuvre suivant des stratégies
diverses et parfois complexes requérant des compétences
variées dans de nombreux domaines de l’informatique.
 Génie logiciel (Software Engineering)
Marisela Hernandez
27
Génie logiciel
Génie Logiciel =
(Software Engineering) =
Science de l'ingénierie du logiciel
« l’application pratique de la connaissance scientifique
dans la conception et l’élaboration de programmes
informatiques et de la documentation associée
nécessaire pour les développer, les mettre en œuvre et
les maintenir » (B. W. Boehm, 1976)
Marisela Hernandez
28
Génie logiciel
Génie Logiciel =
(Software Engineering) =
Science de l'ingénierie du logiciel
« Activités de conception et de mise en œuvre des
produits et des procédures tendant à rationaliser la
production du logiciel et son suivi »
(Arrêté ministériel du 30-12-83)
Marisela Hernandez
29
Cycle de vie du logiciel
•Le développement d’un logiciel se fait suivant un cycle
appelé cycle de vie du logiciel.
•Le cycle de vie est décomposé en phases de développement
•Ces phases sont échelonnées dans le temps.
•Une phase se termine par la remise d’un (ou plusieurs)
document(s).
Marisela Hernandez
30
Cycle de vie du logiciel
Phases de développement :
- Spécification des besoins (15% du temps)
- Conception générale (10% du temps)
- Conception détaillée (25% du temps)
- Codage et Tests unitaires (15% du temps)
- Tests des modules (5% du temps)
- Intégration du logiciel (20% du temps)
- Validation (10% du temps)
Marisela Hernandez
31
Spécifications des besoins
But: éviter de développer un logiciel non adéquat
Données: sont fournies par des experts du domaine
d’application et par les futures utilisateurs
Résultat: ensemble de documents décrivant les aspects
pertinents de l’environnement du futur système, son rôle et
sa future utilisation
L’analyse des besoins est l’activité essentielle au début du
processus de développement. Elle est menée avec les études
de faisabilité et la planification
Marisela Hernandez
32
Spécifications des besoins
Il est indispensable de déterminer les besoins du
logiciel pendant la première phase. Les besoins
peuvent se traduire sous plusieurs formes :
- des spécifications générales,
- des spécifications fonctionnelles,
- des spécifications d’interface.
Marisela Hernandez
33
Spécifications des besoins
Les spécifications générales sont un ensemble d’objectifs,
de contraintes (utilisation de matériels et outils existants) et
de généralités qu’il faudra respecter au cours du
développement.
Les spécifications fonctionnelles sont la description des
fonctionnalités du logiciel de manière aussi détaillée que
nécessaire.
Les spécifications d’interface sont la description des
interfaces du logiciel avec le monde extérieure (utilisateurs,
autres logiciels, matériels …) de manière aussi détaillée que
nécessaire.
Marisela Hernandez
34
Spécifications fonctionnelles des besoins
Les spécifications fonctionnelles des besoins servent à définir ce que doit
faire le logiciel et non comment il est fait. Ceci est décrit dans le document
de spécification des besoins.
Les besoins existants
Spécifications des besoins
du logiciel
Le but de la première phase de développement est de spécifier les
besoins du logiciel à partir des besoins existants.
Marisela Hernandez
35
Exemple: Besoins du
Gestionnaire journalier du temps





Planification des RDV pour chaque jour
Voir les RDV planifiés, possibilité de
modification, annulation ou ajout d’un
nouveau RDV
Pour chaque RDV stocker l’heure, la
durée, les intervenants, le lieu, …
Stocker des fiches pour chaque contact
Séparer les contacts professionnels,
personnels et des institutions
administratives …
Marisela Hernandez
36
Exemple: Besoins du
Gestionnaire journalier du temps
Fenêtres pour visualiser les RDV par
jour, par semaine, par mois
 Créer un répertoire pour stocker les
contacts
 Création d’un calendrier ou sont étalés
tous les jours d’un mois précis
 Créer des fiches pour les RDV

Marisela Hernandez
37
Fonctionnalités d’un Système de
vente en ligne

1) Fonctionnalités du logiciel pour les
gerants:
 Gerer les stocks de produits, les referencer
 Mettre en ligne les nouveaux produits, metre
à jour les anciens produits, supprimer des
produits, definir les prix
 Créer la base de données de clients
 Communiquer avec les clients par email
…
Marisela Hernandez
38
Fonctionnalités d’un Système de
vente en ligne

2) Fonctionnalités du logiciel pour les
banques
 Identifier la banque du client
 Communiquer avec la banque pour
valider/refuser un paiement
 Calculer le montant total des commandes
 Calculer les taxes
…
Marisela Hernandez
39
Fonctionnalités d’un Système de
vente en ligne

3) Fonctionnalités du logiciel concernant
le client
 Créer un compte client (nom, prénom,




adresse, téléphone fixe et portable, email,
nom d’utilisateur, mot de passe, …)
Publier les commentaires sur les produits
Créer et valider le panier virtuel
Créer et suivre une commande
…
Marisela Hernandez
40
Spécification d’interface
Une interface est un dispositif qui permet
des échanges et interactions entre
différents acteurs.
 Une interface humain-machine permet des
échanges entre un humain et une machine.
 Une interface de programmation permet
des échanges entre plusieurs logiciels.

Marisela Hernandez
41
Spécification d’interface
L’écran est un élément important et peut
afficher du texte simple aussi bien qu’un
environnement graphique élaboré.
 L’un des buts de la discipline est ainsi de
donner des outils et des éléments pour
mettre en forme au mieux cet
environnement,
 et ainsi permettre à l’homme l’interagir plus
agréablement ou plus efficacement avec la
machine.

Marisela Hernandez
42
Spécification d’interface. Exemple 1
Menu
Durée de la
partie
Nombre de mines
détectées par le joueur
Echiquier ou le joueur
doit découvrir les mines
Marisela Hernandez
43
Spécification d’interface. Exemple 1
Nouvelle partie
Niveau du
joueur
Propriétés
d’affichage
Marisela Hernandez
44
Spécification d’interface.
Exemple 2
Marisela Hernandez
45
Conception générale
But: établir une première description du futur système
Résultat: une description de ce que doit faire le logiciel
(on dit quoi, on ne dit pas comment)
Une première étape dans le processus de conception d’un
logiciel, à partir des spécifications des besoins, permet de se
focaliser sur la définition de l’architecture du logiciel.
La phase de conception générale permet d’envisager plusieurs
solutions au problème posé et d’en étudier leur faisabilité.
Pour chaque solution, les choix effectués sont notés avec leurs
raisons.
La solution répondant le mieux aux besoins exprimés est
retenue et figée.
Marisela Hernandez
46
Conception générale: Système de
vente en ligne
Gestion et
affichage site
web
Interface
gérants
Gestion
clients
module achat
Module
paiement
Gestion et
affichage
produits
BANQUE
Module
facturation
Marisela Hernandez
47
Conception générale: L’analyse
descendante
•L’analyse descendante vise à subdiviser un grand programme
en plusieurs sous programmes plus faciles à concevoir, de la
même façon qu’on divise un problème en sous-problèmes.
•Le principe consiste à décomposer le problème à résoudre
(action globale) en problèmes plus simples (actions
intermédiaires).
•Par affinements successifs, on arrive à des actions dites
élémentaires, traduisibles directement dans un langage
informatique.
Marisela Hernandez
48
Conception générale: L’analyse
descendante
•Les actions intermédiaires ou élémentaires peuvent s’enchaîner
séquentiellement, être soumises à une condition, être répétées,
•c’est le rôle des structures de contrôle elles aussi traduisibles
dans un langage informatique.
•Les langages informatiques modernes sont conçus
spécifiquement pour l’analyse descendante.
Marisela Hernandez
49
Conception générale: L’analyse
descendante
Premier énoncé P 0
Sections de P
1
Sections de P
2
Sections de P
3
Sections de P
4
Programme final
Programme Final
Marisela Hernandez
50
Conception générale :
les modules
Un module est une unité regroupant un ensemble de sous-problèmes.
Premier énoncé P 0
Sections de P
1
Sections de P
2
Sections de P3
Sections de P
4
Programme final
Programme
Final
Marisela Hernandez
51
Conception générale: L’analyse
descendante
Premier énoncé P 0
Sections de P
1
Sections de P
2
Sections de P 3
Sections de P
4
Programme Final
Marisela Hernandez
52
Conception générale : les modules
Découper le logiciel en modules si l’on utilise un langage classique (C, Pascal)
ou définir les objets des systèmes si l’on utilise un langage orienté objet (java;
C++)
Premier énoncé P0
Sections de P
1
Sections de P
2
Sections de P3
Sections de P
4
Programme Final
Marisela Hernandez
53
Analyse Descendente: logiciel
agenda
Ajout
Nouveau
contact
Ajout
Nouveau
RDV
Gestion
fiche de
contact
Base de données
de contacts
Base de données
Agenda
Marisela Hernandez
Gestion
RDV
Consultation
EDT d’un
jour
54
Analyse Descendente: logiciel
agenda
Ajout
Nouveau
contact
Modification
d’une fiche
de contact
Suppression
d’une fiche
de contact
Consultation
d’une fiche
de contact
Ajout
Nouveau
RDV
Base de données
de contacts
Modification
RDV
Consultation
RDV
Suppression
RDV
Base de données
Agenda
Marisela Hernandez
Consultation
EDT d’un
jour
55
Conception détaillée
But: enrichir la description du logiciel de détails
d’implémentation à fin d’avoir une description très proche
d’un programme
• à partir du résultat de la conception générale se poursuit le
découpage du logiciel jusqu’à arriver à une description des
structures de données et une description algorithmique des
sous -problèmes (procédures et fonctions).
Marisela Hernandez
56
Conception détaillée : documentation
• Document de conception détaillée présente
l’architecture détaillée à laquelle on aboutit
• Le manuel de l’utilisation du logiciel décrit la
mise en œuvre du logiciel et son environnement
• Spécifications des test d’intégration: les tests et
jeux d’essais à mettre en œuvre durant la phase
d’intégration
Marisela Hernandez
57
Programme
Un logiciel peut consister de un ou plusieurs
programmes informatiques
Programme
TRAITEMENT
ENTREE
SORTIE
•Cycle de développement d’un programme
•Bibliothèque de programmes
Marisela Hernandez
58
Cycle de développement d’un
programme
Pour développer un programme informatique :
Problème à résoudre:
→ Analyse
→ Algorithme
→ Programme
→ Compilation
→ Exécution
Marisela Hernandez
59
Cycle de développement d’un
programme
Exemple d’application:

Problème: calculer la puissance d’un
nombre
Marisela Hernandez
60
Cycle de développement d’un
programme
Analyse

Phase de réflexion qui permet:
 d’identifier le problème:
○
calculer an
 d’identifier les caractéristiques du problème à traiter:
○ données: a, n
○ résultats: an
○ Cas particuliers: a positif, négatif ou zéro
n positif, négatif ou zéro
○ Traitement (calcul de la puissance)
 découper le problème en une succession de tâches simples et
distinctes
(sous-problèmes)
Marisela Hernandez
61
Cycle de développement d’un
programme
Analyse
 découper le problème en une succession de tâches simples et
distinctes
(sous - problèmes):
○ Si a>0 et si n >0 on calcule an en multipliant an-1 par a
et si n <0 on calcule an=(1/a)-n avec -n >0
○ Si a<0 an=(-1)n (ABS(a))n
○ Si a=0 et si n >0 an=1
sinon an n’est pas défini
Marisela Hernandez
62
Cycle de développement d’un
programme
Algorithme
 Succession de tests, décisions et actions dans le
but de résoudre le problème
 Est une description des opérations à mettre en
œuvre pour obtenir un résultat à partir de données
 Le langage algorithmique est suffisamment proche
des langages de programmation pour pouvoir être
traduit aisément vers ces derniers.
Marisela Hernandez
63
Cycle de développement d’un
programme
Algorithme
Lecture de données: a et n
Initialisation de la puissance a 1
Initialisation du nombre d’itérations à 0
Si a=0 alors si n >0 alors afficher “puissance = 1”
sinon afficher “puissance non défini”
sinon si n <0 on met à la place de n son opposé et
à la place de a son inverse (on se ramène au cas où n
>0)
Tant que le nombre d’itérations est inférieur à n
Répéter
puissance suivante=puissance précédente * a
compteur d’itérations augmente de 1
 Afficher la puissance




Marisela Hernandez
64
Cycle de développement d’un
programme
Programme

Structure de données:
a : nombre réel donné
n : nombre entier donné
p : nombre réel qui contient les puissances successives de a
j : nombre entier, le compteur d’itérations
Marisela Hernandez
65

Documents pareils