Professional Documents
Culture Documents
IUP NTIE
2010/2011
Sophie Ebersold & Younes Lakhrissi
Le génie logiciel
Partie I
Plan de la Partie I
1 - Définitions de base
Logiciel
Génie logiciel
Critères de la qualité logicielle
3 - Modè
Modèles de cycle de vie
Modèles linéaires
Modèles non linéaires
Définition :
Un logiciel ou une application est un ensemble de programmes, qui
permet à un ordinateur ou à un système informatique d'assurer une
tâche ou une fonctionnalité
Physiquement :
Une suite d’items ou d’objets
une structure d’informations Incluant programmes, données, documents, …
Sur mesure
Pour un client spécifique
Générique
Vendu sur le marché
• un tableur (spreadsheet), un outil de base de donnée (database)
• un outil de traitement de texte (word processor)
•…
Embarqué
Embarqués
Exécutent dans du matériel électronique isolé
machine à laver, télévision, lecteur DVD, téléphone mobile,
magnétoscope, four à micro-ondes, réfrigérateur, joueur MP3, ...
Difficile à modifier
Logiciel à temps ré
réel
Systèmes de contrôle et de surveillance
Manipulent et contrôlent le matériel technique
Réaction immédiate requise
Environnement contraignant
Les systè
systèmes distribué
distribués
Synchronisent la transmission, assurent l’intégrité des données et la
sécurité, ...
Technologies utilisées
CORBA, DOM/DCOM/.NET, SOAP, EJB, …
Les systè
systèmes de maté
matériel
Systèmes d'exploitation, exécutions de matériel de bas niveau
Les systè
systèmes d'entreprise
Décrivent les buts, les ressources, les règles et le travail réel dans une
entreprise
Le processus de dé
développement est difficile à automatiser
L’industrie du logiciel exige beaucoup de main d’œuvre
Un logiciel ne s’
s’use pas
Il se détériore à mesure que des changements sont effectués
en raison de l’introduction d’erreurs
ou par une complexification indue
Le Génie Logiciel ?
On parle de processus de dé
développement de logiciels et gestion de
projets
Gestion du personnel : Efforts
Gestion des ressources : Coûts
Aspects techniques : Conception & Réalisation
Contraintes de réalisations : Planification
Objectif du GL
Développer des logiciels considérés comme :
Logiciels fiables
Logiciels satisfaisant les besoins
Logiciels maintenables
Logiciels exploitables dans différents environnement
Risques majeurs du dé
développement logiciel
Défaillance humaine
Calendrier et Budget irréaliste
Développement de fonction inappropriées
Développement IHM inapproprié
Produit « plaqué-or »
Volatilité des besoins
Composants externes manquants
Problèmes de performances,
….
Quelques statistiques
36%
erreurs de définition.
erreurs de codage
64%
Définition :
C’est le processus qui couvre le déroulement des phases de
développement, de distribution et de disparition d’un logiciel
Le logiciel est le résultat d’un processus d’élaboration constitué d’une
suite d’étapes ou phases ayant pour objectifs de passer du QUOI
(Spécification) au COMMENT (Conception).
Chaque phase utilise des produits en entrée et génère des produits en
sortie, qui sont utilisés dans les phases ultérieures.
Objectifs
Maîtriser les coûts en terme de délai et de budget
Maîtriser les risques
Avoir une qualité conforme aux exigences
C’est la feuille de route du développement logiciel
Le cycle de vie est fortement lié à l’assurance qualité
Définition
C’est un document technique
Rédigé par l’équipe marketing ou par le client
S’adresse au client et aux développeurs et sera à la base du contrat
Critè
Critères de succè
succès
Se placer à un bon niveau de généralité
Décrire bien le problème posé
Définir les critères de validation
Exprimer facilement les changements au niveau des besoins
But
Étude du domaine d'application et de l'état actuel de l'environnement du futur
système :
Frontières
Rôle
Ressources disponibles et requises
Contraintes d'utilisation et de performance
Démarche
Élaboration des spécifications
Description des contraintes de réalisation
Ébauche du manuel d’utilisation
Produits issus de cette phase :
Une ébauche du manuel d’utilisateur
Une ébauche du glossaire propre au projet
Le dossier d’analyse
Doit fournir une description complète et détaillée des fonctions du produit dans sa
relation avec l’environnement
Sera utilisé par le client et par les développeurs
Définit les termes du contrat passé entre le client et le fournisseur du logiciel
Dossier d’
d’analyse : plan type
Introduction
Objectifs, fonctionnalités attendues, environnement, faisablité, éléments de coûts,…
Fonctions du produit
Concepts et terminologie, description fonctionnelle externe (entrées-sorties, IHM,…)
Description interne
Interaction avec environnement, contraintes,…
Éléments de livraison
Cahier provisoire de recette
Démarche
Découpage du projet en tâches
Enchaînement de tâches dans le temps
Attribution de durée et d’effort à chaque tâche
Conception architecturale
Définition de l’architecture du logiciel
Décomposition du logiciel en composants plus simples et spécification
modulaire
Élaboration des interfaces entre les différents modules
Produits issus de cette phase :
Le dossier de conception
Le plan d’intégration
Les plans de test
Le planning mis à jour
Conception détaillée
Enrichir la description du logiciel de détails d'implantation afin d'aboutir
à une description proche de la programmation.
Produits issus de cette phase :
Pour chaque composant : description des fonctions à réaliser : algorithmes,
représentation des données
20%
40%
programmation
Spécification et Conception
Validation et Vérification
40%
Gestion de configuration
Permettre la gestion des composants
En maîtriser l'évolution
En faire les mises à jour tout au long du processus de développement
Produits issus de cette phase :
Documents relatifs au développement du logiciel
Qualification
Le produit est testé en vraie grandeur dans des conditions d’utilisation
normales
À l’issue de cette phase, le logiciel est prêt à l’exploitation
Maintenance
Après livraison, le logiciel entre dans la phase de maintenance
Au fur et à mesure que l’environnement change, le système doit
s’adapter à ces changements
Ce processus de changement s’appelle l’évolution du logiciel
La maintenance d’un logiciel consiste à en corriger les erreurs et à
modifier le système pour refléter les changements de l’environnement
Validation et vé
vérification
But :
Validation : Contrôler l'adéquation entre les besoins des utilisateurs spécifiés
lors de l'analyse des besoins et les fonctionnalités du logiciel
Vérification : Contrôler l'adéquation de la spécification globale et du logiciel
Moyens :
Revues, Inspections de manuels et Maquettage pour la validation
Preuves et Tests pour la vérification (tests unitaires, tests d'intégration, tests
système)
Maquettage
Utilisé lors de la validation, afin de fournir un aperçu des fonctionnalités
du système final (prototype rapide).
Soumis à de scénarii en liaison avec les futurs utilisateurs : permet de
préciser leurs souhaits ou leurs choix (maquette exploratoire)
Expérimentation et confrontation de choix de conception différents
(maquette expérimentale)
J-L. Lemoigne,
Lemoigne, 1990
«Action d’élaboration et de construction intentionnelle, par composition
de symboles, de modèles susceptibles de rendre intelligible un
phénomène perçu complexe et d’amplifier le raisonnement de l’acteur
projetant une intervention délibérée au sein du phénomène :
raisonnement visant notamment à anticiper les conséquences de ces
projets d’action possibles»
Définition :
Un modèle est une abstraction de quelque chose de réel qui permet de
comprendre avant de construire, ou de retrouver les informations
nécessaires pour effectuer des modifications et extensions
Le modèle simplifie la gestion de la complexité en offrant des points de
vue et niveaux d’abstractions + ou - détaillés selon les besoins
Définition :
Permettent d'avoir une méthodologie commune entre le client et la
société de développement
Définissent et concrétisent les étapes du développement
Définit et planifier les documents à produire permettant de valider
chacune des étapes avant de passer à la suivante
Les modè
modèles liné
linéaires
La cascade
Le modèle transformationnel
Le modèle en Y
Le modèle en V
Le modèle en X
Le modèle en W
Les modè
modèles non liné
linéaires
Le prototypage
Le modèle en spirale
Le modèle par incréments
Le modèle évolutif
Principe
toutes les étapes doivent être réalisées
ordre respecté
passage de l'étape n à l'étape n+1 qu'après acceptation de l'étape n
remises en cause de l'étape n propagées uniquement jusqu'à l'étape n-1
Définition
des besoins
Conception
Logiciel
Intégration et
Validation
Maintenance
La cascade
Avantages
Facile à comprendre
Ce modèle est approprié lorsque les besoins sont bien clarifiés et les
changements sont très limités durant la conception du processus
Plus utilisé dans l’industrie
Limites
Pas transparent au client lors du développement
Difficulté de répondre aux besoins changeants du client
Pas de frontières claires entre conception et développement
Difficulté d’apporter des changements après finalisation du processus
Une phase doit être achevée avant de pouvoir passer à la phase suivante
Î Ce modè
modèle est en gé
général abandonné
abandonné au profit du modè
modèle en V plus
récent et actuellement, dans les mé
méthodes objet
Principe :
La représentation en V tient d'avantage compte de la réalité
part du principe que les procédures de vérification de la conformité du
logiciel aux spécifications doivent être élaborées dès les phases de
conception
Il montre que:
c'est en phase de spécification que l'on se préoccupe des procédures de
qualification
c'est en phase de conception globale que l'on se préoccupe des procédures
d'intégration
c'est en phase de conception détaillée que l'on prépare les tests unitaires
Le modèle en V
Modèle en W
La troisiè
troisième branche : une synthè
synthèse des 2 chemins :
articuler le mieux possible des composants "métier" avec des
composants technologiques pour produire une solution logicielle
Le modèle en Y
Le modèle transformationnel
Suppose un systè
système automatique de transformation des
spé
spécifications validé
validées en programmes.
Trois scé
scénarios d’
d’automatisation
1. les spécifications formelles des besoins sont traduites à l’aide d’outils
appropriés en un logiciel opérationnel
2. les spécifications formelles des besoins sont décrites et traduites à
l’aide d’outils appropriés en des spécifications détaillées exécutables
3. le code est généré à l’aide d’outils logiciels tels que les générateurs de
code
Spécification
Validation
Transformation
La ré
réutilisabilité
utilisabilité dans le modè
modèle « en X » peut être ré
réalisé
alisée à
plusieurs niveaux :
au niveau de l’architecture logique ou physique des composants
au niveau de l’architecture conceptuelle (domaine d’intérêt du sujet)
au niveau des modèles du domaine
au niveau des spécifications
Avantages :
Processus ordonné et discipliné du développement
Conception robuste
Meilleur contrôle de la qualité et la maintenance
Inconvé
Inconvénients :
Pas de recouvrement des phases
Effort de documentation important à chaque phase
Reprises coûteuses en cas de divergences par rapport à la
compréhension des besoins utilisateur
Principe
Les logiciels réalisés suivant ces modèles sont développés par
itérations ou incréments successifs
Les détails de réalisation peuvent être reportés afin de produire une
version opérationnelle du logiciel le plus tôt possible au cours du
processus de développement
Ces modèles semblent plus appropriés pour prendre en compte le
caractère évolutif des besoins des utilisateurs et les applications
novatrices
Exemples de modè
modèles non liné
linéaires
Le prototypage
Le modèle en spirale
Le modèle par incréments
Le modèle évolutif
Le Prototypage
Définition :
l’élaboration de versions opérationnelles du futur logiciel dès le début du
cycle de vie
la mise en évidence et la clarification par expérimentation des problèmes
les plus significatifs
l’élaboration de prototypes qui constituent une base de discussion et de
communication entre les utilisateurs, les informaticiens et les autres acteurs
de l’organisation
Consulter Construire ou
Client modifier prototype
Tester le
prototype
Conception et Validation du
Implantation Système
Le prototypage
Avantages
Client est acteur dans le processus
Client reçoit des résultats rapidement
Permettre de se concentrer sur les points critiques, les zones
d’incertitudes très tôt dans le développement
Simplifier l’élaboration des spécifications, de l’interface H/M: les
spécifications ne sont plus écrites mais montrées
Inconvé
Inconvénients :
Problèmes relatifs à la conduite du développement
Problèmes relatifs à la gestion de projet
Qualité du produit développé est souvent faible
Produit non commercialisable
Principe :
Développement du logiciel noyau puis développement et intégration des
composants, successivement.
Avantages :
Développement moins complexe et itératif
Développement ascendant : des incréments généraux (fonctions utilitaires)
aux incréments spécifiques (proches de l’application)
Intégrations progressives : Ordonnancement flexible des incréments
(fonctions des ressources, de l’expérience de l’équipe, des demandes de la
direction, et des clients, …)
Ordre des étapes du cycle de vie respecté pour chaque incrément
Relations entre incréments : chaque incrément peut être client d’incréments
de niveau inférieur
Livraison et mise en service possibles après chaque intégration d’incrément
Effort de maintenance dune version provisoire généralement négligeable
Inconvé
Inconvénients :
Il faut spécifier dès le début du développement de l’architecture globale du
logiciel et les différents lots qui seront développés: le noyau, les incréments
(qui doivent être indépendants fonctionnellement), leur intégration
Risque de voir remettre en cause le noyau ou les incréments précédents un
développement
L ’ajout de composants peut être complexe
Chaque développement est de + en + complexe, du point de vue de
l ’intégration
Solutions :
Spécification noyau, incréments et interactions au début du projet
Incréments aussi indépendants que possible (fonctionnellement et dans le
temps) : Contradiction
Le modèle évolutif
Le dé
développement évolutif consiste à Version n
réaliser :
une version provisoire du logiciel
(prototype) qui sera mise en Détermination des besoins
exploitation
Inconvé
Inconvénients
Comme dans le modèle incrémental, la réalisation d’une nouvelle version
comporte plus de risques que celle de la version précédente
Difficulté d’obtenir dans les délais les résultats de l’évaluation par les
utilisateurs de la nouvelle version du prototype
Difficulté de gestion des différentes versions du logiciel et de traçabilité
de leurs composants
Difficulté de déterminer le niveau de qualité du prototype et de sa
documentation
Le modèle en spirale
Principe :
Cycles de développement successifs du logiciel
Un prototype identifié par cycle
Quatre quadrants représentant quatre phase de développement pour
chaque cycle
Analyse préliminaire, détermination des objectifs du cycle, des alternatives,
des contraintes
Analyse des risques, Evaluation des alternatives, Prototypage
Développement et Vérification de la solution
Tests, Revue des résultats, Planification du cycle suivant
Le modèle en spirale
Avantages :
Produit rapidement un logiciel opérationnel minimal. Permet de ce concentrer
sur les aspects les plus incertains du développement
Suppose une discipline stricte pour éviter de « coder/finaliser ». Il faut accepter
les remises en cause de la part du client à chaque nouvelle évaluation
Ouverture à l ’ensemble des approches et technologies de développement
existantes
Inconvé
Inconvénients:
Difficultés pour mener à bien les premiers cycles de la spirale
Risque de remise en cause des spécifications des modules/versions déjà
réalisés lors de l ’analyse de nouveaux modules/versions
Difficultés de mise en oeuvre au niveau procédural et de contrôle du processus
Organisation opérationnelle du développement souvent modifiée pour le client
Avantages
Permettre de livrer rapidement une version opérationnelle du logiciel
Permettre de cerner les besoins des utilisateurs et des développeurs avant
d ’engager des dépenses plus importantes
Eliminer la maintenance: le logiciel entre dans un cycle de développement-
évolution permanent
Inconvé
Inconvénients
Risque de blocage dans le cas où il y beaucoup d’utilisateurs pour évaluer
les versions
Risque d’itérations sans fin
Conduit à coder avant de finaliser
Problèmes relatifs à la gestion de projet: (dérive des coûts et des délais,
changement du mode opérationnel du développement fréquent pour les
clients, pb de gestion de versions, ... )
Dilemme :
Quel modèle pour quel projet ?
Techniques d’Analyse/Conception
62
Plan de la partie II
1- Techniques de Spé
Spécification
2- Techniques d’
d’Analyse et de Conception
3- Techniques de Vé
Vérification
Définition :
Méthodes développées pour répondre à l’évolution des matériels, des
systèmes, des langages de programmation et essentiellement à la
complexité croissante des logiciels.
Elles permettent de «normaliser » et «formaliser » les différentes
activités afin de limiter les problèmes d’incompréhension entre les
différents intervenants
Techniques informelles
Le dictionnaire des données ou glossaire,
La table de décision,
…
Techniques semi-
semi-formelles
Le modèle entité-association (Entity Relationship Model),
Les diagrammes de flots de données (Data Flow),
Les diagrammes de structure (Structured Charts),
…
Techniques Formelles
Les diagrammes états-transitions,
Les réseaux de Pétri,
…
Définition
Elles sont très souples, conviennent pour tous les aspects, sont très
facilement communicables à des non spécialistes.
Elles manquent de structuration, de précision et sont difficiles à
analyser.
Des efforts peuvent être faits pour les structurer (spécifications
standardisées) :
chapitres, sections, items, justifications, etc
Exemples
Le dictionnaire des données ou glossaire :
Ensemble des spécifications des données utilisées aux différents niveaux
d’analyse et de conception
La table de décision
Représentation tabulaire de tous les cas des valeurs d’entrée d’un
processus et des valeurs de sortie correspondant à chacune de ces
combinaisons
Techniques semi-formelles
Le modèle entité-association
au plus un Y
Cardinalités
un et un seul Y
à tout X correspond :
0 ou plusieurs Y
1 ou plusieurs Y
Exemple
concerne est_concer
PROPOSITION concerner né
PROJET
(1,1)
est_envoyé
num_prop (0,n)
date_arrivée (1,1)
code_projet
nom_projet
état Envoyer nom_responsable
(0,n) date_limite
envoie
SOC-SERVICE
code_société
nom_société
adresse_société
Caracté
Caractéristiques
Modélisation des traitements
Permettent de montrer comment chaque processus transforme ses
entrées successives (flots de données entrants) en sorties
correspondantes (flots de données sortants)
Les DFD décrivent des collections de données manipulées par des
fonctions.
Les données peuvent être persistantes (dans des stockages) ou
circulantes (flots de données).
La représentation graphique classique distingue :
les fonctions par des cercles
les stockages par des boîtes ouvertes
les flots par des flèches
les entités externes par des rectangles
Proposition
Saisie Acceptation
PROPOSITION
SOC_SERVICES
Refus
Evaluation
Lettre de refus
PROJET
Exemples
Les diagrammes états-transitions
Les réseaux de Pétri
C’est une technique formelle très largement répandu pour décrire les
aspects liés au contrôle
Exercice :
Réaliser un diagramme
états/transitions sur le
déroulement d’un appel
téléphonique.
Quelques états :
En attente,
En Tonalité,
En numérotation,
En connexion,
En sonnerie,
…
Définition
Outil mathématique permettant de modéliser le comportement d'un
système dynamique à événements discrets.
Technique formelle est particulièrement bien adaptée pour décrire le
comportement des systèmes asynchrones avec des évolutions
parallèles
Constituants :
Places ( ) : états du système
transitions ( ) : changements d'état
marquage ( jeton ) : permettent de définir l'état du système à un
instant donné
Sémantique
Chaque place peut contenir un
ou des jetons
Exercice
P1
P2
P1 : Appel d'offre en cours
P2 : Enregistrement proposition
P3 : Examen proposition
P4 : Proposition acceptée
T4 T1
P5 : Proposition refusée
P6 : Appel d'offre terminé (annulé) P6 P3
T1 : Début d'examen
(transition simple)
T2 : Critères Satisfaits
(condition) T2 T3
T3 : Critères non satisfaits
P5
(condition) P4
T4 : Arrivée date limite
(événement)
Plan
1- Techniques de Spé
Spécification
2- Techniques d’
d’analyse et de conception
Méthodes fonctionnelles
Méthodes orientées objet
3- Techniques de Vé
Vérification
Méthode descendante :
Démarche par affinages successifs consistant à partir de l’expression la
plus générale du problème et à décomposer de façon itérative les
tâches à réaliser en sous tâches jusqu’à un niveau d’expression assez
élémentaire pour pouvoir être traduit dans un langage de
programmation
Méthode ascendante :
Réutilisation de composants logiciels préexistants et construction de
nouveaux systèmes par combinaison d’éléments prédéfinis
Méthodes fonctionnelles
Caracté
Caractéristiques
Plus orientées vers les traitements que vers les données,
mettent en évidence les fonctions à assurer et proposent une approche
hiérarchique, descendante et modulaire, en précisant les liens entre les
différents modules
Utilisent des notations de type DFD
Exemples
SADT (Structured Analysis and Design Technique)
SA (Structured Analysis )
SD (Structured Design)
Activités de Données de
Contrôle Contrôle
Datagramme Actigramme
SADT
(Structured Analysis and Design Technique)
L'analyse structurée SA
(Structured Analysis )
1 2
3 4
Objet :
Instance d’une entité particulière
A une identité unique
Possède un état : valeurs particulières de ses attributs
Communique avec les autres objets par envoi de messages, activation de
méthodes
Seules les méthodes de l'objet sont habilitées à modifier ses valeurs d'attributs
La réalisation de l'action associée à un envoi de message dépend de l'objet récepteur
qui gère ses propres attributs avec ses propres méthodes
Héritage :
Relation d'inclusion conceptuelle entre classes : les sous-classes
héritent de la structure et du comportement de leurs super-classes.
Enrichissement, spécialisation, fusion font partie du concept d'héritage.
Associations et liens :
Représentation au niveau des classes des liens qui unissent les objets
(association, agrégation, composition)
Trois aspects :
Dimension Fonctionnelle :
fonctions réalisées par les objets par
l'intermédiaire des méthodes
Dimension Structurelle :
propriétés des objets et liens
Dimension Temporelle
Comportement des objets :
description des changements d'états
(valeurs, événements)
Quelques mé
méthodes :
OOA -OOD (Coad et Yourdon)
OODa, OOADa (Booch)
OOSA (Shlaer et Mellor)
OOSE (Jacobson)
OOM (Rochfeld)
OMT (Rumbaugh)
HOOD (ESA)
RAD(Rationnal)
RUP (Rationnal)
Description
Couvre les phases d'analyse et de conception en utilisant le même
formalisme
Trois points de vue analytiques (statique, dynamique, fonctionnel)
Trois modèles : objet, dynamique, fonctionnel.
Avantages de OMT:
modèle statique très riche
nombreux domaines d'applications
Unifiée avec la méthode OODa Î UML
ENTREPRISE
PERSONNE travaille-pour nom
salarié
nom adresse
INSEE employeur
adresse
déménager salaire SERVICES
………
fonction
Processus de construction :
Préparer les scénarii de séquences d'événements typiques
Identifier les événements entre objets et préparer pour chaque scénario
une trace des événements
Préparer un diagramme de flots d'événements pour le système
Développer un diagramme d'états pour chaque classe
Vérifier la complétude et la cohérence des événements communs à
plusieurs diagrammes d'états
Formalisme de repré
représentation :
Diagrammes de flots de données
Processus de construction :
Identifier les valeurs d'entrée-sortie
Utiliser des DFD pour montrer les dépendances fonctionnelles
Décrire ce que fait chaque fonction
Identifier les contraintes
Spécifier les critères d'optimisation
La méthode MERISE
Version 1 :
Approche systémique (liens système d'information - système opérant,
SI - système de pilotage)
Version 2 :
Enrichissement des traitements au niveau conceptuel par l'introduction :
de diagrammes de flots de données
d'un Modèle Conceptuel des Traitements Analytiques (considération des
données qui s'y rattachent dés la conception Î préparation de la validation)
de la notion de Cycle de Vie d'un Objet
Version 3 :
Trois dimensions : statique, dynamique, fonctionnelle
Processus :
Développement de la dimension fonctionnelle : permet de représenter les
frontières du système à modéliser par rapport à son environnement.
Utilisation d'un diagramme de contexte.
Définition des besoins par des DFD
Importance de la dimension statique, la plus stable dans le temps
Repose sur un modèle E/A étendu
Association à chaque objet de son comportement, par l'intermédiaire des
méthodes apparues dans le DFD
Représentation de l'enchaînement des opérations dans différents scénarii, les
opérations pouvant rassembler les services de plusieurs objets : modèles de
traitements classiques de MERISE + objets sur lesquels portent les traitements
Méthodes d'analyse/conception
- Synthèse -
Nécessité
cessité d’introduire des techniques formelles et des outils pour
spé
spécifier et prouver les ré
résultats de l’l’analyse et couvrir tout le
cycle de vie.
Description
Il est né en début de 1997 dans l'optique d'unifier les méthodes
d'analyse et de conception des systèmes.
UML
la structuration les
des objets composants
Vue logique Vue logiciels
statique implantation
Diagrammes
classes, objets, Diagrammes
collaborations, composants
séquences
les fonctions Vue externe
du systè
système cas
d’utilisation
Vue logique Vue
dynamique déploiement
la dynamique l’architecture
des objets Diagrammes Diagrammes physique
états, activités déploiement
Diagramme UML2
Exemple :
Gérer les voitures
enregistrer
Client
ChefAgence
<<include>>
effectuer maintenance
M aintenicien
ResponsableAtelier
effectuer le test
proceder à l'expertise
montre les différents états d’un objet ainsi que les transitions entre ces
états
Exemple :
Synthè
Synthèse
Plan
1- Techniques de Spé
Spécification
2- Techniques d’
d’analyse et de conception
3- Techniques de Vé
Vérification
Définition
Recherche d'inadéquation d'un logiciel par rapport à des références
établies : spécifications du logiciel, normes ou règles portant sur son
code ou les documents le concernant
Classification des mé
méthodes
Tests statiques ( traitent le texte du logiciel : spécifications ou
programmes)
Tests dynamiques (exécution effective du logiciel sur un sous-ensemble
du domaine de ses entrées possibles)
Approches de Vérification
Vérification dynamique :
expérimenter le comportement de l’application (la tester) avec un
ensemble bien choisi de données;
Les tests ont pour but de mettre en évidence les erreurs.
Les tests peuvent prouver la présence d’erreurs mais ne peuvent pas
prouver leur absence
Vérification statique :
analyser les propriétés du système, sans exécution ;
Les techniques informelles
Les techniques formelles
Vérifications statiques
Analyse d'anomalies :
Établissement d'un critère d'acceptabilité des programmes testés
Construction d'un graphe (graphe de contrôle, flot de données, graphe de
dépendances, réseau de Pétri, graphe de transitions,…) représentant un
sous-ensemble des informations pour vérifier les critères choisis
Étude des chemins du graphe avec un prédicat portant sur la satisfaction
des critères établis
Vérifications statiques
Évaluation symbolique
Simulation de l'exécution du programme sur des données symboliques
Î expressions symboliques correspondant au texte des programmes
Utilisation de graphe de contrôle
Parcours du graphe à partir de données en entrée, jusqu'aux données de
sortie : production d'une expression symbolique retraçant les calculs
effectués et les conditions associées
122
Plan
Difficulté
Difficulté d'é
d'évolution
conséquence de l'absence de vision globale
Absence de services
les services nécessaires doivent être réalisés ''à la main'' (persistance,
sécurité, etc.)
Conclusion
charge importante pour le programmeur
incidence sur la qualité de l'application
une partie du cycle de vie n'est pas couverte
Réutilisation
! Évolution
Traçabilité
Qualité du logiciel :
Evolution des technologies
Parlons les mêmes langages et partageons les mêmes technologies !
Æ Les standard de l’OMG : UML, XMI, CWM, CORBA, IDL, …
Adaptabilité
Adaptabilité, extension d’
d’UML
Æ Profils UML
Interopé
Interopérabilité
rabilité
Æ Méta-modélisation
Æ OMG-MDA
OMG - OCL
(Object Constraint Language)
Pour spécifier complètement une application :
Diagrammes UML seuls sont généralement insuffisants
Nécessité de rajouter des contraintes
Description
Utilisation d’OCL
Contexte
Une expression OCL est toujours définie dans un contexte
Ce contexte est une instance d'une classe
Mot-clé : context
Un invariant
exprime une contrainte sur un objet ou un groupe d'objets qui doit être respectée
en permanence
Mot-clé : inv:
Exemple :
Pour toutes les instances de la classe Company, le nombre des employés doit
toujours être supérieur à 50
context Company inv:
self.numberOfEmployees > 50
Définition :
Un composant réutilisable :
traite un problème récurrent de l’ingénierie des SI,
capitalise un fragment de produit ou de processus,
offre une solution conceptuelle et/ou logicielle testée, acceptée et adaptable.
La réutilisation ne doit plus être limitée aux produits logiciels
Une très grande variété de composants réutilisables.
Conséquences :
Nécessité de classifier, documenter, organiser, composer les composants…
Nécessité de démarches centrées réutilisation.
Consé
Conséquences sur les produits :
Plus rapides à développer,
Plus faciles à maintenir,
Certainement meilleurs,
Moins originaux.
Expression Spécifications
des besoins Informelles Patrons d’analyse
Modèles de domaine
Composants métiers conceptuels
Patrons d’implantation
Composants métiers logiciels
Implantation (solution Bibliothèques de classes
Logiciel
opérationnelle)
Patron
Introduction
La beauté est-elle subjective ou existe-t-il des critères permettant de
distinguer ce qui est beau de ce que ne l’ai pas ?
les individus d’une même culture sont généralement d’accord sur ce qui
peut être considéré comme une bonne conception.
Définition:
« une solution apportée à un problème dans un contexte donné »
« chaque patron décrit un problème récurrent dans notre
environnement, puis le cœur de la solution qui sera réutilisable
indéfiniment, quelle que soit la mise en pratique choisie »
Exemple: Cré
Création textile
Amé
Améliorer la communication et l’l’apprentissage :
Les patrons impliquent l’adoption d’une approche commune au sein
d’une équipe de développeurs. Ils constituent une même référence pour
tous lors des phases d’analyse et de conception d’un projet, ce qui
simplifie bien évidement la communication.
Souplesse du logiciel :
La plupart des design patterns facilitent la modification ultérieur du
logiciel.
processus Ambler
générique
Coad GoF
Coad GoF
domaine SIP
entreprise
e n
lys on t io
ana c e pti lanta
con im p
[ LSR-IMAG ]
Systèmes de patrons
Exercice
Objectif
Permettre à un objet de prévenir un ensemble d'autres objets inconnus
au moment de sa conception de certains changements de son état
Problème
Certains changements d'état d'un objet O sont susceptibles d'en
intéresser d'autres
Ces autres objets sont inconnus lors de la conception de O
Solution
Faire gérer à O une liste d'observateurs (ou écouteurs) et les prévenir
lors des changements d'états intéressants
3 observateurs
1 sujet
2003
50
Ouest = 33,5
Est
45
40
35 Oues t
30
Nord = 12,4 25
20
15 Nord
Est = 44,0
Sud
10
Sud=10,1
Oues t
Nord
Es t
Sud
Description d’
d’un patron
Problem
Problem
Nom
Intention
Motivation Context
Indication d’utilisation
Structure
Constituants Solution
Solution
Conséquences
Benefits Consequences
Implémentation
Related Patterns
Exemples de code
Modèles apparentés
dans le catalogue
Identifier les problèmes
Définir de nouveaux
Construire un raffinement d'un patrons dérivant des
référentiel problème
patrons existants
Identifier les
problèmes
Analyser les
modèles existants Définir nouvelle
solution
Nouveau problème
Problème décomposable
Décomposer le problème
en sous-problèmes
Composants : description
classe avec ses connexions figées (les associations avec les autres
classes matérialisent des liens structurels), ne constitue pas une
réponse adaptée à la problématique de la réutilisation
Description
La réutilisation est l’aptitude d’un logiciel à être réutilisé, en tout ou en
partie, dans de nouvelles applications
Les composants permettent la construction d'applications par
composition de briques de base configurables
Un composant est un module logiciel autonome
unité de déploiement (installation sur différentes plates-formes)
unité de composition (combinaison avec d'autres composants)
Facilite la compréhension globale du système
outil de documentation
Facilite le processus d'évolution
modification des composants (interface, réalisation)
modification des relations entre composants
modification du déploiement
Proprié
Propriétés
spécifie explicitement la ou les interface(s) fournie(s)
spécifie explicitement la ou les interface(s) requise(s)
peut être configuré
Propriété configurables
(interfaces spéciales avec accès restreint)
Interfaces requises
Interfaces fournies Composant (fournies par d’autres
composants)
Contraintes techniques
• placement, sécurité
• transactionnel, persistance
• interfaces fournies par le système (bibliothèques, etc.)
Pour assurer leurs fonctions, les composants ont besoin d'un support
support
logiciel
Conteneur
encapsulation d'un composant
prise en charge des services du système
nommage, sécurité, transactions, persistance, etc.
prise en charge partielle des relations entre composants (connecteurs)
invocations, événements
techniques utilisées : interposition, délégation
Structure d'accueil
espace d'exécution des conteneurs et composants
médiateur entre conteneurs et services du système
Composant
Conteneur
Composant
Client
Composant
Conteneur
Conteneur
Premiers produits, ne ré
répondent pas encore à tous les besoins
Java Beans, (Enterprise Java Beans)
COM (Component Object Model ) Æ DCOM (Distributed COM ) Æ .NET
Début de normalisation
Composants CORBA (OMG), normalisation en cours (CORBA 3)
Exemple : CORBA
(Common Object Request Broker Architecture)
Standard de l’l’OMG
Expression Spécifications
des besoins Informelles
C
Analyse O
(abstraction du
Modèle M
monde réel) Descriptif & Normatif
Informatisable P
Conception
O
(solution technique) S
A
Modèle
Effectif Informatisé
Implantation N
(solution T
opérationnelle) Logiciel
S
Ingénierie
Application
L’architecture MVC
But
Isoler la donnée elle-même de sa présentation
Distinguer la consultation de la modification
Principe
Pour une donnée, trois composantes distinguées et séparées
Le modèle (sa structure)
La vue (sa représentation pour affichage)
Le contrôleur (les moyens de modifier la valeur)
Structure
Utilisateur
Contrôleur
Vue
Choisi la vue appropriée
manipule,
met à jour,
envoi de requête
réponse
Modèle Métier
MVC - Le modèle
Rôle
Encapsuler les propriétés d'une donnée
Être indépendant des vues et contrôleurs
Conséquences
Définir les accesseurs aux propriétés de cette donnée
Maintenir une liste d'écouteurs (vues et contrôleurs se déclarent comme
écouteurs)
Prévenir les écouteurs lorsque la donnée est modifiée
Implantation du design pattern Observer
Rôle
Permettre à l'utilisateur de modifier la donnée encapsulée dans le
modèle
Conséquences
Doit éventuellement s'enregistrer comme écouteur du modèle pour être
mis à jour si le modèle est modifié
Doit appeler les accesseurs du modèle en fonction des actions de
l'utilisateur
MVC – la vue
Rôle
Représenter la donnée encapsulée via un modèle
Se maintenir à jour lorsque le modèle est modifié
Conséquences
Doit s'enregistrer comme écouteur au niveau du modèle
La multi-modélisation
Motivations
le principal problème dans l’évolution et la réutilisation des logiciels est
un problème d’organisation des programmes
Dans toutes les approches de développement traditionnelles
(fonctionnelle ou objet) la structuration d’une application repose sur sa
décomposition en unités fonctionnelles.
Principe de découpage
les services de base d’une application et ses propriétés
(fonctionnalités transversales), correspondent à des fonctions
indépendantes qui doivent être découplées
Un logiciel contient :
Des préoccupations métier
Des préoccupations de niveau système
AOP - Exemple
Préoccupations techniques :
Intégrité de la transaction
Identification / authentification
Sécurité (confidentialité)
Performances
etc
Copyright © aspectj.org
AOP
Definition d’un aspect
Composants
C1 C2 C3 … Cn
A1
A2
Aspects
A3
….
An
Point de jonction
AspectJ
Code final
Compilateur
AspectJ
Définition
des aspects
package aop.aspectj;
aop.aspectj; coupe
before() : tobetraced()
tobetraced() Advice
{ de
System.out.println("Premier Aspect executer le 01/10/2010”
01/10/2010”); type
} before
}
OMG-MDA
L’approche MDA
Description
Le MDA est l'outil qui permet à une industrie de décrire ses fonctions
indépendamment des implémentations
avantages du MDA :
une architecture basée sur MDA est prête pour les évolutions
technologiques.
plus grande facilité d'intégration des applications et des systèmes
autour d'une architecture partagée.
une interopérabilité plus large permettant de ne pas être lié à une plate-
forme.
L’agilité
agilité
XP
RAD
UP - le Processus Unifié
Description
UP (Unified Process) est une méthode générique de développement de
logiciel.
Cadre gé
général
Le processus unifié est un processus de développement logiciel : il
regroupe les activités à mener pour transformer les besoins d’un
utilisateur en système logiciel
Caracté
Caractéristiques essentielles du processus unifié
unifié :
A base de composants
Utilise le langage UML
Piloté par les cas d’utilisation
Centré sur l’architecture
Itératif et incrémental.
Cadre gé
général
Two Track Unified Process
Caracté
Caractéristiques essentielles du processus unifié
unifié :
Itératif
S’articule autour de l’architecture
Propose un cycle de développement en Y
« Détaillé dans UML en action »
Pour des projets de toutes tailles
Le 2 TUP
Définition
méthodes de développement informatique permettant de concevoir des
logiciels en impliquant au maximum le demandeur (client)
se veulent plus pragmatiques que les méthodes traditionnelles.
Le développement agile tire son nom du Manifeste Agile, document
rédigé en février 2001 et signé par 17 personnalités du domaine.
Douze principes ont été définis, dont :
Parvenir à la satisfaction du client par le biais d'un cycle de développement
rapide, récurrent et incrémental de versions fonctionnelles;
Se montrer apte à prendre en compte les changements de dernière minute
à tout moment du projet;
Mettre en place une coopération quotidienne entre développeurs et
décideurs/commerciaux
Faire simple, mais pas simpliste;
Laisser l'équipe s'organiser au mieux de ses possibilités.
Méthodes agiles
Exemples
Méthodes adaptées aux petites équipes
Crystal,
XP,
Scrum,
…
Méthodes prévues pour des groupes conséquents
RAD
ASD
…
cadre gé
général
Méthode agile
Ensemble de « best practices » de développement (travail en équipes,
transfert de compétences, …)
Caracté
Caractéristiques essentielles du processus unifié
unifié :
Itératif
Pas de phase d’analyse
Plutôt pour des projets à effectif restreint (10 personnes max)
Valeurs :
Communication
Simplicité
Feedback
XP (eXtreme Programming)
Cycle de dé
développement
1 - Initialisation
Préparer l’organisation du
projet
2 - Cadrage
3 - Conception
Cerner et stabiliser les
objectifs Conception globale
et modélisation
4 - Construction 5 - Finalisation
Modélisation détaillée, Intégration, déploiement et
prototypage et test maintenance
Initialisation
Cette phase permet de définir le périmètre général du projet :
structurer le travail par thèmes
sélectionner les acteurs pertinents
amorcer une dynamique de projet
Cadrage
Phase d’analyse et expression des exigences
Exprime les besoins des utilisateurs lors d’entretiens de groupe
Conception
Les utilisateurs sont également impliqués dans cette étape.
Ils participent à l’affinage et à la validation des modèles organisationnels :
flux
traitements
données
Ils valident également le premier niveau de prototype présentant l’ergonomie et
la cinématique générale de l’application
Construction
Phase de prototypage et réalisation,
Durant cette phase, l’équipe RAD doit construire l’application module
par module.
L’utilisateur participe toujours activement aux spécifications détaillées et
à la validation des prototypes.
Plusieurs sessions itératives sont nécessaires.
Finalisation
Phase de recette et déploiement
Des recettes partielles ayant été obtenues à l’étape précédente, il s’agit
dans cette phase d’officialiser une livraison globale et de transférer le
système en exploitation et maintenance
50 %
23%
12 %
9%
6%
n ge n n n
ti o ra ti o io t io
lis
a
ad ep ct sa
a C nc ru l i
it i st na
In co on Fi
C
Toutes les activités identifiées sont supportés par des techniques, des
méthodes, des outils.
Réutilisation
Interopérabilité
Evolution
La phase de capture des exigences (analyse des besoins) n’est pas assez
valorisée dans les processus : elle devient une discipline à part entière.
Conclusion Générale
Se tenir au courant,
Être curieux
Lire …