A Rationale-based Model for Architecture Design Reasoning
A Rationale-based Model for Architecture Design Reasoning
A Rationale-based Model for Architecture Design Reasoning
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
2.1. Industry practice of design rationale<br />
be more than one answer and most likely the answers are non-trivial. However, there is<br />
something fundamental that underlies such project issues - the soundness of the design<br />
decisions.<br />
Software engineering practices mostly focus on the design of concrete and visible artefacts<br />
and either omit or treat the decision making documentation as separate [43]. <strong>Design</strong><br />
rationale is commonly ignored and undocumented. Most of the time they are not mandated<br />
as part of the software deliverable. Even though architecture design is thought to<br />
be a very important stage in the development process, the architecture design rationale<br />
are usually not rigorously tested in the design review process. The treatment of those<br />
factors which influence the design decisions are usually implicit and ad hoc. For instance,<br />
architecture decisions would make assumptions on factors such as delivery schedule, level<br />
of expertise in the development team and plat<strong>for</strong>m stability, but these assumptions are<br />
mostly implicit. <strong>Design</strong>ers could be biased toward personal preferences and agenda that<br />
would affect the objectivity of the design decisions.<br />
Given that design decisions are predominantly an implicit process, it is possible and<br />
quite common that a series of incorrect decisions can escape quality checks set out by<br />
development methodologies and standards, resulting in project failures. Thus we posit<br />
that improving the decision making process can help minimise mistakes and failures. Along<br />
with many other researchers [11, 12, 124], we argue that making quality decisions is an<br />
essential part of software development. High quality design requires that each decision is<br />
rational and that all relevant factors which influence the decision are well considered. As<br />
such, the system design process will improve if a methodology to enhance design decision<br />
making is available.<br />
In a successful project, planning and architecture design are two of the crucial steps<br />
[154]. These two factors are interrelated in that the project plans set the constraints <strong>for</strong><br />
the architecture design, and the architecture design dictates the resources required in a<br />
project. For instance, design decisions made during the architecture design dictate the<br />
resources required to develop the system. Even though the role of architecture design is<br />
very important in a project, its decisions are often not sufficiently justified. Less than<br />
optimal decisions could be made and risk could arise when decisions are not justified<br />
systematically. The author has numerous encounters of such incidents and some real-life<br />
examples are illustrated below:<br />
• <strong>Design</strong> <strong>for</strong> the Future - arguing <strong>for</strong> reusability or flexibility, the architects make<br />
architecture design overly complex and costly without delivering additional benefits.<br />
The reusable or flexible features are actually never required or necessary [15].<br />
13