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

WinDev Discussion :

Gestion de multiples versions (clients) d'un même logiciel sous windev 17


Sujet :

WinDev

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur & Scrum Master
    Inscrit en
    Août 2010
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur & Scrum Master
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 102
    Points : 75
    Points
    75
    Par défaut Gestion de multiples versions (clients) d'un même logiciel sous windev 17
    Bonjour, j'ai un logiciel développé sous windev. Et presque 5 clients. Jusqu'ici, pour chaque nouveau client, je faisais une copie du projet et je l'ouvrais sous windev comme un nouveau projet. Mes clients pourraient bien monter à 20 d'ici 2ans.

    1.Est-ce là une bonne manière de créer un nouveau projet à partir d'un projet existant? Sinon comment faire?

    Je pense que cela pourra être lourd pour la suite notamment lors des ajouts des fonctionnalités communes ou de la soustraction des fonctionnalités d'une version à l'autre; et lors des évolutions de Windev (V17 à version 21 par exemple) où il faudrait migrer tous les projets un par un. Bref je pense que c'est une mauvaise pratique que j'ai adopté là.

    2. Windev propose-t-il des mécanismes de gestion des versions par client? (du genre un unique projet avec toutes les fonctionnalités et la possibilités d'activer ou de désactiver une ou telle fonctionnalité en fonction d'un paramétrage par exemple au lancement de l'application quoique cela sera complexe une fonctionnalité incluant bien souvent, de nouvelles fenetre, champ de saisie, bouton, etat, requete, etc.)

    Ma gestion actuelle:
    Dans la version initiale (V1), j'ai le logiciel par défaut

    Dans la version 11, je modifie la logique d'une fonctionnalité principale à l'application (IHM, requete,etat)
    Dans la version 12, je modifie la logique d'une fonctionnalité principale à l'application (IHM, requete,etat) mais je n'ai pas besoin de la modif de la V11 donc je me base sur la V1
    Dans la version 13, je modifie la logique d'une fonctionnalité principale à l'application (IHM, requete,etat) mais je n'ai pas besoin des modifs des V11 et 12 donc je me base sur la V1

    PLus tard un client demande une nouvelle spécificité, je trouve que tout de même son besoin est assez proche de la V12 donc je me base sur la v12 et je créé la version 121.

    Mais après, il s'avère qu'un autre client a un besoin proche de la V121 mais sans les modifs de la V12. Du coup je dois me baser sur la V121 et "dé-programmer" les apports de la v12 et donc, refaire des tests pour m'assurer que tout fonctionne bien quand même après suppression des fonctionnalités apportées par la V12.

    Bref voilà mon dada. L'avantage de cette méthode c'est que si un client veut un update, j'ai pas à réfléchir longtemps: j'ouvre le projet qui porte son nom, j'ajoute la modif sans vérifer que le nouveau code est compatible avec toutes les versions (les autres clients).

    L'inonvénient comme je le disais c'est principalement : les upgrades de l'IDE sur chaque projet le cas échéant et la complexité à supprimer, dans une version fille, une fonctionnalité qu'on a passer du temps à ajouter dans la version parente. Souvent le même temps finalement.

    L'inconvénient d'un projet unique, je suppose c'est la complexité des if/Switch etc à mettre en oeuvre sur chaque fenetre à ouvrir, si oui ou non il faut afficher un bouton, pour choisir la requete à exécuter, l'état à ouvrir, etc... (j'imagine de multiples if fonctionnalitésX et ou fonctionnalitésY et/ou fonctionnalitésZ,etc est active)

    Alors, quelle est votre expérience? Qu'en pensez vous? Que me conseiller vous?
    Windev propose-t-il une solution pour cela? Si oui, laquelle?

    Merci.

  2. #2
    Membre expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2004
    Messages
    2 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 329
    Points : 3 841
    Points
    3 841
    Par défaut
    Bonjour,

    Pour ce qui est de créer un projet par client, ben j'avoue que je n'aurais jamais pensé à le faire... bonjour la maintenance (même que 5 clients) !
    Windev propose le GDS, qui permet de gérer le versionning (branche, report, etc).

    Visiblement, chacun de tes clients a une application personnalisée mais l'application de base est la même pour tous.
    Windev ne propose pas (enfin ça m'étonnerait) une gestion automatique d'un fonctionnement comme le tien, et pour moi, cela doit être géré par programmation.

  3. #3
    Rédacteur/Modérateur

    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Décembre 2013
    Messages
    4 057
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Conseil

    Informations forums :
    Inscription : Décembre 2013
    Messages : 4 057
    Points : 9 397
    Points
    9 397
    Par défaut
    Comme LO², je suis contre l'idée de dupliquer les projets si la base est commune.
    Je ne suis pas très chaud sur la gestion des branches par le GDS, mais c'est certainement parce que je ne maîtrise pas.

    Effectivement, tu te retrouves avec tout un tas de code à chaque ouverture de fenêtre. Mais ça peut être très raisonnable.
    Tu peux utiliser par exemple les groupes. Tu associes différentes champs à un groupe, et dans le code, tu dis groupe_1..visible = faux.

    Prend bien soin de nommer chaque groupe par la fonctionnalité qui correspond, et pas par le nom du client...

    Il faut juste être discipliné. Soit tu choisis de mettre tous les groupes facultatifs en visible, et par le code, tu les rends invisibles. Ou tu les mets tous en invisibles, et par code, tu rends visibles ceux qui correspondent à ton client. Mais si tu panaches, c'est une difficulté supplémentaire.

    Tu as parfaitement décrit l'avantage de ta méthode: si un client demande une modif, tu n'as pas à réfléchir... Oui, tu économises 10 minutes de réflexion à court terme. Mais sur la durée, tu vas payer cela au centuple.
    N'oubliez pas le bouton Résolu si vous avez obtenu une réponse à votre question.

  4. #4
    Expert éminent
    Avatar de frenchsting
    Homme Profil pro
    multitâches-multifonctions
    Inscrit en
    Juin 2003
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : multitâches-multifonctions
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 202
    Points : 9 190
    Points
    9 190
    Par défaut
    Une solution partielle (que nous utilisons) est d'enregistrer qq part le nom du client utilisateur. Dans notre cas, c'est le code client qui est mis dans la bdd.

    Certains menus, boutons,... sont affichés ou masqués suivant ce code. De plus, certains traitement différent suivant ce même code. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //Export comptable
    selon CodeClient 
    cas "1" : ExportSage()
    cas "2" : ExportCegid()
    AutresCas : ExportCiel()
    FIN
    Commencez toujours appuyer sur la touche F1 et puis n'hésitez à passer par un moteur de recherche...
    Le forum est fait pour répondre aux questions : pas la peine de me les envoyer par MP. Merci.

    Sur internet, tout est vrai ! Honoré de Balzac
    Make it real not fantasy... Herman Rarebell

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    914
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 914
    Points : 1 496
    Points
    1 496
    Par défaut
    Bonjour.
    Une autre possibilité :
    les composants internes, soit par fonctionalité, soit par client dans ton cas.
    En combinant avec la solution de frenchsting tu dois pouvoir le gérer.

  6. #6
    Membre averti Avatar de tunizar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    573
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 573
    Points : 427
    Points
    427
    Par défaut
    Citation Envoyé par frenchsting Voir le message
    Une solution partielle (que nous utilisons) est d'enregistrer qq part le nom du client utilisateur. Dans notre cas, c'est le code client qui est mis dans la bdd.

    Certains menus, boutons,... sont affichés ou masqués suivant ce code. De plus, certains traitement différent suivant ce même code. Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    //Export comptable
    selon CodeClient 
    cas "1" : ExportSage()
    cas "2" : ExportCegid()
    AutresCas : ExportCiel()
    FIN
    Bonjour,
    Il est possible d'avoir plusieurs configurations dans un projet en utilisant ProjectInfo combiné
    piConfiguration
    Ainsi, il y aura l'association d'une configuration par client dans le même projet.

  7. #7
    Membre régulier
    Homme Profil pro
    Développeur & Scrum Master
    Inscrit en
    Août 2010
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur & Scrum Master
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2010
    Messages : 102
    Points : 75
    Points
    75
    Par défaut
    Merci beaucoup pour vos éclairages.

  8. #8
    R&B
    R&B est déconnecté
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    571
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Drôme (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2005
    Messages : 571
    Points : 1 263
    Points
    1 263
    Par défaut
    Bonjour,

    Il existe aussi les configurations de projet qui permettent de ne livrer à un client que ce dont il a besoin... et à conditionner le code comme l'indique tunizar avec cette fois ProjetInfo(piConfiguration).

    Plus technique et pointu mais nettement plus adapté sur la durée : concevoir votre projet en composants internes et livrer/activer ces composants selon la configuration du client.
    Pour ce faire il vous faudra un composant principal par grande fonctionnalité avec des entrées/sorties pour d'interfacer avec les composants dédiés aux spécialisation par clients. Un composant d'interface peut aussi s'intercaler entre le composant générique et les composants client pour contrôler les échanges.
    C'est un travail d'analyse et conception préalable à vos développements qui a un coût mais qui peu à terme faire la différence dans votre capacité à produire rapidement des adaptations.

    En complément, il est possible d'utiliser l'abonnement de procédure pour produire des surcharge à vos procédure qui pourront avoir un comportement adapter à tel ou tel client.

    En bref, il existe de nombreuses possibilités a adapter à votre budget / compétence.

Discussions similaires

  1. multiples versions d'une même librairie
    Par DrWaste dans le forum Général Python
    Réponses: 1
    Dernier message: 07/03/2012, 10h45
  2. Réponses: 1
    Dernier message: 01/10/2009, 14h03
  3. Gestion de plusieurs versions d'une même interface
    Par ecoulees dans le forum ODI (ex-Sunopsis)
    Réponses: 2
    Dernier message: 28/05/2008, 16h20
  4. [CVS]Gestion de 2 versions avec une partie commune
    Par Gromitou dans le forum EDI et Outils pour Java
    Réponses: 4
    Dernier message: 19/02/2004, 14h32

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