背景: 私の共同研究者と私は学術雑誌の記事を書いています。研究の過程で、Javaでシミュレーションプログラムを作成しました。シミュレーションプログラムを他の人が自由に利用できるようにしたいと考えています。GitHubリポジトリでコードをホストすることにしました。他の人が簡単に使用できるようにするために、次のような優れたドキュメントを作成します。
- 各クラスとメソッドのJavadoc
- コードの使用方法
- コードの高レベルの構造を記述する
私の高レベルの質問は次のとおり です。プログラムの高レベルの構造を説明するために使用できる単語と図の良い例を提供できますか? これにはサブ質問として含まれます:
- どのパッケージにどのクラスが含まれているかをどのように示しますか?
- 他のパッケージに依存するパッケージをどのように表示しますか?
- プログラム内のオブジェクト/クラスがどのように連携するかをどのように示しますか?
- 私たちは、コードの設計にドメイン駆動設計原則を使用しようとしました。ドメイン内のオブジェクトと、これらのオブジェクトをエンコードする特定のソースコードファイルとの対応をどのように示しますか?(以下のプロジェクトの私の「ユビキタス言語」の説明を参照してください。)
これまでにやったこと
ユビキタス言語
コードの「ユビキタス言語」の説明をファイルのubiquitous-language.md
次の内容に入れます。
このプロジェクトの目的は、異なるリードタイムモデル、レポート遅延、および需要モデルの下で、単一施設を備えた単純なサプライチェーンで補充ポリシーがどの程度うまく機能するかを調査することです。
各期間で、次のイベントが発生します。
- 出荷が現在の期間に施設に到着するようにスケジュールされている場合、施設の在庫レベルはX単位だけ増加します。
- 現在の期間がレポート期間であることがスケジュールに示されている場合、施設はレポートをサプライヤーに提出し ます。サプライヤーは、受信することができるレポート によって指定されるように、数週間の遅れまたは、瞬時スケジュール。
- サプライヤがレポートを受信した場合、補充ポリシーに基づいて、 Xユニットの補充量を計算します。出荷製品のXユニットは、L期間のリードタイムの後に到着する予定であろう。
- 顧客は施設に到着し、製品のXユニットを要求します。満たされていない需要は失われます。
ソースコード構造
コードの不完全な「高レベル」説明をファイルstructure.md
に入れます。内容は以下のとおりです。
パッケージレベルの構造
最高レベルでは、ソースコードは3つのパッケージに編成されています。
com.gly.sfs
main
メソッドを 持つメインクラスはこのパッケージにあります。com.gly.sfs.model
ドメインモデルクラスはこのパッケージにあります。com.gly.sfs.util
ヘルパークラスはこのパッケージにあります。