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

Langages de programmation Discussion :

Quel politique adopter envers l'intrusion des framework dans les applications ?


Sujet :

Langages de programmation

  1. #1
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut Quel politique adopter envers l'intrusion des framework dans les applications ?
    Bonjour à tous.

    Je vais d'ici quelqu'un temps réaliser une application assez conséquente pour un client. J'ai déjà bien écrémé le sujet, mais une question subsiste. En effet, l'application que je vais développer pourrai se passer d'une GUI. En pratique, cela ne serra pas le cas, car le client un veut une, mais en théorie, ce qu l'application fait est réalisable uniquement via la console.

    Et là se pose une question, jusqu'au doit aller l'intrusion du framework qui va me permettre de réaliser la GUI (Qt dans mon cas) ?

    Pour le moment, je vois deux solutions :
    Solution 1 : D'un coté, j'ai mes classes métiers qui sont indépendantes de tout framework graphique, ça reste du C++ 'pur', autrement dit que de la STL/boost.
    Et avec au dessus, mes classes graphiques qui auront pour rôle d'afficher une belle GUI. Ce qui m'ennuie, c'est le nombre de conversion que je vais devoir réaliser pour afficher le tout. Mais d'un autre coté, le changement de GUI serra plus facile au besoin. Cette solution respecte le DIP.

    Solution 2: J'ai toujours mes classes métiers d'un coté, mais celles ci aurait fait un plongeon dans Qt. Ainsi, le développement serrait facilité (on peut utiliser la puissance de Qt partout), il n'y a pas de conversion à faire, mais un changement de GUI nécessite de réécrire une bonne partie de l'application.

    Que me conseillez vous ?
    Merci.

    David Côme.

    EDIT: La discussion ayant été supprimé à cause du rollback, ci joins l'ensemble des messages de la première discussion,si un admin pouvait les restaurer, merci. .
    Fichiers attachés Fichiers attachés
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  2. #2
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    En fait, il faut toujours séparer l'IHM du code. Il y a plusieurs type d'architecture de programmation des IHM plus ou moins adaptées à ton cas. La liste peut être assez longue mais regarde quand même du coté de MVC, Seeheim, arch, PAC, ...

    Mais garde à l'esprit qu'il faut toujours mettre à part l'IHM (même si c'est contraignant de temps en temps). D'autant plus que dans ton cas, l'IHM est visiblement secondaire alors autant ne pas en être dépendant.

  3. #3
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par PRomu@ld Voir le message
    En fait, il faut toujours séparer l'IHM du code. Il y a plusieurs type d'architecture de programmation des IHM plus ou moins adaptées à ton cas. La liste peut être assez longue mais regarde quand même du coté de MVC, Seeheim, arch, PAC, ...
    Des fois, je me dis quand même que c'est un peu n'importe quoi. Changer d'IHM (par exemple d'une application normale type Swing/QT à une application Web) demande quasiment de réécrire une très grosse partie même avec un modèle comme MVC (parfois, le traitement métier se retrouve dans le contrôleur alors qu'il faudrait ajouter des séparations supplémentaires).
    Je ne répondrai à aucune question technique en privé

  4. #4
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Je suis aussi d'accord de temps en temps. D'autant plus que je dois avouer que c'est assez rare de changer d'IHM dans un projet (ça m'est arrivé une seule fois). Le gros avantage est aussi de pouvoir travailler plus facilement en équipe (si tout est bien découpé, et pas entremêlé ça aide de temps en temps)

  5. #5
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par PRomu@ld Voir le message
    Le gros avantage est aussi de pouvoir travailler plus facilement en équipe (si tout est bien découpé, et pas entremêlé ça aide de temps en temps)

    Oui, par contre là, les avantages sont indéniables
    Je ne répondrai à aucune question technique en privé

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Davidbrcz Voir le message
    Bonjour à tous.
    Et là se pose une question, jusqu'au doit aller l'intrusion du framework qui va me permettre de réaliser la GUI (Qt dans mon cas) ?
    Pour moi, il est clair que la séparation doit être totale. J'ai déjà réalisé des applis dont le code métier tourne simultanément sur Win, sur *nix avec X11/Motif, ou en langage de commande via script (y compris de TRES grosses applis).

    Règle 1 : faire une analyse correcte pour réellement séparer en couches où aucune couche n'a connaissance de la couche supérieure.

    Règle 2 : s'affranchir des contraintes (par exemple en C passer en paramètres des pointeurs sur des structures indépendantes contenant un pointeur void vers la classe parent, ce qui permet d'avoir un code métier complètement indépendant de la calsse parent).

    Règle 3 : utiliser cette structure pour faire une API d'affichage indépendante de l'outil (pour les primitives : exemple Trace_Ligne, Trace_Texte, etc..).

    Citation Envoyé par millie Voir le message
    Des fois, je me dis quand même que c'est un peu n'importe quoi. Changer d'IHM (par exemple d'une application normale type Swing/QT à une application Web) demande quasiment de réécrire une très grosse partie même avec un modèle comme MVC (parfois, le traitement métier se retrouve dans le contrôleur alors qu'il faudrait ajouter des séparations supplémentaires).
    Désolé, mais c'est toi qui dit n'importe quoi, là...

    Sans modèle particulier, sauf à la limite un modèle "en couches", le schéma exposé se fait souvent dans l'industrie (et heureusement, vu que le développement d'une IHM est en général 80% du temps de développement d'une appli).

    Ce que tu proclames est justement la dérive constatée depuis une quinzaine d'années et mises en place par toutes les générations d'étudiants ayant appris uniquement avec des Frameworks.
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  7. #7
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    Désolé, mais c'est toi qui dit n'importe quoi, là...
    Tu pourrais développer, car je ne vois pas du tout en quoi je dis n'importe quoi.
    Je ne répondrai à aucune question technique en privé

  8. #8
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    Quand tu dis ça :

    Citation Envoyé par millie Voir le message
    Des fois, je me dis quand même que c'est un peu n'importe quoi. Changer d'IHM (par exemple d'une application normale type Swing/QT à une application Web) demande quasiment de réécrire une très grosse partie même avec un modèle comme MVC (parfois, le traitement métier se retrouve dans le contrôleur alors qu'il faudrait ajouter des séparations supplémentaires).
    Si l'analyse et la conception ont été bien faits, quel que soit l'IHM utilisée, ce ne serait qu'une petite partie du code.

    Je te donne un exemple - vécu :

    Dans l'exemple cité dans mon message précédent, un code (7 ans de développement total, 750 000 lignes de code), tournant sur *nix, et sous Win, avec GUI mais aussi sans GUI.

    Le code du GUI en X11/Motif : 140 000 lignes, soit environ 19%.

    Passage du GUI X11/Motif à un langage de commande : 2 mois. Code résultant : 5000 lignes.

    Passage du GUI X11/Motif à Win (VC++) : 6 mois. code résultant : 90 000 lignes (des widgets existaient déjà qui n'existaient pas sous Motif).

    Absolument aucun code métier dans les IHMs.

    Absolument aucun changement de code métier pour changer d'IHM (en fait, un simple link à une bibliothèque différente).
    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

  9. #9
    Rédacteur

    Avatar de millie
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    7 015
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 015
    Points : 9 818
    Points
    9 818
    Par défaut
    Alors, je n'ai pas été très clair dans ce que j'ai dit.

    J'ai voulu dire qu'en utilisant certains modèles qui sont censés permettre d'être indépendant de l'IHM (notamment MVC), on est pas à l'abri de faire n'importe quoi. Il y en a qui écrivent du code métier dans le contrôleur (j'ai vu ça à plusieurs reprises en entreprise, et avec du code pas écrit par des étudiants !) et qu'il est donc nécessaire de réécrire une grosse partie du code.

    Maintenant, si c'est bien fait, il y a une grosse partie commune entre les applis et une partie qu'il est nécessaire d'ajouter/réecrire (par exemple, le fait d'utiliser la molette pour zoomer sur du texte ou une image a un sens dans une IHM "normale" et n'a pas de sens dans une IHM en ligne de commande).
    Je ne répondrai à aucune question technique en privé

  10. #10
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 603
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 603
    Points : 17 913
    Points
    17 913
    Billets dans le blog
    2
    Par défaut
    lol ok on s'était mal compris alors..

    "Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

    Consultant indépendant.
    Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
    C, Fortran, XWindow/Motif, Java

    Je ne réponds pas aux MP techniques

Discussions similaires

  1. Gestion des contraintes dans les applications Access
    Par Tofalu dans le forum Sondages et Débats
    Réponses: 5
    Dernier message: 22/05/2014, 03h14
  2. télécharger des framework et les deployer sous jbuilder
    Par Paula2020 dans le forum JBuilder
    Réponses: 0
    Dernier message: 08/05/2010, 14h05
  3. Comment afficher des JPEG dans une application Delphi ?
    Par Bouguennec dans le forum Composants VCL
    Réponses: 4
    Dernier message: 17/09/2005, 21h18

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