背景: 我和我的合作者正在为学术期刊撰写文章。在研究过程中,我们用Java编写了一个仿真程序。我们想让仿真程序免费供其他人使用。我们已决定将代码托管在GitHub存储库上。为了使其他人易于使用,我们希望为程序编写良好的文档,包括:
- 每个类和方法的Javadocs
- 如何使用代码
- 描述代码的高级结构
我的高级问题是: 您能否提供一个可以用来描述程序高级结构的单词和图表的好例子? 这包括作为子问题:
- 我们如何显示哪些包中包含哪些类?
- 我们如何显示哪些软件包依赖于其他软件包?
- 我们如何显示程序中的对象/类如何协同工作?
- 我们已尝试在代码设计中使用领域驱动的设计原则。我们如何显示域中的对象与编码这些对象的特定源代码文件之间的对应关系?(请参阅下面我对项目的“通用语言”说明。)
到目前为止我做了什么
无处不在的语言
我们将代码的“普遍语言”描述放在文件中ubiquitous-language.md
,内容如下。
该项目的目的是研究在不同的提前期模型,报告延迟和需求模型下,补货策略在具有单个设施的简单供应链中的执行情况。
在每个期间,发生以下事件:
- 如果计划在当前期间将货物运送到工厂,则工厂的库存水平将增加X单位。
- 如果计划表指示当前期间为报告期,则工厂将向 供应商提交报告。该供应商可能会收到报告 瞬间,或者几个星期的延迟,由指定的时间表。
- 如果供应商已收到报告,则根据 补货策略,它将计算X单位的补货数量。一个出货的产品的X单位将被安排升周期的筹备时间之后抵达。
- 客户到达工厂并需要X单位的产品。任何未满足的需求都会丢失。
源代码结构
我们在structure.md
下面的文件中放置了不完整的代码“高级”描述。
包装等级结构
在最高级别,源代码分为三个包
com.gly.sfs
该main
方法的主类位于此程序包中。com.gly.sfs.model
域模型类驻留在此程序包中。com.gly.sfs.util
帮助程序类驻留在此程序包中。