d’information
Objectifs
Initiation à la modélisation des Systèmes d’Information en
utilisant Merise, UML et les méthodes agiles.
Structuration de la démarche informatique,
Méthodes d’analyse et de conception,
Méthodes de modélisation,
Assimiler les caractéristiques et les concepts de l’approche
objet,
Apprentissage des concepts de l’approche objet, de la méthode
UML et les fondements des méthodes agiles
UML
Introduction
Cycle de vie d’un logiciel
Historique d’UML
Diagrammes UML
Diagrammes de classes et d’objets
Diagrammes des cas d’utilisation
Autres Diagrammes
3 Conception des systèmes d’information
Plan
Méthodes agiles
Introduction
Concept
Quelques méthodes agiles
Scrum
Extreme Programming
Parce que
Le système d'information des entreprises actuelles est devenu
l'un des principaux piliers sur lesquels repose l'ensemble de
l'activité.
Impossible donc de traiter ce domaine de manière
approximative.
7 Conception des systèmes d’information
Introduction
Des méthodes fonctionnelles aux méthodes objet
Une évolution des méthodes qui s’est toujours faite de la
programmation vers l’analyse :
Programmation Conception Analyse
Les premières méthodes d'analyse (années 70)
Découpe fonctionnelle (fonctionnelle et hiérarchique) d'un système.
Schéma directeur
Le M.C.D
Le M.C.D (Modèle Conceptuel de Données)
Représentation statique, sous forme schématique, de la
situation respective des données d'un domaine de gestion.
Ce schéma est conçu pour être très stable dans le temps.
Objectif
Définir (identifier) toutes les données utilisées, les
regrouper en ensembles appelés entités, et de lier ces
entités par des relations, dans un modèle définit et
compréhensible par toute personne connaissant la
"syntaxe" du MCD.
Le MCD regroupe les informations à traiter, le
"quoi" du système.
Exemple 2
Une commande est composée de 1 ou n produits distincts en certaine
quantité. Un produit est présent dans 0 ou n commandes en certaine
quantité.
compose Produit
Commande
1,n quantité Entier 0,n
Exemple 3
Un étudiant parle une ou plusieurs langues avec un niveau. Chaque
langue est donc parlée par 0 ou n étudiants avec un niveau. Pour chaque
niveau, il y a 0 ou plusieurs étudiants qui parlent une langue.
Langue
Etudiant 0,n
parle
1,n
0,n
Niveau
0 ,n
a p p a rti e n t
1 ,1
O UV RA G E A UT E UR
é cri t 0 ,n
0 ,n
0 ,n
0 ,n
1 ,n
ve n d é d i te sto cke
q u a n ti té E n ti e r q u a n ti té E n ti e r q u a n ti té E n ti e r
0 ,n
0 ,n
0 ,n L IB RA IRIE
E DIT E UR
Le M.C.T
Le M.C.T (Modèle Conceptuel de Traitements)
Représentation, sous forme schématique, de phénomènes
de réactions du type et ceci indépendamment de toute
préoccupation d'organisation interne :
Demande de prêt
PROPOSITION DEVIS
Elaboration du devis Elaboration du devis
DEVIS
Demande du
CLIENT
client
Déclaration
Demande de
BANQUE Accord ou Refus ouverture de
renseignements
compte
DGI
Synchronisation
Condition booléenne traduisant les règles d'activation
d'une opération.
Opération
Ensemble d'actions dont l'enchaînement ininterruptible
n'est conditionné par l'attente d'aucun évènement
autre que le déclencheur initial.
Règles d'émission
Condition traduisant les règles de gestion, à laquelle
est soumise l'émission des résultats d'une opération.
Résultats
Collection de faits, produits par l‘Opération, dans les
conditions prévues par la (ou les) "règles d'émission".
45 Conception des systèmes d’information
Le M.C.T (Modèle Conceptuel de Traitements)
Exemple : Processus Prêt
Le M.O.T
Le M.O.T (Modèle Organisationnel de
Traitements)
Le M.O.T a pour objectif de représenter les traitements en prenant en
compte les choix et les contraintes liées à l’organisation.
La modélisation s’effectue en faisant abstraction du COMMENT faire
technologique.
Qui est qui? Qui fait quoi?
Analyse des postes de travail.
Partage des traitements entre l’homme et la machine.
Type d’individu qui réalisera les traitements.
Quand?
Influence du temps et comment structurer les traitements en
conséquence.
Où?
Comment les traitements sont-ils organisés dans l’espace ?
Message externe
enclanchant
T0
TO + 10 jours
Le M.L.D
Le M.L.D (Modèle Logique de Données)
C'est grâce à toutes les opérations précédentes que
l'ensemble des tables de la base de donnée vont pouvoir
être structurées de manière simple et très rapide :
le M.C.D, ayant été corrigé à la fin de l'étape du M.O.T, ce sont
les cardinalités maximales qui vont jouer le rôle essentiel.
les entités deviennent des tables (sauf des cas particuliers
comme les "dates")
Analyse
Conception
Implémentation
Tests
Maintenance
Plusieurs étapes :
Analyse des coûts: estimation du prix du projet
Planification: calendrier pour le développement (jours
ouvrables, jours fériés, nombre d’heures de travail par jours,
…)
Répartition des tâches: distribuer les tâches et les sous tâches
(affectation des ressources aux tâches)
M.A1 OMG (fondée en 1989) Organisation Internationale regroupant plus de 800 membres : vendeurs de systèmes, développeurs de logiciels,
utilisateurs, ...
Madani; 01/06/2006
Historique
Les versions se succèdent :
Début 1998
UML 1.2
En 1998
UML 1.3
En 2001
UML1.4
En 2003
UML 1.5
En 2005
UML 2.0
M.A2
M.A2 OMG (fondée en 1989) Organisation Internationale regroupant plus de 800 membres : vendeurs de systèmes, développeurs de logiciels,
utilisateurs, ...
Madani; 01/06/2006
Qu’est ce que UML ?
UML(Unified Modeling Language) un langage de
modélisation unifié
Langage = syntaxe + sémantique :
syntaxe : notations graphiques consistant essentiellement en
des représentations conceptuelles d'un système
sémantique : sens précis pour chaque notation
Est sorte de
CasCasd d’utilisation
’utilisation Classes
Classes États
EtatsTransitions
Transitions Séquence
Séquence
Vue externe
(fonctions système)
Séquence Vue déploiement
Vue logique dynamique
(Environnement
(Comportement)
d’implantation)
Collaboration
Activités
États transitions Déploiement
Rectangles
- Largeur : float = 10
- Longueur : float
- /Surface : float
+ <<Constructor>> Window ()
+ afficher () : void
+ cacher () : void Opérations d'instances
+ getTaille_max () : Rectangle
+ getTaille_defaut () : Rectangle Opérations de classes
Compte
- N°Compte : String
- Solde : float
- Client : Personne
+ <<Constructor>> Compte ()
+ Deposer (float somme) : void
+ Retirer (float somme) : float
+ AvoirSolde () : String
Compte
- N°Compte : String
- Solde : float = 100
# Client : Personne
+ <<Constructor>> Compte ()
+ Deposer (float somme) : void
+ Retirer (float somme) : float
+ AvoirSolde () : String
Opérations
Données
} •Partie statique, passive
•Partie cachée, privée
Traitement
} •Partie dynamique, comportementale
•Partie visible, publique
•Interface avec l’extérieur
User
FormeGéométrique
{abstract}
- abs : int
- ord : int
+ {abstract}surface () : double
+ getAbs () : int
+ getOrd () : int
+ ... ()
121 Conception des systèmes d’information
Classe « Interface »
Une interface est une classe spéciale dont toutes les
méthodes sont abstraites
Une interface se note en UML avec le stéréotype
<<interface>> ou symbole
Forme
Passager
0..1
mari
Personne Entreprise
1..*
0..1
Emploi
- Période : int
- Salaire : float
Exemple général
Exemple concret
Exemple ternaire
1 1..1 (exactement 1)
* 0..* (0 ou plusieurs)
n n .. n (exactement n)
1..* 1 ou plusieurs (1 ou plus)
0..1 0 ou 1 (au plus un)
1..100 entre 1 et 100
2,4,5 2, 4 ou 5
Commandes Clients
1..*
1
Banque Compte
1 1..*
Compte
Banque NCompte
1 1
Agrégat Agrégée
1..1
0..1
Texte
CompteEpargne
- Taux : float
+ AvoirSolde () : String
Employes
Sous classes - Filiere : String
Classes filles + <<Constructor>> Employes (int Code, String Nom, String Filiere)
Classes dérivées + getInf () : String
155 + Conception des systèmes d’information
getFiliere () : String
Généralisation / Spécialisation
une classe peut hériter de plusieurs super-classes
= héritage multiple
Personne Compte
1 0..*
{Ordonné}
Les personnes qui jouent le rôle de délégué font partie des personnes
qui jouent le rôle de parents d’élèves
Batterie
PC Portable 1
{xor}
Un PC Portable est alimenté soit à partir
1 d’une batterie, soit à partir d’un secteur
1 Secteur
Personne Liste
1..*
1
0..*
{addOnly}
Enfants
Personne
{frozen} 0..*
enfant
2
parent
Entreprise
:Entreprise e1:Entreprise
0..2
2..*
Personne
:Personne p1:Personne p2:Personne p3:Personne p4:Personne
Classe stéréotypée
Nom Acteur
<<Acteur>>
Nom Acteur
<<acteur>>
Secrétaire Site Web de l'établissement
Etudiant
Système de Gestion
Scolaire
<<acteur>>
Imprimante
Acteur spécialisé
<<include>>
<<include>>
S'authentifier
<<include>>
Effectuer des virements
<<include>>
Consulter solde
A
B Point d'insertion
<<extend>>
S'authentifier
Retenir la carte
<<extend>>
Reserver voyage
<<include>>
Identification
Client distant
Client local
207 Conception des systèmes d’information
Description des cas d’utilisation
Le diagramme de cas d’utilisation décrit les grandes
fonctions d’un système du point de vue des acteurs.
Mais il n’expose pas de façon détaillée le dialogue entre
les acteurs et les cas d’utilisation.
nécessité de décrire ce dialogue
S ys tè m e
G u i c h e ti e r S ys tè m e C e n tra l
S a is ie d u n u m é r o d e c o m p te c lie n t
D e m a n d e d e v a lid ité d e c o m p te
OK V é r fific a tio n
D e m a n d e ty p e o p é r a tio n
R e tr a it(s o m m e )
C o m p te s u ffis a m m e n t a p p r o v io s io n n é
D é b ite r le c o m p te
C o m p te d é b ité
A u to r is a tio n d e d é liv r e r s o m m e
Cl i ent
T echni ci en
Réparer
Diagrammes de séquences
Diagramme de séquences
Représenter les interactions entre objets en précisant la
chronologie des échanges de messages
Représente une instance d’un cas d’utilisation (les
scénarios possible d’un cas d’utilisation donné)
Montre sous forme de scénarios, la chronologie des
envoies de messages issus d’un cas d’utilisation
Le diagramme de séquence fait ressortir :
Les acteurs
Les objets
Les messages
M e ssa g e _ 1
M e ssa g e _ 2
L ig n e d e vie d e
l 'o b j e t
Compte
- N°Compte : String
- Solde : float
+ <<Constructor>> Compte (int n, float s)
+ déposer (float somme) : void
+ retirer (float somme) : float
+ consulter () : float
Objet_2 Objet_1
Message_1
Objet_1 Objet_2
Message_1
O b j e t_ 2 O b j e t_ 1
M e ssa g e _ 1 (2 0 se c o n d e s)
Ascenseur Porte
ouvrir (2 secondes)
fermer
O b j e t_ 2 O b j e t_ 1
M e ssa g e _ 1
Client Serveur
Sollitation
Acceptation
Requête
Réponse
O b j e t_ 2 O b j e t_ 1
M e ssa g e _ 1
Objet_1
Message_1
Client GAB
Introduire carte
Vérification validité
Objet_1 Objet_3
Message_1
Objet_2
Création d’objet
Message_2
[condition]: Message
ouvrir porte
* [condition]: Message
Si x>0 alors
Si x<0 alors
Diagrammes de collaboration
Diagramme de collaboration
Représente les interactions entre objets et relations
structurelles permettant celles-ci.
Permettent la description:
Du comportement collectif d’un ensemble d’objets
Des connexions entre ces objets
Des messages échangés par les objets
Interaction réalisée par un groupe d’objets qui
collaborent en échangeant des messages
<<{Détruit}>> <<{Nouveau}>>
Objet_1 Objet_2
Diagramme état-transition
Diagramme état-transition
Le diagramme état-transition :
Fait partie des modèles dynamiques
Décrit l'enchaînement de tous les états d'un objet
Propre à une classe donnée. Il décrit :
Les états des objets de cette classe
Les événements auxquels ils réagissent
Les transitions qu'ils effectuent
Fenêtre
Affichée
- ID : int
- Visible : boolean = True
Restaurée
Réduire
Réduite
Etat1 Etat2
Evénement [Condition]
Etat1 Etat2
Evénement [Condition]
Etat 2
Etat_1
entry / Act1
entry / Action_1
do / Act2
do / Action_2
Evénement [Cond]/ Action Evénement() / Act3
Evénement() / Action_3
exit / Act4
exit / Action_4
Embauché
entry / Signer contrat
do / Assurer fonction
Arrivée proposition() / Réponde à la proposition
Mutation() / Changer d'affectation
exit / Rompre contrat de travail
Etat_1
Etat_2
Feu
- ID : int
- Couleur : {Vert, Orange, Rouge}
Orange
Vert
Rouge
Diagramme d'activités
Introduction
Variante des diagrammes d'état-transition
Permet de décrire le flot de contrôle entre les opérations
:
Choix
Séquences
Itérations
Parallélisme
Au niveau macroscopique : décrit les enchaînements des
opérations
Au niveau microscopique : décrit l'algorithme d'une action
du diagramme d'états
Demander l'addition
Régler la note
Faire la vaisselle
Barre de synchronisation
Fusion (conjonction)
Disjonction
Relâcher l'embrayage
Re ce vo ir co m m a n d e
V é ri f i e r a rt i c l e
C o m m a n d e r a rt i c l e
[ s'i l re st e d e s a rt i c l e s]
[ p l u s d 'a rt i c l e ]
A n n u le r co m m a n d e
V é ri f i e r c a rt e c ré d i t V é r i f i e r d i sp o n i b i l i t é p r o d u i t
[ E l se ]
[ E l se ]
[ D i sp o n i b l e ]
[V a l i d e ]
D é b i t e r c a rt e c ré d i t
P ré p a re r c o m m a n d e
E xp é d ie r co m m a n d e P o st e r f a c t u r e
Vérifier commande
Valide
[oui] [non]
Nom du composant :
Permet de distinguer un composant des autres composants
Il peut être un nom simple ou un nom composé qui indique le paquetage auquel
appartient le composant
Stéréotypes : spécifient un composant qui désigne:
« executable »: un programme pouvant s’exécuter sur un nœud
« library » : une bibliothèque statique ou dynamique
« table »: une table de base de données
« file » : un fichier contenant du code source ou des données
« document » : un document
Interface :
Est une collection d’opérations utilisées pour spécifier les
services d’une classe ou d’un composant
Relations avec les interfaces
Réalisation :
Définie entre l’interface et le composant qui fournit les services
pour les autres composants
Cette interface est appelée « interface exportée »
Dépendance :
Définie entre l’interface et le composant qui utilise les services
fournis par un autre composant
Cette interface est appelée « interface importée ».
Component1 Component2
Interface1
dépendance réalisation
« Interface »
Interface1
Opérations
Dépendance :
Cela signifie qu’un des éléments d’un composant a besoin des
services que les élément de l’autre composant réalisent
Notation UML
Component1 Component2
Contenance :
Un composant peut être contenu dans un autre composant
Notation UML
Component 1
Component 2
enregistre SpécificationProduit
Ligne de vente
* 1 -Description : string
-quantité : integer -Prix : real
+setQuantité(In quantité:integer) +getDescritption(In Item:undefined):string
+getPrix(In Item:undefined):real
1..*
contenu dans *
1 Contient
Vente 1..*
Magasin
-Date : undefined utilise
-Heure : undefined Catalogue
+nom : string
1 1
+initierPaiement(In montant:real) +adresse : string
+ObtenirSpec(In Item:undefined):SpécificationProduit
1
est payée par
1
Paiement
-montant : real
-mode : string
Système Vente
<<executable>>
IHM_Caisier
<<interface>>
InterfacePaiement
InterfaceProduit
<<library>>
JavaSwing
<<executable>>
<<executable>> GestionPaiement
Enregistrement-Produits
InterfaceAutorisation InterfaceImpôts
InterfaceCatalogue
<<utility>> <<executable>>
Gestion d'Impôts
CatalogueProduits Gestion d'autorisation
Nom du nœud :
Permet de distinguer un nœud des autres nœuds
Le nom peut être composé du nom de paquetage qui contient le
nœud
Stéréotypes : un nœud peut posséder un stéréotype qui permet de le
distinguer des autres types de ressources (permettant de spécifier le types
de ressources)
Nœud 1
Client
IHM
Composant1 Composant 2
Association
Indiquent une voie physique entre deux nœuds
Exemple:
Une connexion Ethernet TCP / IP
Un bus de communication 1 1..*
Notation UML
Nœud 1 Nœud 2
Système Vente
Serveur de Calcul
InterfaceAutorisation InterfaceImpôts
InterfacePaiement
1 1
LAN
LAN
1
Serveur de Données Ventes
<<executable>> <<library>>
InterfaceCatalogue 1..* JavaSwing
IHM_Caisier
<<utility>>
CatalogueProduits
Serveur
Base <<utility>>
de Données
Ordonnanceur Base de
Données
interface
1
TCP / IP
1..*
Client
IHM
class Personne {
private int code;
private String nom;
private static int nombre;
public Personne() {
}
public static int getNombre(){
}
public String getInf(){
}
}
Class Personne{
Personne …
…
…
}
Class Employe extends
Employe Personne{
…
…
…
}
2ième Solution
Pays(IdPays, NomP, NomC)
context Compte
inv : solde>0
Syntaxe de la postcondition
post : <expression logique>
context Compte::getSolde():Real
post : result=solde
context Compte::getSolde():Real
body : solde
def : <déclaration>=<requête>
Type opérateurs
V V V V F V
V F F V V F
F V F V V V
F F F F F V
not If <exp_log0>
Then <exp_log1>
V F
Else <exp_log2>
Endif
F V
Dans le contexte de B :
Self.f() : accès à f() de B
Self.oclAsType(f()) : accès à la
méthode de A
Besoins
Spécifications
Conception
Code
Test
100%
% Complété
Aucun humain!
Absence de Méthodes
méthode prédictives
Documentation
Un produit opérationnel
exhaustive
Collaboration
Négociation d'un contrat
avec le client
Adaptation au
Suivi d'un plan
changement
Conception
Développement
i1 i2 i3 in
SCRUM
Introduction à Scrum
Source : http://fr.wikipedia.org
Source : www.scrumalliance.org
Source : www.scrumalliance.org
2. Backlog de sprint
Extrait du backlog produit
Source : www.scrumalliance.org
3. Sprint
Développement des fonctionnalités du backlog de sprint
Source : www.scrumalliance.org
4. Mêlée quotidienne
Point de contrôle quotidien de l’équipe
Source : www.scrumalliance.org
Le burndown chart
Principes :
1. Commencer par une équipe Scrum standard
2. Création de plusieurs équipes – essaimage
Adaptation de la méthode :
Scrum des scrums
Rôle de team lead
Problèmes à traiter :
Dispersion géographique
Développement off-shore
Contrats à adapter
Stratégie d’introduction de Scrum en entreprise
Extreme Programming
Extreme Programming : Caractéristiques
Méthodologie de développement basée sur des valeurs,
principes et pratiques
Propose des pratiques d’ingénierie comme le binomage et
TDD.
Conception incrémentale