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
Partager