Principes de Paquetage. Packaging et Marketing



Documents pareils
Généralités sur le Langage Java et éléments syntaxiques.

Utiliser Java sans BlueJ

Chapitre I : le langage UML et le processus unifié

Analyse,, Conception des Systèmes Informatiques

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Méthodes de développement. Analyse des exigences (spécification)

ACTIVITÉ DE PROGRAMMATION

Université de Bangui. Modélisons en UML

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Héritage presque multiple en Java (1/2)

IFT2255 : Génie logiciel

Analyse et Conception objet du logiciel Analyse et conception objet du logiciel : Méthode de conception objet et notation UML.

Java - la plateforme

Cours 1 : Introduction. Langages objets. but du module. contrôle des connaissances. Pourquoi Java? présentation du module. Présentation de Java

Processus d Informatisation

Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Programmation par composants (1/3) Programmation par composants (2/3)

Programmation Orientée Objet

Apprendre la Programmation Orientée Objet avec le langage Java (avec exercices pratiques et corrigés)

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

2. Activités et Modèles de développement en Génie Logiciel

TP1. Outils Java Eléments de correction

Conception, architecture et urbanisation des systèmes d information

Proposition de sujet de thèse CIFRE EUROCOPTER / LGI2P

Cours Composant 2. Qualité logicielle et spécications algébriques

Corrigé des exercices sur les références

Programme et contenus Licence d'informatique de Lille, parcours MIAGE, en alternance ou en formation continue (13:40)

RÉUSSIR L AUTOMATISATION DU PROCESSUS DE TEST FONCTIONNEL

Cours 1: Java et les objets

Brique BDL Gestion de Projet Logiciel

Java 7 Les fondamentaux du langage Java

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Java Licence professionnelle CISII,

Le Processus RUP. H. Kadima. Tester. Analyst. Performance Engineer. Database Administrator. Release Engineer. Project Leader. Designer / Developer

Chapitre 10. Les interfaces Comparable et Comparator 1

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Agile 360 Product Owner Scrum Master

Rational Unified Process

MODELISATION UN ATELIER DE MODELISATION «RATIONAL ROSE»

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février :30 à 20:30

Génie Logiciel avec Ada. 4 février 2013

Stages ISOFT : UNE SOCIETE INNOVANTE. Contact : Mme Lapedra, stage@isoft.fr

2.DIFFERENTS MODELES DE CYCLE DE VIE

Communiqué de Lancement

Logiciel Libre Cours 3 Fondements: Génie Logiciel

Conception d'un système d'information WEB avec UML Par Ass SERGE KIKOBYA

Chapitre 5 LE MODELE ENTITE - ASSOCIATION

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

GESTION DE PROJET SÉANCE 2 : LES CYCLE DE VIE D'UN PROJET

Résumé CONCEPTEUR, INTEGRATEUR, OPERATEUR DE SYSTEMES CRITIQUES


Générer du code à partir d une description de haut niveau

LICENCE : INFORMATIQUE GENERALE

UML (Paquetage) Unified Modeling Language

Ingénierie des Modèles. Méta-modélisation

Le génie logiciel. maintenance de logiciels.

TP1 : Initiation à Java et Eclipse

But de cette introduction à la gestion de projets :

Génie Logiciel. Rappels. C. Crochepeyre Génie Logiciel Rappels 1

Les diagrammes de modélisation

Merise. Introduction

Gestion de projet Agile. STS IRIS Module «Gérer et organiser un projet informatique»

Objets et Programmation. origine des langages orientés-objet

LES INTERFACES HOMME-MACHINE

C est quoi le SWAT? Les équipes décrites par James Martin s appellent SWAT : Skilled With Advanced Tools.

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

JAVA 8. JAVA 8 - Les fondamentaux du langage. Les fondamentaux du langage Java. Avec exercices pratiques et corrigés JAVA 8 29,90.

Architecture d'entreprise : Guide Pratique de l'architecture Logique

Eclipse atelier Java

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Conception. Génie Logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 17/04/2007

Langage Java. Classe de première SI

TP1 : Initiation à Java et Eclipse

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Initiation à JAVA et à la programmation objet.

Sommaire. Conduite de projet Méthode d analyse et de conception. Processus unifié. Objectifs d un processus de développement

Java Licence Professionnelle CISII, Cours 2 : Classes et Objets

Plan Pédagogique du cours

Auto-évaluation Programmation en Java

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

Framework Agile Global

Gestion de projets logiciels. Xavier Dubuc

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Analyse hiérarchique de tâches (AHT)

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Introduction au Génie Logiciel

Méthodes d évolution de modèle produit dans les systèmes du type PLM

Gé nié Logiciél Livré Blanc

GL Le Génie Logiciel

Introduction au génie logiciel

Développement d'un projet informatique

Lambda! Rémi Forax Univ Paris-Est Marne-la-Vallée

Plan du cours. Historique du langage Nouveautés de Java 7

Systeme d'exploitation

Par Laurent DESECHALLIERS. Mastère Spécialisé en Management de Projets en Milieu Industriel. CESI de Rouen Promotion 2002/2003.

Comprendre Merise et la modélisation des données

Langage et Concepts de Programmation Objet. 1 Attributs et Méthodes d instance ou de classe. Travaux Dirigés no2

Cours en ligne Développement Java pour le web

Transcription:

Génie Logiciel Conception Principes de Paquetage Packaging et Marketing

La conception Définition Générale : Activité créatrice qui consiste à élaborer un projet, ou une partie des éléments le constituant, en partant des besoins exprimés, des moyens existants et des possibilités technologiques dans le but de créer un produit ou un service.

Conception fonctionnelle Première étape de la conception d'un système, qui consiste à définir les fonctions des composantes d'un système et leurs relations fonctionnelles.

4 Conception ascendante Principe de conception d'un programme informatique par lequel on définit d'abord les fonctions élémentaires pour ensuite les utiliser pour définir des fonctions de plus en plus spécifiques. Rappel les PID sont toujours positifs.

5 Conception descendante Méthode de conception de programme dans laquelle la construction du programme se fait en décomposant le problème global en sous-problèmes, eux-mêmes décomposés en actions plus élémentaires jusqu'à atteindre le niveau choisi pour la description du problème dans un langage donné.

6 La conception de système La conception de système inclut la définition de l'architecture des matériels et des logiciels, ainsi que celle des composants, des modules, des interfaces et des données. En informatique, l'analyse de système est étroitement liée à la conception de système. En fait, à la différence de l'analyse de système où l'on met l'accent sur la décomposition du problème, on s'emploie, dans la conception de système, à trouver les solutions.

7 Ouais bon d'accord Une définition de la conception ne nous donne pas beaucoup d'idée sur comment en faire une... Essentiellement c'est traduire des exigences en une solution. Analyse = comprendre les exigences Concevoir = construire une solution

8 Deux AXES majeurs! > LE CLIENT > LE MAINTENEUR

9 Les Risques Rigidité Fragilité immobilité

10 Mais! On code en Objet On utilise des interfaces On fait une conception avec les DP On utilise UML Alors?

11 Alors c'est les paquetages La gestion des dépendances doit être faite avec rigueur et trois cibles : Robustesse Extensibilité Réutilisabilité

Les paquetages Les paquetages offrent les mêmes challenges que les classes: Lisibilité Réutilisabilité Ouverture/fermeture De plus il forment une unité de programmation beaucoup plus efficace pour l'organisation du travail et pour définir l'architecture logiciel

13 Dépendance! Si absent => dysfonctionnement Si différent => dysfonctionnement Si modifié => Re-compilation? => Continuité Syntaxique? => Continuité Sémantique?

14 Règles de Packaging :) Principe d'ouverture fermeture Livraison <=> Réutilisation Fermeture commune Dépendances acycliques Dépendance et Stabilité Stabilité et Abstraction

15 Principe d'ouverture fermeture Le principe d'ouvert / Fermé que l'on connaît bien sur les Objets avec la création d'interfaces et de Classes d'implémentation, s'applique aussi sur les paquetages. Stratégie : Réduire le nombre de classe et d'interface publiques Privilégier des interfaces au classes Utiliser le Polymorphisme Simplifier et concentrer le rôle du paquetage

Exercice 16 Dans les Design pattern quels sont ceux qui sont une application de ce principe d'ouverture fermeture. Ouvert au extentions Fermé au Modifications

17 Dépendance et Stabilité On doit dépendre de choses plus stable. Plus de client impose plus de stabilité

18 Mesurer la stabilité Inverse du risque de changement Plus le module dépend d'autres modules moins il est stable Plus un module est abstrait plus il est facile de le garder stable Hauteur dans le graphe de dépendance

19 Valeur de la stabilité Plus un module est fermé donc stable plus il a de valeur pour les développeurs. Plus les module stables (bcp de clients) sont effectivement stables plus l'application dans son ensemble est stable Identifier et concevoir les paquetage stables est une tâche importante. Penser que vous pouvez agrandir votre paquetage avec de nouvelles interfaces sans trop de danger

Exercice 20 Proposez un paquetage «stable» pour un des logiciel suivants : -logiciel de gestion de bibliothèque -logiciel de gestion de tâches -logiciel de gestion de comptes bancaire -logiciel «Astéroides» -logiciel de labyrinthe Expliquer pourquoi votre paquetage est stable. Critiquer la taille et la cohésion de votre paquetage Avez vous définie une classes ou que des interfaces

21 Livraison <=> Réutilisation Si c'est livré c'est (ré)utilisable! La granularité pour la réutilisation est le paquetage pas la classe! Seul les paquetages livrés sont potentiellement réutilisables

22 Réutilisation Le code reste la propriété de l'auteur (pas de bidouilles dans le paquetage d'un autre), c'est aussi lui qui corrige les bugs. Je veux pas le savoir, i.e. Pourvu que cela marche je cherche pas a savoir pourquoi, (sauf devant la machine a café quand on a épuisé les thèmes filles/mecs, cinéma, friends etc) Livraison = Publication = mise en forme

23 Fermeture commune Les classes qui dépendent d'un même concept doivent être placé dans le même paquetage Si le concept change toutes les classes concernées sont dans cet unique paquetage. L'unité de fermeture est le paquetage, la modification d'un concept force la réouverture, il est important que le nombre de paquetage réouverts soit minimal. Le rôle de l'analyse qui est d'identifier les concepts importants d'un logiciel est souligné ici.

24 Dépendances acycliques Un module doit toujours dépendre de modules plus stables que lui. Si cette règle est respecté alors le graphe de dépendance est acyclique En cas de cycle vous devez faire un refactoring pour éliminer ce cycle

25 Stabilité et Abstraction Pour fabriquer un paquetage stable il faut travailler a identifier de bonnes abstractions Ne rien sous entendre sur l'implémentation Plus c'est abstrait plus c'est stable

26 Exemples package fr.umlv.dr.assertions; public class Assertions { } public static void racinecarre(int int x) { assert (x > 0) ; System.out.println(java.lang.Math.sqrt((double double)x)); } public static void main(string[] args) { } racinecarre(100); racinecarre(-67);

27 Livraisons Définition d'une livraison MAVEN!! Définition des 3 chiffres dans un numéro de version Définition du terme configuration