Фон: мои сотрудники и я пишем статью для академического журнала. В ходе нашего исследования мы написали программу моделирования на Java. Мы хотим сделать программу симуляции свободно доступной для использования другими. Мы решили разместить код в репозитории GitHub. Чтобы другим было легко пользоваться, мы хотим написать хорошую документацию для нашей программы, в том числе:
- Javadocs для каждого класса и метода
- Как использовать код
- Описание высокоуровневой структуры кода
Мой высокоуровневый вопрос: не могли бы вы привести хороший пример слов и диаграмм, которые можно использовать для описания высокоуровневой структуры программы? Это включает в себя подвопросы:
- Как мы показываем, какие классы содержатся в каких пакетах?
- Как мы показываем, какие пакеты зависят от других пакетов?
- Как мы показываем, как объекты / классы в программе работают вместе?
- Мы постарались использовать принципы проектирования на основе предметной области при разработке моего кода. Как мы показываем соответствие между объектами в домене и конкретными файлами исходного кода, кодирующими эти объекты? (См. Мое «повсеместное выражение» описания проекта ниже.)
Что я сделал до сих пор
Вездесущий язык
Мы помещаем описание кода «вездесущего языка» в файл ubiquitous-language.md
, содержание которого приведено ниже.
Цель этого проекта состоит в том, чтобы изучить, насколько хорошо политика пополнения запасов работает в простой цепочке поставок с одним средством, в рамках различных моделей сроков поставки, задержек отчетов и моделей спроса.
В каждом периоде происходят следующие события:
- Если отгрузка запланирована на объект в текущем периоде, то уровень запасов объекта увеличивается на X единиц.
- Если график показывает , что текущий период является отчетным периодом, то объект представляет отчет к поставщику . Поставщик может получить отчет немедленно, или с задержкой в несколько недель, как указано в расписании .
- Если поставщик получил отчет , то в соответствии с политикой пополнения он рассчитает количество пополнения X единиц. Пересылка рентгеновских единиц продукта будет назначено прибыть после заблаговременности л периодов.
- Клиенты прибывают на объект и требуют X единиц товара. Любой неудовлетворенный спрос теряется.
Структура исходного кода
Мы поместили неполное высокоуровневое описание кода в файл structure.md
, содержание которого приведено ниже.
Структура уровня пакета
На высшем уровне исходный код организован в три пакета
com.gly.sfs
Основной класс сmain
методом находится в этом пакете.com.gly.sfs.model
Классы модели предметной области находятся в этом пакете.com.gly.sfs.util
Вспомогательные классы находятся в этом пакете.