Contexte: Mes collaborateurs et moi écrivons un article pour une revue universitaire. Au cours de nos recherches, nous avons écrit un programme de simulation en Java. Nous voulons rendre le programme de simulation disponible gratuitement pour que d'autres puissent l'utiliser. Nous avons décidé d'héberger le code sur un référentiel GitHub. Afin de le rendre facile à utiliser pour les autres, nous voulons écrire une bonne documentation pour notre programme, y compris:
- Javadocs pour chaque classe et méthode
- Comment utiliser le code
- Décrire la structure de haut niveau du code
Ma question de haut niveau est: pourriez-vous fournir un bon exemple des mots et des diagrammes qui peuvent être utilisés pour décrire la structure de haut niveau d'un programme? Cela comprend comme sous-questions:
- Comment montrer quelles classes sont contenues dans quels packages?
- Comment montrer quels packages dépendent d'autres packages?
- Comment montrons-nous comment les objets / classes du programme fonctionnent ensemble?
- Nous avons essayé d'utiliser des principes de conception pilotés par domaine dans la conception de mon code. Comment montrer la correspondance entre les objets du domaine et les fichiers de code source particuliers codant ces objets? (Voir ma description «langage omniprésent» du projet ci-dessous.)
Ce que j'ai fait jusqu'à présent
Langage omniprésent
Nous mettons une description "du langage omniprésent" du code dans un fichier ubiquitous-language.md
, contenu ci-dessous.
Le but de ce projet est d'étudier la performance d'une politique de réapprovisionnement dans une chaîne d'approvisionnement simple avec une seule installation, sous différents modèles de délais, rapports de retards et modèles de demande.
Dans chaque période, les événements suivants se produisent:
- Si un envoi doit arriver à l' installation à la période en cours, le niveau de stock de l'installation est incrémenté de X unités.
- Si le calendrier indique que la période en cours est une période de déclaration, l' établissement soumet un rapport au fournisseur . Le fournisseur peut recevoir le rapport instantanément, ou avec un retard de plusieurs semaines, comme spécifié par le calendrier .
- Si le fournisseur a reçu un rapport , puis sur la base de la politique de réapprovisionnement , il calculera une quantité de réapprovisionnement de X unités. Un envoi de X unités du produit sera programmé pour arriver après un délai de l périodes.
- Les clients arrivent à l' établissement et à la demande des unités X du produit. Toute demande non satisfaite est perdue.
Structure du code source
Nous mettons une description incomplète "de haut niveau" du code dans un fichier structure.md
, contenu ci-dessous.
Structure au niveau du package
Au plus haut niveau, le code source est organisé en trois packages
com.gly.sfs
La classe principale avec lamain
méthode réside dans ce package.com.gly.sfs.model
Les classes de modèle de domaine résident dans ce package.com.gly.sfs.util
Les classes d'assistance résident dans ce package.