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

Java Discussion :

Comment modéliser mon application


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 27
    Points : 32
    Points
    32
    Par défaut Comment modéliser mon application
    Bonjour à tous,

    Je viens poser aujourd'hui une question d'architecture logiciel ou de modélisation logiciel

    Je m'apprête à ouvrir un nouveau projet dans l'entreprise où je suis. (une petite PME industrielle).
    En résumé, le besoin est de calculer une planification de notre production de sucrerie en fonction d'une capacité (machines + hommes) et charge (encours de fabrication + nouveaux ordres de fabrication).

    Je m'apprête à initier trois projets JAVA bien distinct :
    - Un projet JAVA J2EE d'une interface utilisateur permettant de paramétrer et alimenter le futur outil.
    - Un projet JAVA J2EE permettant à l'utilisateur d'afficher et naviguer sur le rendu calculé.
    - Un projet JAVA qui est le moteur de calcul de ma planif. J'ai dans l'idée de le scheduler automatiquement chaque matin et/ou à la demande (dans une prochaine phase, nous ajouterons une fonctionnalité de "simulation" permettant de simuler des capacités supplémentaires/moindres éventuelles (intérimaires, heures supplémentaires, sous-traitante, investissement matériel), et.ou des charges supplémentaires/moindres éventuelles.

    Mes questions portent précisément sur ce dernier projet. Je ne sais pas bien comment l'initier et architecturer le projet. J'allais partir sur aucun framwork en particulier; et utiliser beaucoup de singleton. En gros ceci aurait été :

    Création des singletons
    Création d'un singleton Calendrier (à sa création on aurait chargé un calendrier des jours ouvrables de l'atelier et de heures/jour)
    Création du singleton Charge (encours de travail dans l'atelier + nouveaux ordre de fabrication à lancer) avec dedans une liste d'objet Article (avec dedans la liste des opérations à effectuer) et l'opération en cours
    Création d'un singleton Capacité avec la liste des opérations dans l'atelier
    autres singletons...

    Puis lancement des calculs
    Je parcours l'ensemble de ma charge en cours (c'est à dire tous les articles en cours de fabrication, sur l'opération en cours), je regarde l'opération en cours, je soustrait le temps nécessaire pour cette opération de ma capacité
    Je regarde l'opération suivante de l'article, j'applique cette opération au poste suivant, etc...

    Au final, ma charge se rempli en fonction de ma capacité, et j'ai mon calendrier.

    En réalité, l'algo est plus complexe, car nous tenons compte d'un taux d'efficience, d'un taux d'absentéisme, d'un temps de transfert entre les opérations, d'un temps de maintenance opération, etc... Mes questions ne portant pas sur l'algo métier, je simplifie volontairement cette partie.

    J'en reviens donc à ma question : est-ce une modélisation correct d'application
    1 - Je créais tout un tas de singleton afin de charger dans mon appli une situation (charge, capacité, calendrier)
    2 - Je lance mon algo

    Bien sûr, je vais utiliser des outils annexes de persistance d'objet, logging, etc.

    Merci

  2. #2
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Je ne comprends pas bien la nécessite des singletons :
    Création d'un singleton Calendrier (à sa création on aurait chargé un calendrier des jours ouvrables de l'atelier et de heures/jour)
    N'est-il pas enviable qu'une simulation utilise un autre Calendrier que le Calendrier par défaut ?
    • Pour la gestion d'un autre atelier ?
    • Pour la simulation de la modification des heures d'ouverture ?

    Création du singleton Charge (encours de travail dans l'atelier + nouveaux ordre de fabrication à lancer) avec dedans une liste d'objet Article (avec dedans la liste des opérations à effectuer) et l'opération en cours
    Si tu veux réalisé une simulation tout en ayant une production, il te faudra autre chose qu'un singleton.

    Peut-être que tu n'as pas la bonne définition de singleton :
    Citation Envoyé par wikipédia
    En génie logiciel, le singleton est un patron de conception (design pattern) dont l'objet est de restreindre l'instanciation d'une classe à un seul objet (ou bien à quelques objets seulement).
    http://fr.wikipedia.org/wiki/Singlet..._conception%29
    Si on remplace Singleton par une instance, ta modélisation me semble pas trop mal.
    1. Création du modèle métier de travail.
    2. Utilisation du modèle.


    - Un projet JAVA J2EE d'une interface utilisateur permettant de paramétrer et alimenter le futur outil.
    - Un projet JAVA J2EE permettant à l'utilisateur d'afficher et naviguer sur le rendu calculé.
    Il est possible de fusionné ces deux projets et d'avoir deux sections dans la navigation. Il me semble probable que tu ai besoin d'affiche dans ces deux sections la même informations. Autant que cela soit en commun.

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 27
    Points : 32
    Points
    32
    Par défaut
    Merci beaucoup pour cette réponse rapide.

    Je vais essayer de répondre de manière précise mais concise.

    Je souhaite passer par des singletons pour certain object car pour moi il n'y a qu'une et une seule occurence d'objet possible.
    Par exemple la charge, pour moi c'est typiquement un objet qui doit être un singleton puisque je n'ai qu'une seule charge.

    Mon objet ressemblerait donc à :
    Charge (obj singleton)
    list object <Job> <= list des articles en cours de fab

    L'objet Job lui n'est pas un singleton :
    Job
    obj Article <= mon article
    obj CurrentOperation <= l'id de l'opération en cours

    objet Article
    Article
    libelle
    list<composant> <= en réalité liste d'article, je mets ici composant pour comprendre l'aspect métier
    list<Operation>

    En résumé, j'aurai bien mon singleton charge, capacité, calendrier (même si ok dans le cas de la simulation, je peux en avoir deux).

    Je comprends de ta réponse que cette modélisation n'est pas mauvaise. En regardant les choses de plus haut encore l'idée de dire je charge les données dans mon programme puis je fais les calculs est plutôt bon. Plutot que charger à la volée en fonction des besoins dans le calcul.

  4. #4
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Tu peux avoir un objet Modelisation(Planificateur ?) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class Modelisation {
     
    private Charge  charge;
    private Capacite capacite;
    private Calendrier calendrier;
     
    }
    Ainsi ton traitement ne se réalise que sur une seul modélisation représentant un ensemble de donnée cohérente.

    Pour ce qui est du chargement "à la voler", si tu utilise un framework de persistance tel Hibernate. Il est possible que tout ton modèle ne soit pas chargé lors de la création/chargement, mais seulement lors de du calcul.
    En effet, Tu peux avoir du LazyLoading sur les jobs de ta charge. Et ainsi avoir en mémoire qu'une partie de ton modèle lors du début du calcul. Mais cela être être vue dans une phase d'optimisation si tu modèle comporte un grand nombre d'élément.

    L'important, c'est qu'au début de ton calcul, tu sais déjà ce sur quoi tu va calculer. (Que ton framework ai déjà charger l'ensemble en mémoire ou non)

    Cordialement,
    Patrick Kolodziejczyk.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2008
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 27
    Points : 32
    Points
    32
    Par défaut
    C'est une bonne idée de rassembler l'ensemble de ces objects dans un object modelisateur. Ceci permet de créer plusieurs scénario de simulation par exemple.

    Je vais en rester là sur ma quetsion initiale, et reflechir à tout ceci. Je vais aussi étudier un peu plus hibernate, car j'étais parti sur la définition d'un simple ORM, mais tu m'indiques qu'il peut être un peu plus intelligent qu'un simple modelisateur de BDD et gérer automatiquement le chargement ou non de données.

    Pour ta question sur les projets J2EE, oui, il n'y aura qu'un seul projet web avec une gestion de droits. Mais là dessus pas de soucis, j'ai les idées claires.

    Merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [CF][PPC] Comment déployer mon application ?
    Par jeepnet dans le forum Windows Mobile
    Réponses: 3
    Dernier message: 20/03/2007, 19h19
  2. [Conception] Comment améliorer mon application de gestion de commandes ?
    Par etiennegaloup dans le forum Framework .NET
    Réponses: 5
    Dernier message: 09/08/2006, 19h54
  3. Comment ouvrir mon application aux autres?
    Par korntex5 dans le forum Langage
    Réponses: 2
    Dernier message: 27/04/2006, 16h25
  4. Comment proteger mon application par un mot de passe
    Par Sabrina_of_darkness dans le forum Langage
    Réponses: 9
    Dernier message: 02/04/2006, 00h46
  5. comment diviser mon application access en 2 partie
    Par Soulghard dans le forum Access
    Réponses: 4
    Dernier message: 10/01/2006, 11h26

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