Bernard Senior a dit:
Autrement dit, tu me demandes de coucher sur le papier ce que j'ai dans le ciboulot.
Tout à fait. Cela présente les avantages de:
- mettre du clair dans sa tête... de manière globale (et pas au fur et à mesure )
- communiquer plus aisément avec d'autres personnes
- se rendre ainsi compte d'incohérence(s)
- et surtout d'avoir un excellent point de départ pour les tests, la documentation et la validation
Partant de ce constat, ce n'est vraiment pas une perte de temps !
Bernard Senior a dit:
pour le module VPC, je n'avais pas prévu de gérer les stocks, pour la raison que nous ne proposions que des articles (principalement des livres) de notre fonds. En octobre dernier, sur un conseil extérieur, nous avons proposé à nos clients en plus de nos articles, des articles d'autres éditeurs.
Partons de ce qu'UML appelle les cas d'utilisation. Ce que tu me décris là a tout à fait l'air de ressembler à un nouveau cas d'utilisation. Ainsi, il y a de fortes chances pour que cela se traduise par l'ajout d'un nouveau service au système. Il n'y a pas de raison pour que tes objets ou les autres services soient
impactés par l'ajout d'un nouveau service :hein:.
Bernard Senior a dit:
Et là, catastrophe, évidemment !
Je veux bien te croire :rateau:!
Bernard Senior a dit:
D'où des commandes bloquées sans aucune possibilité de les enregistrer à l'avance, puisque le programme met systématiquement en expédition toute commande saisie. Puis, quand les articles manquants sont arrivés, nouvelle difficulté pour les servir dans l'ordre des commandes.
Pour reprendre ton exemple et en amorçant le début d'analyse. Ton système (le logiciel) propose plusieurs services, dont on peut citer:
- L'authentification
- La gestion des utilisateurs du systèmes
- Service d'expédition
- Service de gestion des commandes
Le détail du service d'authentification pourrait être:
- boolean login(User user);
- void logout(User user);
Ici
User est
abstrait. Ainsi, d'un point de vue du service d'authentification, il n'y a pas de différence entre un utilisateur lambra et une secrétaire !
Cela se traduit en objet par une interface (ou classe de base) User qui a 2 sous-classes dérivées: secrétaire et lambda.
Le détail de gestion des utilisateurs pourrait être:
- void addSecretaire(String name, String password); // le nom doit être unique dans le système, sinon exception
- void addLambda(String name, password);
- void remove(String name);
Remarque, il n'apparaît nulle part des notions d'ID ou de design de base de données... ce n'est que bien plus loin dans les détails d'implémentation qu'il faudra se pencher sur ce point.
Le détail du service de gestion des commandes pourrait être:
- Command createCommand(String name);
- void addArticle(Command cmd, Article art);
- void removeArticle(Command cmd, Article art);
Ici encore,
Article doit être une notion
abstraite pour les mêmes raisons évoquées précedemment.
Bernard Senior a dit:
Evidemment, un changement dans les conditions d'exploitation survenant, cela m'oblige à des modifications.
Pas forcément. En utilisant le bon niveau d'abstraction avec Article et User
.... c'est à ça que ça sert l'objet !
Bernard Senior a dit:
Ma philosophie n'est pas de faire le programme nec plus ultra mais celui qui colle à la réalité du moment.
L'analyse nec plus ultra sera ton meilleur investissement
. Tu auras tout le temps pour peaufiner l'implémentation (le passage aux lignes de code) et ainsi aboutir au
programme nec plus ultra.
Si tu as tout
dans ta tête, et vu la taille de ton application, tu ne devrais pas en avoir pour longtemps à ainsi faire l'analyse de ta problématique. De plus, à première vue, ton application ne semble pas avoir de problématiques
inconnues... à savoir qu'on reste quand même dans des problématiques d'informatique de gestion très classiques, et donc, à ce titre, peut-être que des ouvrages d'analyse pourraient te montrer la voie.
C'est aussi sur la base de cette analyse que tu pourras définitivement décider s'il vaut mieux partir sur l'utilisation et le paramétrage de progiciel existants, ou bien partir sur la voie du développement maison ! (et la boucle est bouclée).