IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Débats sur le développement - Le Best Of Discussion :

La formalisation de l'analyse ou de la conception aide t'elle à mieux programmer?


Sujet :

Débats sur le développement - Le Best Of

  1. #1
    Membre averti
    Inscrit en
    Août 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 307
    Points : 378
    Points
    378
    Par défaut La formalisation de l'analyse ou de la conception aide t'elle à mieux programmer?
    Après avoir lus plusieurs post dans ce forum, beaucoup semblent dire que une analyse ou une conception est le garant d'une bonne réussite du développement d'une application.

    D'abord personnellement, je pense qu'il est impossible de programmer sans faire au préalable ne serait ce que dans sa tête une analyse ou une conception. On conçoit toujours un plan de son future programme avant de se mettre à le programmer. Mais contrairement à ce que beaucoup me font croire, je ne pense pas que formaliser d'abord son analyse en utilisant un langage comme UML ajoutera quelque chose de plus dans le programme qu'on écrira plus tard. Pour moi UML permet tout au plus de communiquer son idée de conception à d'autres personnes.

    Si on a commit une erreur dans son analyse ou dans sa conception, ce n'est pas en utilisant UML qu'on pourra déceler cette erreur. En d'autre terme UML n'est pas une théorie mathématiques avec des théorèmes qui peuvent aider à valider l'analyse qu'on a fait.

    Si on a une idée de l'application qu'on veut programmer, on peut exprimer cette idée directement en utilisant un langage de programmation, plutôt qu'en passant par un langage intermédiaire (UML).

    D'autre part, on peut bien concevoir un programme (en UML), mais au moment de l'implémentation certaine information qui n'apparaissait pas au moment de la conception rendent la conception initial caduque, ou bien on trouve qu'on pouvait mieux faire, mais on n'a plus le temps de rentrer d'abord modifier sa conception initiale et on finit par écrire un programme qui n'a plus rien à voir avec la conception faite initialement.

    J'aimerais savoir concrètement comment UML ou tout autre formalisation de l'analyse/conception aide certaine personne à mieux développer

  2. #2
    Nouveau Candidat au Club
    Inscrit en
    Août 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 4
    Points : 0
    Points
    0
    Par défaut
    Si on a commit une erreur dans son analyse ou dans sa conception, ce n'est pas en utilisant UML qu'on pourra déceler cette erreur. En d'autre terme UML n'est pas une théorie mathématiques avec des théorèmes qui peuvent aider à valider l'analyse qu'on a fait.
    UML est un langage semi formel, c'est clair qu'il ne peut couvrir tous les aspects du système d'ailleurs on fait souvent des transformations des différents diagrammes UML vers des modèles formels comme petri avant de procéder à la vérification d'un système.. ceci dit UML nous aiderait toujours, à mon avis, de localiser au moins d'où proviennent les erreurs.

  3. #3
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    UML, c'est juste un méthode propre et agréable. Donc mieux, en général, qu'un truc fait à l'arrache sur un bout de torcheballe. Mais c'est tout. Je suis assez d'accord avec le posteur original.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  4. #4
    Expert confirmé

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Points : 4 170
    Points
    4 170
    Par défaut
    Citation Envoyé par kisitomomotene Voir le message
    Mais contrairement à ce que beaucoup me font croire, je ne pense pas que formaliser d'abord son analyse en utilisant un langage comme UML ajoutera quelque chose de plus dans le programme qu'on écrira plus tard.
    Lorsque tu fais ton analyse dans ta tête au départ tu as une vague idée de la façon dont ça va (devrait) fonctionner. Mais tu ne peux pas penser immédiatement à tout. Donc il va y avoir de nombreuses zones d'ombre dans l'analyse.

    Si tu fais l'effort de formaliser un peu la conception, si tu essaies de rédiger des documents qui décrivent plus précisément comment les choses vont fonctionner, tu vas automatiquement afiner ton analyse et rentrer d'avantage dans les détails.

    Ainsi, le fait de formaliser l'analyse va tout simplement permettre de la relire, de se rendre compte qu'il y a des contradictions avec telle ou telle chose...

    Après UML ou autre chose... c'est à voir. UML n'est qu'un langage.

    Si tu commences à coder ton idée, tu vas affiner l'analyse au fur et à mesure du codage. Si tu rencontres une incohérence et qu'il faut revoir la modélisation, tu risques d'être obligé de refaire complètement une grande partie du codage...
    L'intérêt d'avoir modélisé la conception, c'est que le modèle est moins détaillé que le code. Tu dois en principe pouvoir le faire et le modifier plus rapidement que le code en lui-même. Sans parler du fait qu'il sera sûrement plus lisible que 10 000 lignes de code...

    Maintenant de toute façon, si tu dois travailler en équipe dans un projet un tant soit peu important, tu n'auras pas le choix.
    Tu devras produire de la documentation technique pour que le code soit maintenable, pour communiquer l'architecture du code et de l'application aux autres développeurs...
    Tu devras également faire valider les grandes lignes des choix de conceptions par un comité technique ou autre... Tu devras réclamer un budget pour réaliser un projet...
    Dans tout ces cas de figures, il faudra que tu ais des éléments concrêts à communiquer aux décideurs. Il faudra les convaincres que ta solution est viable, que l'estimation des coûts est réaliste et qu'il serait difficile de faire mieux.
    Tu ne peux pas leur donner le code tout fait et leur dire débrouillez vous.
    Tu ne peux pas non plus te présenter les mains dans les poches et dire : "faite moi confiance, tout est très claire dans ma tête...".

    Après bien sûr, tout est une question d'échelle. Si c'est pour un petit projet avec une conception triviale, le problème est différent.

  5. #5
    Membre averti Avatar de _Xavier_
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mai 2009
    Messages : 311
    Points : 390
    Points
    390
    Par défaut
    Citation Envoyé par el_slapper Voir le message
    UML, c'est juste un méthode propre et agréable.
    Un langage ou une méthode ?

  6. #6
    Expert éminent sénior
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    6 803
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 6 803
    Points : 32 058
    Points
    32 058
    Par défaut
    Citation Envoyé par _Xavier_ Voir le message
    Un langage ou une méthode ?
    l'éternel débat. Strictement parlant, tu as raison, c'est un langage, mais la manière dont il s'utilise s'apparente à une méthode de modélisation.
    Les 4 règles d'airain du développement informatique sont, d'après Michael C. Kasten :
    1)on ne peut pas établir un chiffrage tant qu'on a pas finalisé la conception
    2)on ne peut pas finaliser la conception tant qu'on a pas complètement compris toutes les exigences
    3)le temps de comprendre toutes les exigences, le projet est terminé
    4)le temps de terminer le projet, les exigences ont changé
    Et le serment de non-allégiance :
    Je promets de n’exclure aucune idée sur la base de sa source mais de donner toute la considération nécessaire aux idées de toutes les écoles ou lignes de pensées afin de trouver celle qui est la mieux adaptée à une situation donnée.

  7. #7
    Membre émérite Avatar de Maximil ian
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 622
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 622
    Points : 2 973
    Points
    2 973
    Par défaut
    Je pense qu'UML et les autres méthodes/langages de modélisation ont deux utilités fondamentales :

    - Vecteur de communication d'un modèle. Que le diagramme UML soit placé dans un dossier de conception, d'architecture ou tracé sur un tableau lors d'une discussion sur le vif, le but est le même : faire circuler entre différents participants au projet un modèle représentant une partie de l'application ou de son comportement, soit directement, soit de façon différée via un document qui sera ensuite relu.

    - Aide à l'architecture et au design du code. Certains développeurs ont une intelligence visuelle et spatiale plus marquée que d'autres. Ils pensent mieux leur code et les interactions entre modules ou objets en traçant des schémas sur un bout de papier avant. D'autres en ont moins besoin et commencent directement à développer en recherchant un effet "emergent design".

    Donc pour répondre à ta question, oui la formalisation de la conception peut aider à mieux programmer. Attention cependant, plus la formalisation est poussée plus le risque de désynchronisation avec le code et des documents entre eux est grand.

    Par contre tu mentionnes l'analyse, c'est quelque chose de complètement différent. Ce travail consiste 1) à étudier l'existant et 2) à recueillir le besoin du client, exprimé oralement ou à l'écrit, puis le transformer en spécifications qui peuvent prendre des formes multiples. Là ça n'aide pas à mieux programmer, c'est juste que sans une liste des fonctionnalités attendues de l'application il n'y a rien à programmer !
    Pensez au bouton

  8. #8
    Membre averti
    Inscrit en
    Août 2005
    Messages
    307
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 307
    Points : 378
    Points
    378
    Par défaut
    Citation Envoyé par Maximilian Voir le message
    Par contre tu mentionnes l'analyse, c'est quelque chose de complètement différent. Ce travail consiste 1) à étudier l'existant et 2) à recueillir le besoin du client, exprimé oralement ou à l'écrit, puis le transformer en spécifications qui peuvent prendre des formes multiples. Là ça n'aide pas à mieux programmer, c'est juste que sans une liste des fonctionnalités attendues de l'application il n'y a rien à programmer !
    ça depends la spécification des besoins, certain la considèree comme faisant partie de l'analyse, d'autre ne n'inclut même pas comme faisant partie de l'analyse. Dans tous les cas l'analyse n'est pas identique à la spécification des besoins.
    Dans la spécification des besoins, le système peut apparaître comme un boite noire, on sait ce que le système fait, et non comment il le fait.
    Par contre une analyse aborde le comment mais en restant dans les limites du métier. En d'autre terme un expert métier doit pouvoir comprendre et valider au besoin un document d'analyse. les termes techniques comme "transaction", "design pattern", "EJB", etc ne doivent pas figurer dans un document d'analyse.
    La conception fait introduire des notions de technique informatique dans la description du "comment" du traitement.

    En résumé, un document de spécification doit pouvoir être compris voir même rédigé par des utilisateurs du futur système, un document d'analyse doit pouvoir doit pouvoir être compris voir même rédigé par un expert métier, un document de conception doit être rédigé par un développeur uniquement.

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/06/2014, 19h25
  2. Réponses: 0
    Dernier message: 11/06/2014, 19h25
  3. Analyse Informatique (formalisation)
    Par raymish dans le forum Modélisation
    Réponses: 1
    Dernier message: 03/12/2013, 13h27
  4. Formalisation graphique des algorithmes
    Par David R. dans le forum Algorithmes et structures de données
    Réponses: 14
    Dernier message: 08/12/2012, 10h21
  5. [MCD] Analyse d'un service d'aide aux enfants en difficulté
    Par Chicna dans le forum Schéma
    Réponses: 34
    Dernier message: 19/02/2007, 14h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo