Sfondo: I miei collaboratori e io stiamo scrivendo un articolo per una rivista accademica. Nel corso della nostra ricerca, abbiamo scritto un programma di simulazione in Java. Vogliamo rendere il programma di simulazione liberamente disponibile per gli altri utenti. Abbiamo deciso di ospitare il codice su un repository GitHub. Per renderlo facile agli altri da usare, vogliamo scrivere una buona documentazione per il nostro programma, tra cui:
- Javadoc per ogni classe e metodo
- Come utilizzare il codice
- Descrivere la struttura di alto livello del codice
La mia domanda di alto livello è: Potresti fornire un buon esempio di parole e diagrammi che può essere usato per descrivere la struttura di alto livello di un programma? Questo include come domande secondarie:
- Come facciamo a mostrare quali classi sono contenute in quali pacchetti?
- Come possiamo mostrare quali pacchetti dipendono da altri pacchetti?
- Come mostriamo come funzionano gli oggetti / le classi del programma?
- Abbiamo provato a utilizzare i principi 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 del linguaggio "onnipresente" del progetto qui sotto.)
Cosa ho fatto finora
Lingua onnipresente
Abbiamo inserito una descrizione del codice "onnipresente in lingua"
in un file ubiquitous-language.md
,
contenuto sotto.
Lo scopo di questo progetto è studiare quanto bene una politica di rifornimento si esibisce in una semplice catena di approvvigionamento con una singola struttura, in diversi modelli di lead time, riporta i ritardi e i modelli di domanda.
In ogni periodo, si verificano i seguenti eventi:
- Se è previsto che una spedizione arrivi alla struttura presso periodo corrente, quindi il livello di inventario della struttura è incrementato di X unità.
- Se la pianificazione indica che il periodo corrente è un rapporto periodo, quindi la struttura invia un report a fornitore . Il fornitore potrebbe ricevere il rapporto istantaneamente o con un ritardo di alcune settimane, come specificato da la pianificazione .
- Se il fornitore ha ricevuto un rapporto , in base a politica di rifornimento , calcolerà un rifornimento quantità di unità X. Verrà inviata una spedizione di X unità del prodotto essere programmato per arrivare dopo un lead time di l periodi.
- I clienti arrivano alla struttura e richiedono unità X di Prodotto. Qualsiasi richiesta non soddisfatta viene persa.
Struttura del codice sorgente
Abbiamo inserito una descrizione incompleta "di alto livello" 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
-
%codice%
La classe principale con il metodo
com.gly.sfs
si trova in questo pacchetto. - %codice% Le classi del modello di dominio risiedono in questo pacchetto.
- %codice% Le classi di supporto risiedono in questo pacchetto.