Much has been made of the rift between agile developers and
IT architects, especially enterprise architects. Agile development has
turned the solution implementation world on its head, eschewing traditional architecture
and all other attempts to define things in advance. But the agile world
has evolved to the point where an architectural foundation is recognized as
necessary to implement agile on a large scale. Without architecture to
hold things together, you may well have a dozen agile teams moving in
completely divergent directions – rather than building a cohesive
product. But this doesn’t take us back to the world of big design up
front (BDUF) – architecture has to evolve as well. The key is to develop
the architecture in parallel with the agile development. Very much like
agile planning (where you create a high level plan, but only produce detailed
plans for the next increments – on a rolling basis), agile architecture starts
with a high level superstructure and detail is added as needed to support the
agile teams. Architecture decisions are pushed down and deferred until as
late as possible – so that refactoring is minimized when decisions are
modified.
In years past, architecture provided guidelines and
directives (often in the form of a reference architecture) and developers
either complied or they didn’t. Governance was applied after the fact –
certifying that a product was in compliance with the architecture (what a
surprise – it almost always was!). This, of course, led to architectural
anarchy and situations where organizations found that they had more than one of
everything (from platforms to coding styles) and many of some things (security
implementations, for example). This situation of maintaining multiple
platforms, redundant applications, and poorly documented code has led to the
high percentage of the IT budget being devoted to O&M, rather than new
development to address new business requirements.
So, what does this have to do with Architecture Owned Code
(AOC), you might ask? Well, at Everware-CBDI we have developed an
approach that supports agile development at scale. A component of the
approach takes all of the aspects that you want to have consistent across the
enterprise (such as deployment details, authentication, error handling,
auditing, data access, messaging, common
business APIs, etc.), creates models to capture these aspects and other design
patterns to be applied across the board, and generates the code for this “common
platform” that is provided to the development teams to build upon. While this
may include many low-level, utility services, it can also include access to
common business services and COTS APIs, such as for credit processing or
document management. Providing AOC automates governance and flips the
perception of architecture as an inhibitor of development to an enabler of
development. We have found that most development teams accept this
readily, because it lets them focus on solving the business problem rather
than being blocked by wrestling with the intricacies of the technical
platform. The AOC base grows and is refactored as required by parallel
agile architecture development teams.
The result is that development proceeds much faster because
the agile teams are able to leverage this common
Enterprise-specific platform in much the same way they leverage provided APIs
in many current products, frameworks and languages. This
approach has many other benefits as well. For instance, the AOC is of
higher quality than hand-produced code, is consistent across all development
teams, and is able to more easily be modified or refactored. As a result,
the tendency of the code base to become more brittle as it grows is
fundamentally reduced. In addition, the refactoring exercises can be
essentially invisible to the agile developers – performed in an architecture
sprint, regenerated, and provided to the teams.
Architecture Owned Code has the potential to revolutionize
application development and fully enable agile development – at the enterprise
scale. To learn more about this new approach, please contact us.