Upload
mansouri-khalifa
View
165
Download
4
Embed Size (px)
Citation preview
Université Hassan II de CasablancaENSET de Mohammedia
Département Mathématiques et Informatique
COURS INGENIERIE SYSTEMES
1ère Partie :
Introduction
Professeur :
M. Khalifa MANSOURI
09/10/20172
Ingénierie Systèmes : Introduction
Plan du cours
1. Rappels
2. Notion de modèle
3. Méthodes et techniques
4. UML et le processus de développement
5. Conception Orientée objets
RAPPELSQualité d’un Logiciel
• La qualité d’un logiciel se mesure par rapport à plusieurs critères :– Répondre aux spécifications fonctionnelles :
• Une application est créée pour répondre, tout d’abord, aux besoins fonctionnels des entreprises.
– Les performances:• La rapidité d’exécution et Le temps de réponse• Doit être bâtie sur une architecture robuste.• Eviter le problème de montée en charge
– La maintenance:• Une application doit évoluer dans le temps.• Doit être fermée à la modification et ouverte à l’extension• Une application qui n’évolue pas meurt.• Une application mal conçue est difficile à maintenir, par suite elle
finit un jour à la poubelle.
Qualité d’un Logiciel
• La qualité d’un logiciel se mesure par rapport à plusieurs critères : (Suite)– Sécurité
• Garantir l’intégrité et la sécurité des données
– Portabilité• Doit être capable de s’exécuter dans différentes plateformes.
– Capacité de communiquer avec d’autres applications distantes.– Disponibilité et tolérance aux pannes– Capacité de fournir le service à différents type de clients :
• Client lourd : Interfaces graphiques • Interface Web : protocole Http• Téléphone : SMS• ….
– Design de ses interfaces graphiques• Charte graphique et charte de navigation• Accès via différentes interfaces (Web, Téléphone, … etc.)
– Coût du logiciel
Génie Logiciel
• Pour apporter une réponse à tous ces problèmes, le génie logiciel s’intéresse particulièrement à la manière dont le code source d’un logiciel est spécifié puis produit. Ainsi, le génie logiciel touche au cycle de vie des logiciels : – l’analyse du besoin,
– l’élaboration des spécifications,
– la conception,
– le développement,
– la phase de test,
– la maintenance.
09/10/20177
Génie logiciel: Méthode de qualité (Méthode de Mc Call)
Génie Logiciel
Les caractéristiques opérationnelles (product operation)
Point de vue utilisateur
La capacité d’évolution (product revision)
Point de vue développeur
L’adaptabilité (product transition)
Point de vue communication
conformité aux besoinsFiabilitéEfficacitéIntégritéUtilisabilité
MaintenabilitéSouplesse testabilité
PortabilitéRéutilisabilitéinteropérabilité
Les facteurs de qualité:
Génie Logiciel09/10/2017 8
Les phases (plus courantes) de développement logiciel
Spécification des besoins
Conception
Implémentation
Tests
09/10/201710
• Les systèmes deviennent de plus en plus complexes et dépassent lamaîtrise et la compréhension par un seul individu. Le recours au génie logiciels’avère très important.
• Le génie logiciel est une méthodologie qui s’efforce à couvrir toutes lesétapes du processus de développement d’un logiciel, y compris les étapes demodélisation.
• À la fin de chaque étape de modélisation, des modèles sont fournis.
Notion du modèle
Notion du modèle
09/10/201711
• Modèle: représentation abstraite et simplifiée d’une entité(phénomène, processus, système, etc.) du monde réel.
• Un modèle facilite la compréhension du domaine. Et parconséquent facilite la communication entre les intervenants.
Notion du modèle
09/10/201712
• Le modèle est présenté sous forme de schéma ou diagrammedans lequel on trouve des éléments graphiques et du texte
• Les éléments graphiques sont des symboles dont lasignification est définie par le formalisme utilisé
• Le texte précise la portée des symboles et complètel’information.
Notion du modèle
09/10/201713
• Dans plusieurs domaines, on utilise le modèle comme langagevisuel pour représenter de manière abstraite une entité.
• Le modèle peut remplacer une longue description textuellepar un schéma ou diagramme plus facile et plus rapide àinterpréter.
Plan d’implantation de la construction dans son environnement
Plan détaillés des différents locaux
Plan de câblagePlan de d’assainissement
Notion du modèle
Modèle Conceptuel de Données
Notion du modèle
NumMatr
Nom
Nom
Localité
Téléphone
POLICLINIQUE
.
.
MEDCINS
.
SPECIALITE
Valeur .Travaille
Possède
0-N 0-N
0-N 0-N
• Exemples en BDD
Modèle Logique de Données
Notion du modèle
TRAVAIL
Nom NumMatLocalité
POSSESSION
NumMatr Valeur
MEDECIN S
NumMatr Nom
POLICLINIQUE
Nom TéléphoneLocalité
SPECIALITE
Valeur
• Exemples en BDD
09/10/201721
• La modélisation n’est pas une spécialité en soi mais plutôt une aptitude oucompétence additionnelle que peut acquérir:
• un ingénieur
• un gestionnaire
• un analyste
• ou un technicien
• Selon son champ d’intervention, le modélisateur crée, documente etcommunique son modèle.
Qui doit modéliser?
Notion du modèle
09/10/201722
• La modélisation est souvent faite par la maitrise d’œuvreinformatique (MOE)
• La maitrise d’ouvrage (MOA) dispose de toutes lesinformations et procédures du métier
• Une forte nécessité de coordination entre le MOE et le MOApour bien réussir le projet.
• La relation entre le MOE et le MOA est un contrat qui fixe leursengagements mutuels
Qui doit modéliser?
Notion du modèle
09/10/201723
Modéliser un système avant sa réalisation permet de:
• Mieux comprendre le fonctionnement du système
• Maitriser sa complexité et assurer sa cohérence
• Faciliter la communication entre les intervenants
• Mieux répartir les tâches entre les intervenants
• Assurer une qualité élevée et offrir une meilleuremaintenabilité
• Réduire les coûts et les délais
La création d’un modèle est indispensable
Pourquoi modéliser?
Notion du modèle
09/10/201724
• La création du modèle se fait selon une méthode.
• Depuis les années 80, plusieurs recherches sur la méthodologiede développement des logiciels
• Emergence de plusieurs méthodes (plus de 50 en début desannées 90)
Comment modéliser?
Notion du modèle
Méthodes et techniques
09/10/201726
• Technique de modélisation objet (Object Modeling Technique)
• Permet de développer des systèmes orientés objet
• Contient trois diagrammes principaux :
• diagramme d’objet: contient des classes, des attributs et des méthodes
• Diagramme dynamique: représente une vue de transition d'état sur lemodèle. Les principaux concepts sont des états, transitions entre états, etdes événements pour déclencher des transitions.
• Diagramme fonctionnel: Le modèle fonctionnel gère la perspective deprocessus du modèle, ce qui correspond à peu près à des diagrammes deflux de données.
OMT (1991) de James RUMBAUGH
09/10/201727
• Ingénierie logicielle orientée objet (Object-oriented softwareengineering), c’est un langage et une méthodologie demodélisation objet
OOSE (1992) de Ivar JACOBSON
Méthodes et techniques
09/10/201728
• Méthodologie et langage de modélisation orienté objetlargement utilisé dans l’analyse et la conception orientée objet
• Les aspects méthodologiques de la méthode Booch ont été incorporés dansplusieurs méthodologies et processus
OOD (1993) de Grady BOOCH
Méthodes et techniques
09/10/201729
• La création du modèle se fait selon un formalisme.
• Le formalisme, dans le contexte de modélisation, sert à définirles symboles, les règles, les conventions, la structure, etc.
• Un formalisme peut se qualifier comme langage de notationvisuel et structuré.
Concept de formalisme
Méthodes et techniques
Il s’agit d’un langage de modélisation
09/10/201730
• Chaque méthode est spécialisée et adaptée à une démarche particulière,voire un secteur d’activité particulier
• Développement indépendant: incompatibilité, redondance, notation outerminologie différente
• Chaque méthode dispose de ses propres moyens de représentation(graphique, diagramme, plan, organigramme)
Recherche d’un langage unique
• Utilisable dans toute méthode Objet
• Utilisable dans toutes les étapes du cycle de vie d’un logiciel
• Compatible avec les principaux méthodes orientées objet
Méthodes et techniques
Langage de modélisation
09/10/201731
• En octobre 1994, Grady BOOCH et James (OOD) et RUMBAUGH (OMT) se sontréunis au sein de la société Rational: méthode commune qui intègre lesprincipaux avantages des différentes méthodes connues.
• Lors de OOPSLA’95 (Object Oriented Programming Systems, Languages andApplications, la grande conférence de la programmation orientée objets),UNIFIED METHOD V0.8 a été présentée.
• En 1996, Ivar Jacobson (OOSE) a rejoigné l’équipe
• Conférence OOPSLA’96: Naissance UML (Unified Modeling Langage)
Unification des techniques
UML : langage de modélisation
Méthodes et techniques
09/10/201733
OMT-1 OOSEBouch’91Autres méthodes
Partenaires UML (IBM, Microsoft, Oracle, HP,
Rational, …
Bouch’93 OMT-2
OOPSLA’95
OOPSLA’96
Soumission à l’OMG Janvier 97
Soumission à l’OMG Novembre 97
Unified Method 0.8
UML 0.9 & 0.91
UML 1.0
UML 1.1Adopté par l’OMG comme langage de modélisation
UML 2.1.12008
Méthodes et techniques
UML et le processus de développement
09/10/201735
• UML est un langage de modélisation et non une méthode.
• UML c’est langage graphique qui permet de représenter et decommuniquer les différents aspects d’un système d’information.
• UML couvre toutes les étapes du développement d’un systèmed’information.
Objectifs d’UML
09/10/201736
• UML est l'Unified Modeling Language standardisé par l'OMG (Object Management Group : http://www.omg.org), est un formalisme graphiqueissu de notations employées dans différentes méthodes objets.
• UML permet de décrire et concevoir des systèmes logiciels.
• UML sert à :– Décomposer le processus de développement,
– Mettre en relation les experts métiers et les analystes,
– Coordonner les équipes d'analyse et de conception,
– Migrer facilement vers une architecture
– Indépendant des langages de programmation
Qu’est ce que UML
09/10/201737
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èmesémantique : sens précis pour chaque notation
Qu’est ce que UML
09/10/201738
UML est caractérisé par :un travail d'expertutilise l’approche orientée objetnormalisé, richeFormel : sa notation limite les ambiguïté et les incompréhensionslangage ouvert
Indépendant du langage de programmationDomaine d'application : permet de modéliser n'importe quel système
Supporté par plusieurs outils (AGL) : Objecteering, Open tools, Rational Rose, PowerAMC, WinDesign, …
39
Diagramme dynamique
Diagramme Statique
Diagramme de séquence
Diagramme de Communication
Diagramme Etats Transitions
Diagramme d’activité
Diagramme d’objets
Diagramme de classes
Diagramme de structure composite
Diagramme de composants
Diagramme de profil
ComportementalStructurel
Diagramme de package
Diagramme
de déploiement
Diagramme deCas d’utilisation
Diagramme d’interaction
vue d’ensemble
Diagramme d’interaction
Diagramme de temps
Diagrammes d’UML
Les diagrammes
09/10/201740
Classes, ObjetsCollaboration, Séquences
Vision LogiqueUtilisateurs finauxFonctionnalités
Composants
Vision ImplémentationDéveloppeursGestion du logiciel
Déploiement
Vision DéploiementIngénieurs systèmeArchitecture du systèmeInstallationCommunication
Etats-Transition-Activité
Vision PrcessusIngénieurs systèmePerformanceChangements d’échelles???
Cas d’utilisationVision Cas
d’utilisation
Les vues
Diagrammes d’UML
09/10/201742
Diagrammes d’UML
• Découverte des besoins :– Diagramme de cas d’utilisation : décrit les fonctions du système selon
le point de vue ses futurs utilisateurs (Jacobson)– Diagramme de séquence : représentation des interactions temporelles
entre objets dans la réalisation d’une interface Homme Système
• Analyse :– Diagramme de classes : structure des données du système définies
comme un ensemble de relations entre classes– Diagramme d’objets : illustration des objets et de leurs relations– Diagramme de collaboration : représentation des interactions entre
objets– Diagramme d’états-transitions : représentation du comportement des
objets d’une classe en terme d’états et de transitions d’états– Diagramme d’activités : structure d’une opération en actions
09/10/201743
Diagrammes d’UML
Relation entre diagrammes et étapes du processus
• Conception :– Diagramme de séquence : représentation des
interactions temporelles entre objets dans la réalisation d’une opération
– Diagramme de déploiement : description du déploiement des composants sur les dispositifs matériels
– Diagrammes de composants : architecture des composants physiques d’une application
09/10/201744
Hardware / Software
CPU RAM ROM HDD
BIOS
CMOS
Système d’exploitation
Application
Hardware
Software
09/10/201745
Différents types de langage de programmation
OrdinateurCPU
Homme
Langage Machine
Langage humains
Langage Assembleur
Langages structurés:- Pascal, C …
Langages Orientés Objet- C++, Java ….
09/10/201748
Méthode Orientée Objet
• La méthode orientée objet permet de concevoir une application sous la forme d'un ensemble d'objets reliés entre eux par des relations
• Lorsque que l'on programme avec cette méthode, la première question que l’on se pose plus souvent est :
– «qu'est-ce que je manipule ? »,– Au lieu de « qu'est-ce que je fait ? ».
• L'une des caractéristiques de cette méthode permet de concevoir de nouveaux objets à partir d'objets existants.
• On peut donc réutiliser les objets dans plusieurs applications. • La réutilisation du code fut un argument déterminant pour venter les
avantages des langages à objets. • Pour faire la programmation orientée objet il faut connaître les concepts
suivant– Objet et classe– Héritage– Encapsulation (Accessibilité)– Polymorphisme
09/10/201749
Objet
• Un objet est une structure informatique définie par un état et un comportement
• Objet = état + comportement + Identité– L’état regroupe les valeurs instantanées de tous les attributs de l’objet.– Le comportement regroupe toutes les compétences et décrit les actions et les
réactions de l’objet. Autrement dit le comportement est défini par les opérations que l’objet peut effectuer.
• L’état d’un objet peut changer dans le temps.• Généralement, c’est le comportement qui modifie l’état de l’objet• Exemples:
v1:Voiture
Couleur="rouge"
Carburant=20
Puissance=120
demarrer()
accelerer()
Freiner()
État de l’objet
Comportement
:Fenetre
titre="WinWord"
largeur=400
hauteur=300
Deplacer()
agrandir()
fermer()
09/10/201750
Identité d’un Objet
• En plus de son état, un objet possède une identité qui caractérise son existence propre.
• Cette identité s’appelle également référence ou handlede l’objet.
• En terme informatique de bas niveau, l’identité d’un objet représente son adresse mémoire.
• Deux objets ne peuvent pas avoir la même identité : c’est-à-dire que deux objet ne peuvent pas avoir le même emplacement mémoire.
09/10/201751
Classes
• Les objets qui ont des caractéristiques communes sont regroupés dans une entité appelé classe.
• La classe décrit le domaine de définition d’un ensemble d’objets.
• Chaque objet appartient à une classe
• Les généralités sont contenues dans les classe et les particularités dans les objets.
• Les objets informatique sont construits à partir de leur classe par un processus qui s’appelle l’instanciation.
• Tout objet est une instance d’une classe.
09/10/201752
Caractéristique d’une Classes
• Une classe est définit par:
– Les attributs,
– Les méthodes.
• Les attributs permettent de décrire l’état des objets de cette classe.
– Chaque attribut est défini par :• Son nom,
• Son type,
• Éventuellement sa valeur initiale.
• Les méthodes permettent de décrire le comportement des objets de cette classe.
– Une méthode représente une procédure ou une fonction qui permet d’exécuter un certain nombre d’instructions.
• Parmi les méthode d’une classe, il existe deux méthodes particulières :
– Une méthode qui est appelée au moment de la création d’un objet de cette classe. Cette méthode est appelée CONSTRUCTEUR,
– Une méthode qui est appelée au moment de la destruction d’un objet. Cette méthode s’appelle le DESTRUCTEUR.
09/10/201753
Représentation d’une classe en UML
Nom de la classeAttributs
Méthodes
Les compartiments d’une classe peuvent être omis si leur contenu n’est pas pertinent dans le contexte d’un diagramme
09/10/201754
Attributs et opérations de la classe
• Les noms d’attributs d’une classe sont uniques.• Une opération définit une fonction appliquée à des
objets d’une classe
Nom de la classe
Nom_Attribut : type = valeur initiale
Nom_Operation ( liste_arguments) : type
09/10/201755
Exemples de classe• Une personne est définie par :
– son nom, son adresse et sa date de naissance. – Les opérations que l’on peut appliquer à un objet
Personne sont :• age() : méthode qui retourne l’âge de la personne• changerAdresse() : méthode qui permet de modifier
l’adresse de la personne
• Un point est défini par :– Ses coordonnées x et y– Les opérations l’on peut exécuter sur un objet Point
sont :• toString() : opération qui retourne une chaîne de
caractères de type Point(x,y)• distance(Point p) : opération qui retourne la distance
entre le point et un autre point p
• Un segment est défini par :– Deux point p1 et p2– Les opérations de la classe Segment sont:
• getLongueur() : opération qui retourne la longueur du segment
• appartient(Point p) : retourne si un point p appartient au segment ou non
Point
x : int
y : int
toString():String
distance( Point p ) : double
Personne
nom : String
adresse : String
dateNaissance:Date
age() : int
changerAdresse(String a) : void
Segment
p1 : Point
p2 : Point
getLongueur():double
appartient(Point p) : boolean
09/10/201756
Notion de paquetage
• Les paquetages offrent un mécanisme général pour la partition des modèles et le regroupement des éléments de la modélisation
• Chaque paquetage est représenté graphiquement par un dossier
• Les paquetages divisent et organisent les modèles de la même manière que les dossier organisent le système de fichier
Nom du paquetage
09/10/201757
Notion de paquetage
• Un paquetage peut contenir d’autres paquetages et d’autres éléments du modèle
• Les paquetages peuvent être liés par des relations de dépendance si un élément de l’un utilise un élément de l’autre.
awt sql
Client Commande
Produit
Un paquetage qui Contient la classe Client
Un paquetage qui Contient les classe Commande et Produit
Un paquetage qui Contient deux autres paquetages
java
09/10/201758
Encapsulation
• Les membres d’une classe peuvent être protégés en utilisant quatre niveaux de protection :– Public (+) : Accès à partir de toute entité interne ou externe à la classe– Protégé (#) : Accès à partir de la classe ou des classes dérivées – Privé (-) : accès à partir des opérations de la classe– Autorisation par défaut : chaque langage de programmation définit une
autorisation par défaut. Dans java, l’autorisation par défaut est package. Cela signifie que seules les classes du même package qui ont le droit d’accéder à ce membre.
• Exemple:
Personne
- nom : String
adresse : String
# dateNaissance : Date
+ age() : int
+ changerAdresse(String a) : void
09/10/201759
Exemple d’implémentation d’une classe avec Java
package metier;
public class Compte {
// Attributs
private int code;
protected float solde;
// Constructeur
public Compte(int c,float s){
code=c;
solde=s;
}
// Méthode pour verser un montant
public void verser(float mt){
solde+=mt;
}
// Méthode pour retirer un montant
public void retirer(float mt){
solde-=mt;
}
// Une méthode qui retourne l'état du compte
public String toString(){
return(" Code="+code+" Solde="+solde);
}
}
Compte
- code : int
# solde : float
+ Compte(int code, float solde)
+ verser(float mt):void
+ retirer(float mt):void
+ toString():String
60
Création des objets dans java
• Dans java, pour créer un objet d’une classe , On utilise la commande new suivie du constructeur de la classe.
• La commande new Crée un objet dans l’espace mémoire et retourne l’adresse mémoire de celui-ci.
• Cette adresse mémoire devrait être affectée à une variable qui représente l’identité de l’objet.
package test;
import metier.Compte;
public class Application {
public static void main(String[] args) {
Compte c1=new Compte(1,5000);
Compte c2=new Compte(2,6000);
c1.verser(3000);
c1.retirer(2000);
System.out.println(c1.toString());
}}
c1:Compte
Code=1
Solde=5000
verser(float mt)
retirer(float mt)
toString()
c2:Compte
code=2
solde=6000
verser(float mt)
retirer(float mt)
toString()
c1:Compte
Code=1
Solde=8000
verser(float mt)
retirer(float mt)
toString()
c1:Compte
code=1
solde=6000
verser(float mt)
retirer(float mt)
toString()
Code=1 Solde= 6000