development are pursued for facilitating the software
project. For example, a state government wants to
install imaging systems at government controlled
toll gates, that accurately capture graphic images of
license plates of cars that pass through toll gates
without paying the toll, which would then be used
for generating letters sent to the person under whose
name the car is registered with a statement of fines
that the person of the car must pay to the
government, in order to avoid charges of breaking
the law purposefully. It is important that such a
system have a near zero rate of false positives and
false negatives and would have to be engineered
using conservative approaches before being put in
production. The project team implementing such a
project should use conservative techniques given
that the risks associated with system not working per
the goal is unacceptable and that the architecture
supporting the implementation has not been in use
long enough to qualify as a mature design pattern.
2.1.3 Ceremonious
When the architecture maturity is high, i.e. the
architecture is known to be robust in multiple
instances of software development projects and
when agile methods are conscientiously not
employed and practitioners choose the traditional
methods for software development, then the project
observes a high degree of ceremony – a practice
which can be revisited and re-assessed in the face of
high architecture maturity to determine whether
wastage of time and resources is occurring.
Conservative projects can also be ceremonious and
certainly vice versa, but conservatism in the former
case is driven primarily by low risk tolerance
associated with a little used design pattern and in the
latter case can be more attitudinal and cultural
however this may not necessarily always be the case.
For example, with the Sarbanes Oxley Act of 2002,
which applies to all organizations publicly traded on
any one of the US stock exchanges, firms are
expected to enforce detailed processes and extensive
documentation for all software projects implemented
within the organization and hence a culture of
conducting software projects ceremoniously is the
norm for these organizations.
2.1.4 Optimizing
Software development projects that make use of
mature architectures and deploy agile software
development methods are optimizing projects. These
projects leverage architecture maturity to eliminate
associated technical risks and make use of agile
methodology to adapt to and respond to changing
customer requirements. Software is developed
incrementally on a sound architectural foundation
with focus on implementing on-demand solutions in
short periods of time. Optimizing projects are thus
the result of high architecture maturity and high
degree of agility observed during software
development. Consider the case of context-aware IT
solutions, such as PeopleSoft that are created to
implement business processes relevant to a specific
domain – that of payroll processing.
2.2 Characteristics of the Project Types
Having discussed the four quadrants of the
architecture maturity and agility matrix, the question
is - is one quadrant superior to others when it comes
to deploying a project type that teams ought to
engage in, given a software development endeavour?
The answer is, it depends. Mature architectures were
also once nascent structural frameworks which
emerged borne out of the creative endeavours of
practitioners and with use over a period of time
proved to be mature enough to gain widespread
adoption in endeavours of a similar nature. At the
same time, different industries are subject to
different government policies and often legal and
compliance risks play a factor in choosing the more
traditional, conservative and ceremonious approach
to software development over agile methods. On the
other hand, experimental projects can yield highly
creative solutions and should not be discouraged if
the team is aware of the risks they are taking when
engaging in experimental software projects and the
fact that there is a possibility that such projects can
turn out to be of the “hit-or-miss” variety over the
long term.
The optimizing solution does tend to leverage
mature architectures – making use of agility in a
calculated manner, thereby being able to deliver
software in short cycles of time – a strong value
proposition for the customer or end users of the
software. It also leverages the maturity of the
underlying architecture which plays a fundamental
role in delivering reliable solutions. In fact, if the
underlying architecture is known to exhibit a high
degree of maturity, then agile methods should be
considered the best practice for software
development, unless there are other pressures or
forces in play that leave the team with no choice but
to adopt the ceremonious way of doing software
projects. It is also worthwhile noting, that as the
architecture maturity increases over a period of time,
development teams potentially first engage in
AGILITY BY VIRTUE OF ARCHITECTURE MATURITY
345