Conception Principes de Paquetage Packaging et Marketing

27
Copyright, 2000 -2004© Dominique Revuz [email protected] Conception Conception Génie Logiciel Principes de Paquetage Principes de Paquetage Packaging et Marketing Packaging et Marketing

Transcript of Conception Principes de Paquetage Packaging et Marketing

Copyright, 2000 -2004© Dominique Revuz [email protected]

Conception Conception

Génie Logiciel

Principes de PaquetagePrincipes de Paquetage

Packaging et Marketing Packaging et Marketing

Copyright, 2000 -2004© Dominique Revuz [email protected]

La conceptionLa conception

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

Copyright, 2000 -2004© Dominique Revuz [email protected]

Conception fonctionnelleConception fonctionnelle

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

4

Copyright, 2000 -2004© Dominique Revuz [email protected]

Rappelles PID sont toujours positifs.

Principe de conception d'un programme Principe de conception d'un programme informatique par lequel on définit d'abord informatique par lequel on définit d'abord les fonctions élémentaires pour ensuite les les fonctions élémentaires pour ensuite les utiliser pour définir des fonctions de plus utiliser pour définir des fonctions de plus en plus spécifiques. en plus spécifiques.

Conception ascendanteConception ascendante

5

Copyright, 2000 -2004© Dominique Revuz [email protected]

Conception descendanteConception descendante

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

6

Copyright, 2000 -2004© Dominique Revuz [email protected]

La conception de systèmeLa conception de système

• La conception de système inclut la définition de La conception de système inclut la définition de l'architecture des matériels et des logiciels, ainsi que l'architecture des matériels et des logiciels, ainsi que celle des composants, des modules, des interfaces et celle des composants, des modules, des interfaces et des données.des données.

• En informatique, l'analyse de système est En informatique, l'analyse de système est étroitement liée à la conception de système. En fait, étroitement liée à la conception de système. En fait, à la différence de l'analyse de système où l'on met à la différence de l'analyse de système où l'on met l'accent sur la décomposition du problème, on l'accent sur la décomposition du problème, on s'emploie, dans la conception de système, à trouver s'emploie, dans la conception de système, à trouver les solutions. les solutions.

7

Copyright, 2000 -2004© Dominique Revuz [email protected]

Ouais bon d'accord Ouais bon d'accord

• Une définition de la conception ne nous Une définition de la conception ne nous donne pas beaucoup d'idée sur comment en donne pas beaucoup d'idée sur comment en faire une ...faire une ...

• Essentiellement c'est traduire des Essentiellement c'est traduire des exigences en une solution.exigences en une solution.

• Analyse = comprendre les exigencesAnalyse = comprendre les exigences

• Concevoir = construire une solutionConcevoir = construire une solution

8

Copyright, 2000 -2004© Dominique Revuz [email protected]

Deux AXES majeurs ! Deux AXES majeurs !

> LE CLIENTLE CLIENT

> LE MAINTENEURLE MAINTENEUR

9

Copyright, 2000 -2004© Dominique Revuz [email protected]

Les Risques Les Risques

• Rigidité Rigidité

• FragilitéFragilité

• immobilitéimmobilité

10

Copyright, 2000 -2004© Dominique Revuz [email protected]

Mais !Mais !

• On code en Objet On code en Objet

• On utilise des interfacesOn utilise des interfaces

• On fait une conception avec les DPOn fait une conception avec les DP

• On utilise UML On utilise UML

• Alors ? Alors ?

11

Copyright, 2000 -2004© Dominique Revuz [email protected]

Alors c'est les paquetagesAlors c'est les paquetages

• La gestion des dépendances doit être faite La gestion des dépendances doit être faite avec rigueur et trois cibles :avec rigueur et trois cibles :– Robustesse Robustesse

– ExtensibilitéExtensibilité

– Réutilisabilité Réutilisabilité

Copyright, 2000 -2004© Dominique Revuz [email protected]

Les paquetagesLes paquetages

• Les paquetages offrent les mêmes challenges Les paquetages offrent les mêmes challenges que les classes:que les classes:– LisibilitéLisibilité– RéutilisabilitéRéutilisabilité– Ouverture/fermeture Ouverture/fermeture

• De plus il forment une unité de programmation De plus il forment une unité de programmation beaucoup plus efficace pour l'organisation du beaucoup plus efficace pour l'organisation du travail et pour définir l'architecture logiciel travail et pour définir l'architecture logiciel

13

Copyright, 2000 -2004© Dominique Revuz [email protected]

Dépendance !Dépendance !

• Si absent => dysfonctionnementSi absent => dysfonctionnement

• Si différent => dysfonctionnementSi différent => dysfonctionnement

• Si modifié => Re-compilation ?Si modifié => Re-compilation ? => Continuité Syntaxique ?=> Continuité Syntaxique ? => Continuité Sémantique ?=> Continuité Sémantique ?

14

Copyright, 2000 -2004© Dominique Revuz [email protected]

Règles de Règles de Packaging :)Packaging :)

• Principe d'ouverture fermeture Principe d'ouverture fermeture • Livraison <=> RéutilisationLivraison <=> Réutilisation• Fermeture communeFermeture commune• Dépendances acycliques Dépendances acycliques • Dépendance et StabilitéDépendance et Stabilité• Stabilité et AbstractionStabilité et Abstraction

15

Copyright, 2000 -2004© Dominique Revuz [email protected]

Principe d'ouverture fermeture Principe d'ouverture fermeture

• Le principe d'ouvert / Fermé que l'on connaît bien Le principe d'ouvert / Fermé que l'on connaît bien sur les Objets avec la création d'Interfaces et de sur les Objets avec la création d'Interfaces et de Classes d'implémentation, s'applique aussi sur les Classes d'implémentation, s'applique aussi sur les paquetages.paquetages.

• Stratégie :Stratégie :– Réduire le nombre de classe et d'interface publiquesRéduire le nombre de classe et d'interface publiques– Privilégier des interfaces au classes Privilégier des interfaces au classes – Utiliser le Polymorphisme Utiliser le Polymorphisme – Simplifier et concentrer le rôle du paquetageSimplifier et concentrer le rôle du paquetage

16

Copyright, 2000 -2004© Dominique Revuz [email protected]

ExerciceExercice

Dans les Design pattern quels sont ceux qui sont une application de ce Dans les Design pattern quels sont ceux qui sont une application de ce principe d'ouverture fermeture.principe d'ouverture fermeture.

Ouvert au extentions Ouvert au extentions Fermé au Modifications Fermé au Modifications

17

Copyright, 2000 -2004© Dominique Revuz [email protected]

Dépendance et StabilitéDépendance et Stabilité

• On doit dépendre de choses plus stable.On doit dépendre de choses plus stable.

• Plus de client impose plus de stabilitéPlus de client impose plus de stabilité

18

Copyright, 2000 -2004© Dominique Revuz [email protected]

Mesurer la stabilitéMesurer la stabilité

• Inverse du risque de changementInverse du risque de changement

• Plus le module dépend d'autres modules Plus le module dépend d'autres modules moins il est stablemoins il est stable

• Plus un module est abstrait plus il est Plus un module est abstrait plus il est facile de le garder stablefacile de le garder stable

• Hauteur dans le graphe de dépendanceHauteur dans le graphe de dépendance

19

Copyright, 2000 -2004© Dominique Revuz [email protected]

Valeur de la stabilitéValeur de la stabilité

• Plus un module est fermé donc stable plus il a de Plus un module est fermé donc stable plus il a de valeur pour les développeurs.valeur pour les développeurs.

• Plus les module stables (bcp de clients) sont Plus les module stables (bcp de clients) sont effectivement stables plus l'application dans son effectivement stables plus l'application dans son ensemble est stableensemble est stable

• Identifier et concevoir les paquetage stables est une Identifier et concevoir les paquetage stables est une tâche importante.tâche importante.

• Penser que vous pouvez agrandir votre paquetage Penser que vous pouvez agrandir votre paquetage avec de nouvelles interfaces sans trop de dangeravec de nouvelles interfaces sans trop de danger

20

Copyright, 2000 -2004© Dominique Revuz [email protected]

ExerciceExercice

Proposez un paquetage « stable » pour un des logiciel suivants :Proposez un paquetage « stable » pour un des logiciel suivants :

-logiciel de gestion de bibliothèque-logiciel de gestion de bibliothèque-logiciel de gestion de tâches-logiciel de gestion de tâches-logiciel de gestion de comptes bancaire-logiciel de gestion de comptes bancaire-logiciel « Astéroides » -logiciel « Astéroides » -logiciel de labyrinthe -logiciel de labyrinthe

Expliquer pourquoi votre paquetage est stable.Expliquer pourquoi votre paquetage est stable.Critiquer la taille et la cohésion de votre paquetage Critiquer la taille et la cohésion de votre paquetage Avez vous définie une classes ou que des interfacesAvez vous définie une classes ou que des interfaces

21

Copyright, 2000 -2004© Dominique Revuz [email protected]

Livraison <=> RéutilisationLivraison <=> Réutilisation

• Si c'est livré c'est (ré)utilisable !Si c'est livré c'est (ré)utilisable !

• La granularité pour la réutilisation est le La granularité pour la réutilisation est le paquetage pas la classe !paquetage pas la classe !

• Seul les paquetages livrés sont Seul les paquetages livrés sont potentiellement réutilisablespotentiellement réutilisables

22

Copyright, 2000 -2004© Dominique Revuz [email protected]

Réutilisation Réutilisation

• Le code reste la propriété de l'auteur (pas Le code reste la propriété de l'auteur (pas de bidouilles dans le paquetage d'un de bidouilles dans le paquetage d'un autre), c'est aussi lui qui corrige les bugs.autre), c'est aussi lui qui corrige les bugs.

• Je veux pas le savoir, i.e. Pourvu que cela Je veux pas le savoir, i.e. Pourvu que cela marche je cherche pas a savoir pourquoi, 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)(sauf devant la machine a café quand on a épuisé les thèmes filles/mecs, cinéma, friends etc)

• Livraison = Publication = mise en formeLivraison = Publication = mise en forme

23

Copyright, 2000 -2004© Dominique Revuz [email protected]

Fermeture communeFermeture commune

• Les classes qui dépendent d'un même concept doivent être Les classes qui dépendent d'un même concept doivent être placé dans le même paquetageplacé dans le même paquetage

• Si le concept change toutes les classes concernées sont Si le concept change toutes les classes concernées sont dans cet unique paquetage. dans cet unique paquetage.

• L'unité de fermeture est le paquetage, la modification d'un L'unité de fermeture est le paquetage, la modification d'un concept force la réouverture, il est important que le concept force la réouverture, il est important que le nombre de paquetage réouverts soit minimal.nombre de paquetage réouverts soit minimal.

• Le rôle de l'analyse qui est d'identifier les concepts Le rôle de l'analyse qui est d'identifier les concepts importants d'un logiciel est souligné ici.importants d'un logiciel est souligné ici.

24

Copyright, 2000 -2004© Dominique Revuz [email protected]

Dépendances acycliquesDépendances acycliques

• Un module doit toujours dépendre de Un module doit toujours dépendre de modules plus stables que lui.modules plus stables que lui.

• Si cette règle est respecté alors le graphe Si cette règle est respecté alors le graphe de dépendance est acyclique de dépendance est acyclique

• En cas de cycle vous devez faire un En cas de cycle vous devez faire un refactoring pour éliminer ce cycle refactoring pour éliminer ce cycle

25

Copyright, 2000 -2004© Dominique Revuz [email protected]

Stabilité et AbstractionStabilité et Abstraction

• Pour fabriquer un paquetage stable il faut Pour fabriquer un paquetage stable il faut travailler a identifier de bonnes travailler a identifier de bonnes abstractionsabstractions

• Ne rien sous entendre sur Ne rien sous entendre sur l'implémentation l'implémentation

• Plus c'est abstrait plus c'est stablePlus c'est abstrait plus c'est stable

26

Copyright, 2000 -2004© Dominique Revuz [email protected]

ExemplesExemples

packagepackage fr.umlv.dr.assertions; fr.umlv.dr.assertions;

public class Assertions {public class Assertions {

publicpublic staticstatic voidvoid racineCarre( racineCarre(intint x) x){{

assertassert (x > 0) ; (x > 0) ;System.out.println(java.lang.Math.sqrt((System.out.println(java.lang.Math.sqrt((doubledouble)x));)x));

}}

publicpublic staticstatic voidvoid main(String[] args) { main(String[] args) {

racineCarre(100);racineCarre(100);racineCarre(-67);racineCarre(-67);

}}

}}

27

Copyright, 2000 -2004© Dominique Revuz [email protected]

LivraisonsLivraisons

• Définition d'une livraison Définition d'une livraison – MAVEN !!MAVEN !!

• Définition des 3 chiffres dans un numéro Définition des 3 chiffres dans un numéro de versionde version

• Définition du terme configurationDéfinition du terme configuration