  Writing documentation about software internals is rarely considered a
rewarding activity. It is highly time-consuming and the resulting documentation
is fragile when the software is continuously evolving in a multi-developer
setting. Unfortunately, traditional programming environments poorly support the
writing and maintenance of documentation. Consequences are severe as the lack
of documentation on software structure negatively impacts the overall quality
of the software product. We show that using a controlled natural language with
a reasoner and a query engine is a viable technique for verifying the
consistency and accuracy of documentation and source code. Using ACE, a
state-of-the-art controlled natural language, we present positive results on
the comprehensibility and the general feasibility of creating and verifying
documentation. As a case study, we used automatic documentation verification to
identify and fix severe flaws in the architecture of a non-trivial piece of
software. Moreover, a user experiment shows that our language is faster and
easier to learn and understand than other formal languages for software
documentation.
