Диаграммы можно нарисовать используя
вот эту модель. Оттуда достаточно 2-ух уровней. Остальное как правило избыточно.
Рисовать можно с помощью
PlantUML. Тогда можно будет сгенерить картинки в любом формате, будь то
svg
или
png
или даже
ASCII
.
Описывать все можно или в
Wiki
или в репозитории (А лучше в
Wiki
которая под капотом и есть репозиторий, который записать что то можно не только руками а и программными средствами).
- Соответсвенно общую картинку рисуем и расписываем в репозитории Wiki.
- Отдельные компоненты документируем на уровне репозиториев этих компонентов (В README и комментариями в коде).
- Далее проходим по всем репозиториям, генерим оттуда документацию в Wiki формате и пишем ее в Wiki репозиторий.
- После этого из Wiki генерим нужное представление и публикуем его как статический сайт.
У меня есть гипотеза, что чем проще инструмент в использовании для редактирования информации, совместной работы и визуального оформления этой информации. (Confluence, Notion, etc.), тем быстрее документация превращается в плохо структурированную мусорку с кучей устаревшего хлама.
И наоборот. Если документация пишется одновременно с кодом, после чего автоматическими системами собирается в единый сайт, а у пользователя есть только необходимый минимум для оформления, тем больше программист сосредоточен на самой документации, а не на ее оформлении, переоформлении и структурировании, переструктурировании.
Короче говоря Notion, Confluence и т.п. на мой взгляд отличные системы для коллаборативной работы над документами, но отвратнейшие системы для работы с документацией. Все что я видел всегда eventually в таких системах превращалось в мусорку по которой потом надо ходить и "Гуглить" чтобы хоть что-то найти. Зато красиво и с фентифлюшками.