Hintergrund: Meine Mitarbeiter und ich schreiben einen Artikel für eine akademische Zeitschrift. Im Zuge unserer Recherche haben wir ein Simulationsprogramm in Java geschrieben. Wir möchten das Simulationsprogramm für andere Benutzer frei verfügbar machen. Wir haben uns entschieden, den Code in einem GitHub-Repository zu hosten. Um anderen die Verwendung zu erleichtern, möchten wir eine gute Dokumentation für unser Programm schreiben, einschließlich:
- Javadocs für jede Klasse und Methode
- Wie man den Code benutzt
- Beschreiben der übergeordneten Struktur des Codes
Meine übergeordnete Frage lautet: Können Sie ein gutes Beispiel für die Wörter und Diagramme angeben, mit denen die übergeordnete Struktur eines Programms beschrieben werden kann? Dies beinhaltet als Unterfragen:
- Wie zeigen wir, welche Klassen in welchen Paketen enthalten sind?
- Wie zeigen wir, welche Pakete von anderen Paketen abhängen?
- Wie zeigen wir, wie die Objekte / Klassen im Programm zusammenarbeiten?
- Wir haben versucht, bei der Gestaltung meines Codes domänenbasierte Gestaltungsprinzipien zu verwenden. Wie zeigen wir die Entsprechung zwischen den Objekten in der Domäne und den bestimmten Quellcodedateien, die diese Objekte codieren? (Siehe meine "allgegenwärtige Sprache" Beschreibung des Projekts unten.)
Was ich bisher gemacht habe
Allgegenwärtige Sprache
Wir haben eine "allgegenwärtige Sprache" -Beschreibung des Codes in eine Datei eingefügt ubiquitous-language.md
, Inhalt siehe unten.
In diesem Projekt soll untersucht werden, wie gut eine Nachschubrichtlinie in einer einfachen Lieferkette mit einer einzigen Einrichtung unter verschiedenen Vorlaufzeitmodellen, Berichtsverzögerungen und Nachfragemodellen funktioniert.
In jedem Zeitraum treten die folgenden Ereignisse auf:
- Wenn geplant ist, dass eine Sendung im aktuellen Zeitraum in der Einrichtung eintrifft , wird der Lagerbestand der Einrichtung um X Einheiten erhöht.
- Wenn der Zeitplan angibt, dass die aktuelle Periode eine Berichtsperiode ist, sendet die Einrichtung einen Bericht an den Lieferanten . Der Lieferant kann den Bericht sofort oder mit einer Verzögerung von mehreren Wochen erhalten, wie im Zeitplan angegeben .
- Wenn der Lieferant einen Bericht erhalten hat , berechnet er basierend auf der Nachschubrichtlinie eine Nachschubmenge von X Einheiten. Eine Lieferung von X Einheiten des Produkts wird nach einer Vorlaufzeit von 1 Perioden eintreffen.
- Kunden kommen in der Einrichtung an und fordern X Einheiten des Produkts. Nicht erfüllte Forderungen gehen verloren.
Struktur des Quellcodes
Wir haben eine unvollständige "übergeordnete" Beschreibung des Codes in eine Datei eingefügt structure.md
, deren Inhalt unten angegeben ist.
Struktur der Paketebene
Auf der höchsten Ebene ist der Quellcode in drei Pakete unterteilt
com.gly.sfs
Die Hauptklasse mit dermain
Methode befindet sich in diesem Paket.com.gly.sfs.model
Die Domänenmodellklassen befinden sich in diesem Paket.com.gly.sfs.util
In diesem Paket befinden sich Hilfsklassen.