Académique Documents
Professionnel Documents
Culture Documents
PROCESSUS DE DÉVELOPPEMENT
OBJET
METHODES
- un ou plusieurs modèles,
• Langage de Modélisation
– UML = Standard (OMG)
• Processus
– Plusieurs processus (généralement « Unifiés »)
• Outils
– Modeleur, AGL, plate-forme de développement
• Rational Rose, Power AMC, Enterprise Architect etc.
PROCESSUS DE DÉVELOPPEMENT
• Définition
• Processus unifié :
– processus de développement logiciel
ayant les caractéristiques suivantes :
• construit sur UML,
• itératif et incrémental,
• conduit par les cas d’utilisation,
• orienté par les risques.
• centré sur l’architecture du système
Conduit par
– Incrément
• la différence (Delta) entre deux releases produites à la fin de deux
itérations successives
Processus Unifié
• itératif et incrémental
Source http://www.entreprise-agile.com/HistoAgile.pdf
Processus Unifié
• itératif et incrémental
Source http://www.entreprise-agile.com/HistoAgile.pdf
Processus Unifié
• itératif et incrémental
– La définition et l’ordonnancement des itérations sont basés sur
les priorités attachées aux cas d'utilisation et sur l'étude du
risque.
– Les causes d’échec les plus importantes d’un projet doivent être
identifiées et écartées en priorité.
– Les risques doivent être pris en compte dans le cahier des charges
Processus Unifié
• Planning: dépendances, …
• Changements d’Exigences
Processus Unifié
Gravité
Probabilité
Processus Unifié
• Software architecture is not only concerned with structure and behavior, but also with
usage, functionality, performance, resilience, reuse, comprehensibility, economic and
technological constraints and tradeoffs, and esthetics.
• Les trois niveaux suivants peuvent être distingués au sein d’une entreprise :
niveaux central, départemental et local.
– Démarche classique :
– préétude(inception):
– préétude(inception)
• évaluation:
– Elaboration:
– Elaboration:
• Architecture
– Vues d’architecture
– Buts et contrainte
– Caractéristiques (taille, performances, …)
– Qualité (extensibilité, portabilité, …)
Processus Unifié
• 4 Phases: préétude(inception), élaboration, construction et
transition.
– Elaboration:
• Architecture
– Vues d’architecture
Processus Unifié
• 4 Phases: préétude(inception), élaboration, construction et
transition.
– Elaboration
• Evaluation:
– Construction:
– Transition:
projets types
•Ensemble de • Itératif • Ne couvre pas les
XP « Best Practices »
de développement
• Simple à mettre en
oeuvre
phases en amont et
en aval au
(travail en équipes, • Fait une large place aux développement :
transfert de aspects techniques : capture des besoins,
compétences…) prototypes, règles de support, maintenance,
• Cible des projets de développement, tests… tests d’intégration…
moins de 10 • Innovant: • Elude la phase
eXtreme personnes programmation en duo,
kick-off matinal
d’analyse, si bien
qu’on peut dépenser
Programming debout … son énergie à faire et
défaire
• Assez flou dans sa
mise en oeuvre:
quels intervenants,
quels livrables ?
• S’articule autour de • Itératif • Plutôt superficiel
2TUP l’architecture
• Propose un cycle de
• Fait une large place à
la technologie et à la
sur les phases
situées en amont et
développement en Y gestion du risque en aval du
• Détaillé dans « UML • Définit les profils des développement :
en action » (voir intervenants, les capture des besoins,
Two Track références) livrables, les plannings, support, maintenance,
Unified • Cible des projets de les prototypes gestion du
toutes tailles changement…
Process • Ne propose pas de
documents types
Le processus 2TUP
(Two Track Unified Process)
Le Processus 2TUP
(Two Track Unified Process)
• Processus Unifié
• Couvre :
– L’étude des besoins fonctionnels ;
– L’étude des besoins techniques ;
– La réalisation.
Le processus 2TUP(Two Track Unified Process)
Branche
fonctionnelle: Branche technique:
détermine ce que va prend en compte
réaliser le système en les contraintes du système
terme de métier ( Intégration,
performances, …)
Phase de réalisation:
fusion du modèle d’analyse
dans l’architecture
technique; codage, tests,
déploiement.
Le processus 2TUP(Two Track Unified Process)
Branche fonctionnelle:
– couvre la capture et l’analyse des besoins fonctionnels du système
à mettre en place.
– définit les fonctionnalités du système d’une manière exhaustive et
précise, en se focalisant sur le métier des utilisateurs
Branche technique
– couvre la prise en charge des besoins non fonctionnels
(Contraintes)
• d’intégration avec l’existant,
• de développement,
• de performance.
• Etc.
Le processus 2TUP(Two Track Unified Process)
Branche Réalisation:
la conception préliminaire
• permet d’intégrer le modèle d’analyse de la branche fonctionnelle dans
l’architecture technique de la branche technique,
la conception détaillée
• qui développe le modèle d’analyse en vue du codage,
le codage
et le test.
CAPTURE DES BESOINS
Etude Préliminaire
ANALYSE
Découpage en Catégories ARCHITECTURE
TECHNIQUE
CONCEPTION
Conception Préliminaire
Conception Détaillée
ETUDE PREALABLE
• Situation et Objectif :
– Acteur ,
– Message,
• communication unidirectionnelle entre objets qui transporte de l’information en vue de
déclencher une activité chez le récepteur,
– Évènement,
– Contexte dynamique,
• Diagramme synthétique qui représente tous les messages système- acteurs. Il se
représente sous la forme d’un diagramme de communication UML avec les
caractéristiques suivantes :
– Le système étudié = boîte noire = participant central ;
– Celui-ci est relié aux acteurs qui sont placés tout autour.
– Sur chaque lien sont montrés des messages en entrée et en sortie du système sans
numérotation. Les messages devront être décrits de façon détaillée sous forme textuelle dans
un document séparé (donnée du message, périodique, synchrone/asynchrone, etc.).
– Contexte statique.
ETUDE PREALABLE
• Éléments produits :
Opérateur Administrateur
Chargé d’Etude
: SYST : SYST
valider
DG
DG
Acteurs Diagramme de
Messages
Contexte Statique
Diagramme de
Contexte Dynamique
ETAPE GI : Capture des Besoins
Fonctionnels.
• Situation et Objectif
….. ……
CU2
… … …
CUn
ETAPE GI : Capture des Besoins Fonctionnels.
• Intention
– exemple : créer un nouveau compte client (ordinaire ou d’épargne)
• Actions
– Saisir les informations identitaires du client, les informations
socioprofessionnelles, générer un nouveau compte, procéder au versement initial
etc
ETAPE GI : Capture des Besoins Fonctionnels.
CU21 … P2
… …
CUp … Pp
ETAPE GI : Capture des Besoins Fonctionnels.
• 5. Valider et Consolider.
CU1 Scénario1 × × ×
Scénarion2 × ×
Scénario 3
CU2 Scénario1 × × ×
Scénario1 ×
…
… …
Cas d’Utilisation
Cahiers des
Diagrammes de
Éditer la demande
Charges
Opérateur
analyser la demande
C2
C1
P1
Diagrammes de
Cas d’Utilisation affinés et consolidés
C3
P2
Diagrammes de classes
participantes
P3 Traçabilité
• Situation et Objectif :
• Activités et Livrables
« LAN » « LAN »
Serveur Agence
{SE= Linux}
<<connecteur>>
Connecteur EAI
{nombre =4}
<application> Navigateur
AppliCentral {nombre >1}
{nombre >1}
<<progiciel>>
PCOMPTA
Manipuler les
objets
Gérer la distribution
utilisateur
Gérer la
sécurité Gérer l’intégrité
Découpage en Catégorie
• Situation et Objectif :
– Branche Gauche
– 1ère activité de l’analyse;
A3 Le découpage en catégorie est très différent du découpage fonctionnel vu précédemment. En effet, on rencontre souvent les cas suivants dans
les classes candidates:
- la même classe candidate participe à plusieurs cas d'utilisation;
des classes candidates de noms différents ont lesmêmes responsabilités et les mêmes collaboration surtout si les CU ont été étudiés par des
personnes différentes;
Administrateur; 15/10/2007
Decoupage en Catégorie
• Éléments Utilisés :
– Catégorie: regroupement logique de classes à
forte cohésion interne et à faible couplage
externe. Concept non UML qui sera
représenté par un package stéréotypé.
P2 Catégories
2. Élaborer les diagrammes de
P3
classes préliminaires/catégorie
P1 C1
C3
P2
P3
Diagrammes de
Classes d’analyse par catégorie
Diagrammes de
Packages d’Analyse
Développement du Modèle
Statique
• Situation et Objectif
– Branche Gauche, Phase d’Analyse, succède
au découpage en Catégories;
– Objectif: Détailler, compléter et optimiser les
diagrammes de classes de l’étapes
précédente
Développement du Modèle
Statique
• Éléments mis en jeu:
Classe, responsabilité, association, multiplicité, agrégation, composition, attributs,
,attributs dérivés, de classe, classe d’association, qualificatif, opération,
opération de clase, classification, généralisation, spécialisation, classe
abstraite, principe de substitution généralisation multiple, contrainte.
• Activités et Livrables :
1. Affiner les classes;
2. Affiner les associations;
3. Ajouter les attributs;
4. Ajouter les opérations (optionnels);
5. Optimiser avec la généralisation.
Développement du Modèle
Statique
• Activités et Livrables :
1. Affiner les classes:
Examen minutieux des classes candidates: ajout, suppression, validation itérative des
classes.
Principes généraux pour l’élimination de classes:
– Classes redondantes : représentent le même concept;
– classe vagues : ne correspond pas à un concept que l’on peut exprimer par une
classe (ex. l’organisation des politiques, …);
– Classe à la place d’un attribut: exprime un concept quantifiable (ex.: Taille);
– Classe à la place d’un rôle: exprime un rôle dans une association particulière
(aéroport de départ, aéroport destination);
– Classe représentant un acteur: utile uniquement lorsque le système doit gérer des
informations sur l’acteur;
– Classe de conception: introduit trop tôt des choix de réalisation.
– Classes représentant des groupes d’objet: classes inutiles car implicites dans les
multiplicités
Développement du Modèle
Statique
• Activités et Délivrables :
1. Affiner les classes:
Examen minutieux des classes candidates: ajout, suppresion, validation itérative des
classes.
Autres principes ( ajout de classes, subdivision de classes):
– Limiter le nombre de responsabilités des classes: pour éviter un nombre trop élévés
d’attributs, d’opérations et d’association. Il faut scinder les classes avec trop de
responsabilités.
– Ne pas confondre entité physique et objet logique ie une entité et sa description
* Plats
DescriptionPlatBuffet
1..*
0..1
1
CommandeBuffet
Développement du Modèle
Statique
• Activités et Délivrables :
2. Affiner les Associations
Examen minutieux des associations: ajout, suppression, validation itérative des
associations.
– Identifier les règles de gestion et utiliser les propriétés standard de UML pour
les exprimer: {ordered}, {frozen}, {addOnly}
Développement du Modèle
Statique
• Activités et Délivrables :
– Erreurs classiques:
• Confusion attribut/classe.
• Attribut redondant avec une association/implicite d’après l’association
– Erreurs classiques:
• Confusion attribut/classe.
• Attribut redondant avec une association/implicite d’après l’association
CLASSE ETUDIANT
étudiants 1..* nom
Nb_étudiants Date_nais
… …
• Ajouter les attributs (suite)
– Remarques:
• Détail qu’on peut négliger en analyse: le type, la valeur initiale, la visibilité;
• Détail intéressants en analyse: multiplicité, val initiale seulement pour les
attributs de classes, propriété {frozen}
« metaclass »
C
* 1 CatégC
att1
att2 att3
att4
• Les contraintes importantes peuvent être ajoutées à ce niveau.
– Concernent : attributs (notamment attributs dérivés), associations
• Position et Objectif.
– Troisième activité de l’analyse, fortement couplée avec et exécutée
(quasiment ) en parallèle avec la modélisation statique;
– Décrire les scénarii mettant en interaction des objets (diagrammes de
séquence/communication);
– Décrire le cycle de vie des objets de certaines classes (diagrammes
d’états).
• Éléments Utilisés:
– Scénario, diagramme de séquence, de communication;
– Message, événement, signal, appel d’opération;
– Classe d’analyse;
– État (composite), sous-état (séquentiel, parallèle) activité, transition (
propre, interne), conditions, activité (d’entrée, de sortie)
Développement du modèle dynamique
• Les étapes
• Les étapes
• Les étapes
2. Formaliser les scénarios
– Décrire les scénarii à l’aide de diagramme d’interaction
• Les étapes
2. Formaliser les scénarios
– Séquence ou Communication ?
• Point de vue assez répandue: en analyse le diag. de séquence et
en conception le diag. de communication qui est plus adapté à la
représentation des itération, des branchements complexes et des
flots de contrôles //.
• Autre critère:
– Peu de participants mais beaucoup d’échanges Séquence;
– Beaucoup de participants Communication
– Utilisation possible des Classes d’analyse de Jacobson
• boundary, control, entity
Développement du modèle dynamique
• Les étapes
3. Construire les diagrammes d’états
– Pour les classes ayant un comportement dynamique marqué;
• Les étapes
3. Construire les diagrammes d’états
– Classe ayant un comportement dynamique marqué ?
• Les étapes
4. Valider Les Diags d’état avec les Diags
d’Interaction
– Complémentarité diagrammes d’interaction/diagrammes d’état
– Il faut vérifier que les diags d’états des classes impliquées dans
les interactions prennent bien en compte tous les scénarii décrits.
Développement du modèle dynamique
• Les étapes
• Figure
Conception Générique
• Position et Objectif
– 2ème étape de la branche technique
– frameworks techniques
• Un réseau de classes qui collaborent à la réalisation d’une
responsabilité technique qui dépasse celle de chacune des classes
participantes.
• Exemples de framework:
– Struts (www.apache.org)
– JDO
– Swing (Java)
– MFC (Microsoft)
Conception Générique
• Éléments utilisés
– frameworks techniques
• Framework abstrait: constitué seulement d’interfaces
– Interface = ensemble d’opérations qui spécifie le service offert
par une classe ou un composant.
– Réutiliser le framework abstrait implémenter les interfaces
– structure seulement le modèle de configuration logicielle
Conception Générique
• Éléments utilisés
– frameworks techniques
• Framework concret:
– structure le modèle de configuration logicielle et le modèle
d’exploitation
« interface »
Serializable
Facture
{serialized}
Facture
Conception Générique
• Éléments utilisés
– Design patterns
• Solution de conception commune à un problème de conception
récurrent dans un contexte donné
• Traitent les problématiques communément rencontrées en COO:
– Diminution du couplage en vue de faciliter la maintenance évolutive
– Séparation des rôles
– Indépendances vis-à-vis des plate-forme matérielles et logicielles
– Réutilisation du code existant
– Facilité d’extension
– Etc.
• Présente un catalogue des meilleures pratiques:
– « singleton », « fabrication », etc.
Conception Générique
• Les Étapes
– 1. Modèle Logique de Conception
• (a) Élaboration :
– Modèle Structurel: Construire les classes, les mécanismes, et les design
patterns au sein des frameworks techniques.
– Modèle dynamique: décrire la dynamique càd la façon dont les
composantes du framework se synchronisent:
» Diagramme d’interaction si le mécanisme mis en jeu implique la
synchronisation d’appels sur plusieurs classes
» Diagrammes d’états si le mécanisme étudiés est sous la
responsabilité d’une classe au comportement dynamique marqué
» Diagramme d’activité ou diagramme global d’interaction lorsque le
mécanisme étudié est entièrement englobé par une seule méthode
qui déroule les étapes fonctionnelles.
Conception Générique
• Les Étapes
– 1. Modèle Logique de Conception technique
• (b) organisation :
– Organiser le modèle de conception technique par package de classes (un
package = un framework) en faisant ressortir les dépendances entre les
frameworks techniques.
Conception Générique
• Les Étapes
– 1. Modèle Logique de Conception technique
• Rappels :
– Composant (UML): partie physique et remplaçable du système qui
réalise un ensemble d’interface.
– Composant d’exploitation: partie du système logiciel qui doit être
connue, installée, déclarée et manipulée par les exploitants du système.
» Les stéréotypes UML prédéfinis « executable » et « library » (mais
seulement les librairies dynamiques) peuvent être assimilés à des
composants d’exploitation.
Figure
Conception Générique
• Les Étapes
– 3. Élaboration du Modèle de Configuration de Conception
technique
– More to Come
Conception Générique
• Les Étapes
– Génération de Code.
– More to Come
• Élaboration du modèle de configuration logicielle de la conception
technique
– Permet d’identifier les sous-ensemble (sous-systèmes) pouvant se
fabriquer et s’utiliser indépendamment les un des autres. N’a d’intérêt
que pour les grands systèmes
• Un Sous-système est représenté par un package UML avec le stéréotype
« subsystem ». Il est caractérisé par un procédé de fabrication indépendant
et un numéro de version qui fixe son état d’évolution (par exemple un fichier
make file ou le fichier projet d’une plate forme de développement)
• Le découpage en sous-système permet d’identifier les dépendances de
compilation, d’implantation des sources, de regroupements en fichiers JAR,
EAR, WAR, etc.
• Ce découpage établit généralement une correspondance avec les
composants d’exploitation.
• 4. Génération de code
– La conception générique développe le squelette technique du
projet sous la forme de frameworks techniques plus ou moins
abstraits. L’implémentation des frameworks abstraits est basée
sur des informations déjà disponible dans le modèle d’analyse.
Cette implémentation à partir des définitions fonctionnelles
implique l’écriture répétitive et fastidieuse de code.
– L’usage d’un générateur de code (accompagnant l’outil CASE)
peut être utile pour compléter la conception générique.
– Trois familles de générateurs de code:
• Ceux qui permettent de développer ses propres générateurs;
• Ceux qui livrent des générateurs paramétrables;
• Les outils de dernière génération conforma à l’architecture MDA
• 4. Génération de code
– Trois niveau de complexité de génération:
• Générer les squelettes: production des fichiers sources des classes
incluant des méthodes vides à compléter à partir des classes,
attributs, méthodes+signatures
• Générer des mécanismes systématiques: générer les classes avec
les méthodes spécifiques aux mécanismes du framework
techniques traité.
– Principale difficulté: paramétrage à réaliser pour contrôler les différents
cas de figures
• Générer le corps des méthodes fonctionnelles: produire à partir des
informations du modèle dynamique, les opérations liées à un
diagramme d’interactions ou à des classes liées à un diagramme
d’états.
• 4. Génération de code
– Trois Qualités d’un générateur de code:
• Permettre de s’adapter à la conception générique;
• Être capable d’implémenter tout un framework technique à
partir des informations disponibles dans le modèle d’analyse
• Être incrémental: toute nouvelle génération de code doit
préserver le code qui a été ajouté manuellement.
– La Génération de code demande des ressources.
• Elle est un projet à part entière (analyse, concevoir, coder)
• L’intérêt de la GC peut être estimé à partir du critère:
– n = nombre de classes d’analyse * nombre de frameworks
» Utiliser un GC si n > 200
• 5. Développement d’un prototype
– Le développement (optionnel) d’un ou plusieurs prototype(s) permettre au
point la conception générique avant que les changements ne deviennent trop
coûteux.
• Mécanisme CRUD des objets (create, retrieve, update, delete) depuis la présentation
jusqu’à la BD.
• Transformation d’objets entre couches:
– objet de présentation objet de distribution objet métier
• Mécanismes d’authentification et d’habilitations
• Intégrité des données sur les postes serveurs et clients
• Synchronisation EAI entre aaplications
• Mécanismes de présentation.
• 5. Développement d’un prototype
– Le prototype doit préparer les trois niveaux de tests relatifs
à la recette technique du système:
• Test unitaire des composants techniques;
• Test d’intégration
• Réponses aux spécifications techniques : respect des temps de
réponses, exigence de montée en charge, etc.
• Résumé de la conception générique
– 1. Élaboration du modèle logique de conception
générique
• Schématiser, au moyen des diagrammes de classes et
d’interaction, les design patterns qui seront utilisés;
• Concevoir,
• et Implémenter le générateur de code
– 5. [Développer un prototype]
• Identifier les objectifs du prototype;
• Tester
• Et si nécessaire, Mettre à jour la conception générique et le
générateur de code ;
• Schéma Conception Générique
Conception Préliminaire
• Position et Objectif
– Position: étape (délicate) qui fusionne les
études fonctionnelles et techniques.
– Objectifs:
• Passer de l’analyse objet à la conception;
• Intégrer les fonctions métier et applicatives dans
l’architecture technique;
• Adapter la conception génériques aux spécificités
fournies par l’analyse
Conception Préliminaire
• Éléments Utilisés
Poste Comptable
Serveur WEB
« application »
APCOMPTA.exe XXX.War
Client SAP
YYY.War
Poste AGENT
« application »
ApAgent.exe
Conception Préliminaire
• 2. Développement du Modèle
d’Exploitation
– 2.b. Identifier les composants distribués à partir des catégories
d’analyse
• Transformer chaque catégorie d’analyse représentant des
concepts du domaine, en en composant d’exploitation
• Arranger au besoin ce découpage en prenant en compte des
critère de conception (regroupement de plusieurs catégorie dans
un composant etc.)
• Assimiler tout progiciel à un composant supplémentaire et utiliser
les technique d’analyse et de conception propre à l’EAI
Conception Préliminaire
« EJB »
Facturation « EJB »
« EJB » Produit
Commande
« EJB »
Client
Conception Préliminaire
… … …
Conception Préliminaire
«DB Instance »
BDCentrale
« DB Instance »
RefClients
Conception Préliminaire
• 2. Développement du Modèle d’Exploitation
– 2.e Énumérer les interfaces Utilisateurs
• Lister les vues d’IHM de chaque application ainsi leurs
principales fonctions.
Stockage Données
Accès Données
« category »
Métier
Facturation
« category »
Facturation « category »
Facturation
Application
Présentation
« category »
« category »
Facturation
Facturation
Conception Préliminaire
• 3. Développement du Modèle Logique
« category » « category »
Facturation Commande
« category »
Client
« layer »
Métier
« category » « category »
Facturation Commande
« category »
Client
Conception Préliminaire
• 4. Définir les interfaces des catégories
– Objectifs:
• S’appuyer sur les catégories de conception pour
construire les classes, les vues d’IHM, les
interfaces, les tables et les méthodes constituant
des items prêts à coder du système.
Conception Détaillée
• 1. Concevoir le Modèle Logique
– Concevoir les classes