mentioned as a form of living documentation, e.g. in 
(Adzic, 2011; Smart, 2014). 
The main idea is that the documentation is 
coupled to the source code by connecting it to the 
toolchain used to develop the code itself and that it 
is as accessible as the code. 
Going back to the UML class diagram example, 
it will be considered a living diagram if it can be 
automatically updated following a corresponding 
change in code and vice versa. 
1.3 Why Wiki? 
Using wiki for documentation has several 
advantages. First it is a proven and acceptable tool 
for collaboration. Its simplicity and high 
accessibility, usually through common browsers, 
makes it an attractive target. It is also based on plain 
text which makes it also easy to manipulate by 
programs. It's free from helps and directs the 
developers/engineers to work in higher level of 
abstraction, away from the formality and constraints 
of today's programming languages. Above all, 
markdown is a simple way to mark and link 
concepts, models and other various levels of 
software artifacts. In this work we emphasize wiki as 
a common base for most of the practices or methods 
of software documentation. 
1.4 Related Work 
FitNesse (Adzic, 2008) is a wiki-based web tool for 
non-developers to write formatted acceptance tests 
through tabular example/test data. 
BDD (Behavior Driven Development) (North, 
2006), is an extension of TDD (Test Driven 
Development/Design) aiming at writing 
requirements by non-technical stakeholders. 
Cucumber (Wynne and Hellesoy, 2012) and 
SpecFlow (SpecFlow) are tools which accept stories 
written in a somewhat constrained natural language, 
directly supporting BDD. They are easily integrated 
with unit testing and user/web automation tools. 
Here (Yagel, 2011) we reviewed these practices and 
tools. 
DaSpec (DaSpec) is a new tool that uses wiki for 
writing executable specifications in free form and 
exercises the system under test for 
approval/acceptance. BDDfy (BDDfy) is a tool that 
creates documentation from unit tests written in 
some disciplined manner, thus reserving the usual 
order and generating documentation from lower 
levels. 
In the diagramming area, many tools are 
generating source code from, e.g., UML diagrams. 
Some of them use standard formats, e.g. XMI files 
used by ArgoUML (ArgoUML). Some of the tools 
also support reverse engineering for creating or 
updating those diagrams, following changes in the 
code – thus helping keep the documentation 
updated. 
Mapador (Mapador) is a service for 
automatically extracting documentation from code, 
which targets writing documentation as part of the 
development process and not a posteriori.  
ATDD (Acceptance Test Driven Development) 
is an extension of TDD, also known as Agile 
Acceptance Testing (Adzic, 2008). Further 
extensions are Story Testing, Specification with 
examples (Adzic, 2011) or Living/Executable 
Documentation (Brown, 2011; Smart, 2014). 
The mentioned coming book (Martraire, 2016) 
emphasizes these relevant practices: Living 
Diagram, Living Glossary, Declarative Automation, 
Enforced Guidelines, Small-Scale Model and others. 
For example, the book discusses how using 
Javadoc's DocLet (documentation generator), one 
can parse source files for annotations marking main 
domain concept and then generating a glossary 
document.  
Concerning diagrams, there are libraries and 
services which accept as input simple text format 
and can then generate diagram documentation. See 
for example: yuml.me, diagrammr.com, and 
structurizr.com. More general legacy tools can be 
used too, e.g. Graphviz (Graphviz) that uses .dot file 
format for generating graphs. 
Enterprise/ALM tools like IBM's Rational Team 
Concert (IBM) put emphasis on traceability which is 
important to link the various documentation and 
software levels. 
More generally, the emphasis on domain analysis 
follows the Domain Driven Design (DDD) work 
(Evans, 2003). Even at higher level of abstraction 
we can make use of ontologies to guide the 
documentation and development process, as 
discussed at (Feathers, 2004; Osetinsky and Yagel, 
2014). 
 
Wiki Software. It is now common that project 
management tools, version control systems and 
services offer built-in wiki support. Github (Github) 
(a well-known version control cloud service) for 
example is adding a wiki by default to every new 
code repository (see: https://help.github.com/ 
articles/about-github-wikis/). However, in contrast 
to our proposal in this paper, this wiki is managed 
separately from the code (e.g. in terms of security 
policies and git versioning). It is also a common