You are on page 1of 2

PM 2 go Praxis

Applied to software development, the notion of a Design Decision


Projektmanagement wird ein zunehmend wichtigerer Rationale can be extended: It could also deal with a decision which
Erfolgsfaktor für Unternehmen im Wettbewerb. In was made during the implementation. Obviously, that would be
dieser Ausgabe von PM 2 go Standards lesen Sie die helpful for a developer in respect of Program Comprehension. Re-
praxisorientierten Kurzartikel aus dem Blog von Projekt considering the exemplified refactoring, an appropriate rationale
Management Beratung. could justify, for example, why an obfuscating piece of the code was
implemented like that or why it was not refactored subsequently.
Possibly because a refactoring would simply have been too costly
Fighting lack of documentatin in for that piece of code, while the development has been considered
as sufficiently agile despite this distinct violation of a common agile
agile software development practice.
By Andreas Heilwagen on March 7th, 2011
Are agile values and principles met?
Similar documentation approaches based on Design Decision
Rationales were proposed in the context of agile software
development in research papers – with a focus on a lightweight
producing of the documentation as well as on a supposed
During my last project, Fabian Kiss, a software developer who loves facilitation of decision making in teams through it. But also
agile and lean environments, worked on his master thesis. He says, literature for practitioners advises the idea of documenting with
that in his daily work he is never tired of convincing a stakeholder Design Decision Rationales: Andreas Rüping explicitly addressed
of the benefits attained by practicing sustainability throughout the that idea in his pattern collection for documenting in Agile by a
entire development lifecycle.. Now he has written his thesis and pattern named – not surprisingly – ”Design Rationale”. Robert C.
here is a summary of his approach to support documentation in Martin as one of the authors of the Agile Manifesto addressed it
agile software projects: likewise explicitly in his Agile book when reflecting on the agile
value ”working software over comprehensive documentation”.
Design Decision Rationales in Agile
So why not considering this idea properly as an agile
It’s common knowledge that maintenance and further practice? Then, the documentation should base on informally
development of existing software products constitute most of represented Design Decision Rationales: There exists no common
the work in daily software development. So it is essential for representation of them, but recommendable is a brief text written
software developers to understand from the source code what has in natural language – freely adapted from the form of user stories.
been implemented – and particularly how that has been done. Here is a fictive example about the implementation of a credentials
Eventually they have to understand the structure of the code and verification in a typical login scenario:
its behavior in the context of the application domain. This cognitive
task is well-known in academia as Program Understanding or password is passed together with its original set date to determine
Program Comprehension since the late 70s. internal encryption
passwords set after 2008-10-01 have been encrypted in DB with
Importance of Program Comprehension in Agile SHA-2, not anymore with MD5
It might not be suggesting to consider such academic stuff Never neglect customer satisfaction!
originating from the Jurassic era of computing in contemporary
When the Program Comprehension of a developer is supported
agile software development. However, it is evident that the
by documentation, a consequential benefit could be the improved
common agile practice of continuous code refactoring increases the
quality of the resulting software product. Without doubt this
need for Program Comprehension as the code has to be understood
would be a benefit for the customer. However, it is questionable
again and again. Certainly, you can count on the favored face-
whether that benefit is “direct” enough for the customer:
to-face communication with fellow developers and, further, with
Supporting Program Comprehension does not directly serve
non-developer stakeholders. But let’s be honest, there is always a
customer satisfaction – the highest priority according to the
certain knowledge decay that necessitates a developer to “consult”
phrasing of the first agile principle in the Agile Manifesto. Most
the code. One more time, Program Comprehension is involved.
likely the customer won’t request documentation that is intended
Consequently, it is advisable to have a documentation that supports to support a programming-related matter. Usually such matters are
more or less directly the Program Comprehension of a developer – not understood by non-developers at all. Thus the developers have
additionally to the concept “the code is the documentation”. Taking to initiate a documentation for the purpose of supporting Program
account of the agile value ”working software over comprehensive Comprehension.
documentation” makes it clear that such a documentation has to
Certainly, this is not problematic as long as the customer
induce a benefit discernible to the customer – to justify the effort of
appreciates quality to a certain extent. In that case the ninth
documenting when considering the YAGNI principle. A challenging
agile principle approves autonomous documenting (“Continuous
endeavor as we deal with a matter that is apparently related solely
attention to technical excellence and good design enhances
to programming.
agility.“). But if the customer does not appreciate quality to
Design Decision Rationales as a documentation approach such an extent, the developers have a problem. After all, you
A possible solution could be a documentation based on Design cannot disregard customer satisfaction as “our highest priority”.
Decision Rationales, originally known from the discipline of system To prevent such a situation, we should have a secondary, more
development. By extracting the essence from its various definitions discernible benefit apart from the primary one (support of Program
in literature, you can say that a Design Decision Rationale states Comprehension) to justify the effort of documenting. As quoted
the reasons behind a decision that was made during the design of here from a research paper, there actually seems to be an
a software system. This in order to clarify the decision. For that appropriate further value of Design Decision Rationales in general:
purpose, it can also argue why alternative design options have been “Managers or users can use them to evaluate the design. Lawyers
rejected. can use them to determine if the design is intellectual property.”

1
Nonetheless, we don’t have to think that far beyond ordinary
software development (lawyers are usually not involved as project
stakeholder, aren’t they?). Instead, think of a facilitation of a
crude change impact analysis conducted by a project manager as
a non-developer stakeholder. This facilitation could feasibly occur
through Design Decision Rationales which are understandable – at
least partially – for non-developers.
A documentation based on Design Decision Rationales as shown in
this article might not be hard to introduce. Most likely you already
use a code documentation tool which you can extend for that aim.
So why not trying to document your decisions instead of (only) the
results of those? Certainly, you can argue that practicing this idea
is not necessarily lightweight enough. But by experimenting with
it, you can at least gain some practical documentation inspiration
specific to agile software development!

You might also like