Вообще, если проанализировать возможные варианты, то видятся следующие варианты:
1) Есть единый источник, из которого генерируется код и документация (подход Кнута и другие подходы)
2) Код и документация врозь (как это обычно и бывает).
3) Есть код, документация и дополнительный источник, который содержит связи между кодом и документацией.

Мне кажется, что для того, чтобы документация и код были согласованы между собой, то лучше подходит первый вариант. Но там тоже могут быть различные варианты. Например, насколько я понимаю, у Кнута из единого источника генерируется код и один документ. А как быть, если надо генерировать сразу несколько документов, допустим, спецификацию требований и руководство пользователя?