Background: i miei collaboratori e io stiamo scrivendo un articolo per un diario accademico. Nel corso della nostra ricerca, abbiamo scritto un programma di simulazione in Java. Vogliamo rendere il programma di simulazione liberamente disponibile per essere utilizzato da altri. Abbiamo deciso di ospitare il codice su un repository GitHub. Per facilitare l'utilizzo da parte di altri, vogliamo scrivere una buona documentazione per il nostro programma, tra cui:
- Javadocs per ogni classe e metodo
- Come usare il codice
- Descrivere la struttura di alto livello del codice
La mia domanda di alto livello è: potresti fornire un buon esempio delle parole e dei diagrammi che possono essere usati per descrivere la struttura di alto livello di un programma? Questo include sotto-domande:
- Come mostriamo quali classi sono contenute in quali pacchetti?
- Come mostriamo quali pacchetti dipendono da altri pacchetti?
- Come mostriamo come gli oggetti / le classi nel programma lavorano insieme?
- Abbiamo cercato di utilizzare i principi di progettazione basati sul dominio nella progettazione del mio codice. Come mostriamo la corrispondenza tra gli oggetti nel dominio e i particolari file di codice sorgente che codificano questi oggetti? (Vedi la mia descrizione "linguaggio onnipresente" del progetto qui sotto.)
Quello che ho fatto finora
Linguaggio ubiquitario
Mettiamo una descrizione "linguaggio onnipresente" del codice in un file ubiquitous-language.md
, i contenuti di seguito.
Lo scopo di questo progetto è quello di studiare il rendimento di una politica di rifornimento in una semplice catena di approvvigionamento con un'unica struttura, con diversi modelli di lead time, ritardi nei rapporti e modelli di domanda.
In ogni periodo, si verificano i seguenti eventi:
- Se una spedizione è programmata per arrivare alla struttura nel periodo corrente, il livello di inventario della struttura viene incrementato di X unità.
- Se la pianificazione indica che il periodo corrente è un periodo di report, la struttura invia un report al fornitore . Il fornitore può ricevere il rapporto istantaneamente o con un ritardo di diverse settimane, come specificato dal programma .
- Se il fornitore ha ricevuto un rapporto , quindi in base alla politica di rifornimento , calcolerà una quantità di rifornimento di X unità. Una spedizione di X unità del prodotto sarà programmata per arrivare dopo un termine di l periodi.
- I clienti arrivano alla struttura e richiedono X unità del prodotto. Qualsiasi richiesta non soddisfatta viene persa.
Struttura del codice sorgente
Inseriamo una descrizione "di alto livello" incompleta del codice in un file structure.md
, contenuto sotto.
Struttura a livello di pacchetto
Al livello più alto, il codice sorgente è organizzato in tre pacchetti
com.gly.sfs
La classe principale con ilmain
metodo risiede in questo pacchetto.com.gly.sfs.model
Le classi del modello di dominio risiedono in questo pacchetto.com.gly.sfs.util
Le classi di supporto risiedono in questo pacchetto.