My Stuff

2010 Conferences

OSGi DevCon @ JAX London

February 23 - Keynote titled OSGi in the Enterprise: Agility, Modularity, and Architecture’s Paradox

EclipseCon

March 22 - 25 - Tutorial on Modular Architecture

Über Conf

June 14 - 17 - Sessions titled Turtles and Architecture and Patterns of Modular Architecture

Catalyst

July 26 - 30 - Two sessions on rich mobile applications and one on agile development. Half day tutorial on software process improvement.

Tweets @ Twitter

re: #apple event "We sold more iPads than any PC manufacturer sold of their entire PC line." 2012-09-12

re: #Apple Event ""Our notebooks now rank #1 in the US in Market share in the last three months." 2012-09-12

Right on. I just won a Best Buy drawing worth $1000. Either that or I won a shiny new virus by clicking the link. Hmm...what to do. 2012-08-29

The #osgi alliance response (http://t.co/KrN8XNWg) to the @mreinhold #jigsaw announcement (http://t.co/9YvcDdqC). 2012-08-29

Good Q&A with @mreinhold on project #jigsaw. http://t.co/9YvcDdqC. Modularity will change the way we design and run apps! 2012-08-28

LinkedIn Profile

The opinions expressed on this site are my own, and not necessarily those of my employer.

Turtles and Architecture

Filed Under Architecture & Design, Development, OSGi |  

The story of software architecture reminds me of the following story.

“A well-known scientist (some say it was Bertrand Russell) once gave a public lecture on astronomy. He described how the earth orbits around the sun and how the sun, in turn, orbits around the center of a vast collection of stars called our galaxy. At the end of the lecture, a little old lady at the back of the room got up and said: “What you have told us is rubbish. The world is really a flat plate supported on the back of a giant tortoise.” The scientist gave a superior smile before replying, “What is the tortoise standing on?” “You’re very clever, young man, very clever”, said the old lady. “But it’s turtles all the way down!”

- A Brief History of Time by Stephen Hawking

Software architecture is “‘turtles all the way down.”

The Ivory Tower

Many of us can relate. In dysfunctional organizations, architects and developers fail to communicate effectively. The result is a lack of transparency and a lack of understanding by both sides, as shown in the diagrm (click to enlarge). The failure often occurs (though I recognize there are other causes) because architecture is about breadth and development is about depth.  Each group has disparate views of software architecture, and while both are warranted, a gap between these views exists. The architect might focus on applications and services while the developer focuses on the code. Sadly, there is a lot in between that nobody is focused on. It is this gap between breadth and depth that contributes to ivory tower architecture.

Turtles and The Tower

Without question, the ivory tower is dysfunctional (regardless of cause), and systems lacking architectural integrity are a symptom of ivory tower architecture. So assuming good intent on the part of the architect and the developer, how can we bridge the gap between breadth and depth? How can we communicate more effectively? How do we increase understanding and transparency?

My favorite definition of software architecture was offered by Ralph Johnson in an article by Martin Fowler. He states:

In most successful software projects, the expert developers working on that project have a shared understanding of the system design. This shared understanding is called ‘architecture.’ This understanding includes how the system is divided into components and how the components interact through interfaces. These components are usually composed of smaller components, but the architecture only includes the components and interfaces that are understood by all the developers…Architecture is about the important stuff. Whatever that is.

The key aspect of this definition that differentiates it from many other definitions of architecture is that of “shared understanding.” We must have a shared understanding of how the system is divided into components, and how they interact. Architecture isn’t just some technical concept, but also a social construct. And it is through this that we can break down the divide between architects and developers.

To ensure shared understanding, we have to architect “all the way down.” Architects cannot worry only about services and developers cannot worry only about code. There is a huge middle ground that each must also focus on, as illustrated by the diagram at right (click to enlarge).

Focusing exclusively on top level abstractions is not enough. Emphasizing only code quality is not enough either. We must bridge the gap through other means, including module and package design. Often times, when I speak, I ask the audience to raise their hands if they spend time on service design. Most do. I also ask them to raise their hand if they spend time on class design and code quality. Again, most do. But then I ask if they also spend time on package and module design. Usually, only a small percentage leave their hands raised.

This is unfortunate, because module and package design are equally as important as service and class design. But somewhere along the way, with our emphasis on services and code quality, we’ve lost sight of what lies in between. Within each application or service awaits a rotting design, and atop even the most flexible code sits a suite of applications or services riddled with duplication and lack of understanding. A resilient package structure and corresponding software modules help bridge the divide between services and code.

Certainly, if I’ve said it once, I’ve said it at least a few times, we need to start focusing on modularity to ensure a consistent architecture story is told. It is the glue that binds. It’s the piece that helps bridge low level class design with higher level service design. It’s the piece that helps bring down the ivory tower, enhance communication, increase transparency, ensure understanding, and verify consistency at multiple levels. It is the piece that allows us to “architect all the way down.”

Comments

12 Responses to “Turtles and Architecture”

  1. Ben on November 3rd, 2009 11:30 pm

    As a developer, I think the problem of the divide between architect and developer stems from a culture of assuming that the architect holds a senior position in a hierarchical organisation. Subsequently the developer’s opinion typically will have less weight, even when it comes to implementation design.

    This can result in the developer becoming disenfranchised with the development process, creating a rift that is often hard to bridge.

    Hopefully with new development methodologies (such as Agile) these antiquated views on hierarchy will be diminished leading to improved communication overall.

  2. Simon Brown on November 4th, 2009 8:24 pm

    Good point Ben, this tends to happen a *lot* in organisations and I’ve certainly experienced disenfranchisement myself. For me, the software architecture role is different, but it’s a *role* rather than a rank.

    I like your article Kirk. I’ve written an article about this gap before (http://www.codingthearchitecture.com/pages/book/mind-the-gap.html) but never thought of looking at it from a granularity perspective. :-)

  3. Applied Modularity - Part 4 : Software & Technology @kirkk.com on November 30th, 2009 7:26 pm

    [...] flexibility compromised by a single line of code. Unnerving how that happens! We really do have to architect all the way down.  Anyway, let’s fix this [...]

  4. Architecture All the Way Down : Software & Technology @kirkk.com on December 15th, 2009 4:40 pm

    [...] Turtles and Architecture, I talked about how important it is that we “architect all the way down”. It helps [...]

  5. Chapter 7 – Reference Implementation : Modular Architecture on December 21st, 2009 7:36 pm

    [...] flexibility compromised by a single line of code. Unnerving how that happens! We really do have to architect all the way down.  Anyway, let’s fix this [...]

  6. Some quality reading… « Unnaki on January 26th, 2010 4:54 pm
  7. 3 Pillars of Architecture : Software & Technology @kirkk.com on January 27th, 2010 4:44 pm

    [...] Turtles and Architecture generally focused on the social pillar of software architecture, but also talked a bit about how the technology pillar can increase understanding, visibility, and transparency. The general sentiment is that architects must focus on more than just concepts and developers must focus on more than just code. There is a middle ground that demands attention, as well. [...]

  8. How to make enterprise software Nimble « Paremus Nimble Blog on April 8th, 2010 3:28 pm

    [...] Seems I’m not the only one to have made the turtles reference – Kirk Knoernschild makes the same analogy, probably inadvertently borrowed the same metaphor [...]

  9. Farewell Blog, Hello POMA : Software & Technology @kirkk.com on May 7th, 2010 5:19 pm

    [...] I’ve focused considerable energy on espousing the virtues of modularity and OSGi. From conceptual posts that discuss the important architectural benefits of modularity to simple examples that illustrate the benefit. From the beginning to the end, I’ve written [...]

  10. makintosh on August 6th, 2011 4:51 am

    ???? ???????? ???? ????? ?????? ? ????? x-strange.ru
    ?????????????, ???????? ?? ??????? ?????????????????…
    ?????? ????????? ????? ???????, ???? ??????????? ?????????? ?????? ?????.
    ????????? 4 ???? ?? ????????, ???? ?????? ??????? ?? ??? ?????? 220$.
    ?? ? ??????? ???? ????? ??????????? ??????????!
    …?????? ???????? ??????… ??? ?????? ? ? ?????? ???????? ???? ?????,
    ????? ?????? ???? ???????? ???????? ?? ???? ? ???????????????
    ???????????? ??????????…????? ??? ???? ? ?????? x-strange.ru

  11. tyuytuytuytuyt - Page 5203 on January 1st, 2013 7:05 am

    [...] of shapes, designs, and functions ugg gypsy reviews If you are concerned, speak to your doctor ugg caspia women’s NFL gifts are unique gift items in the market and they are undoubtedly appreciated by the NFL [...]

  12. Fafeditit on June 26th, 2013 2:21 pm

    ?????????? ? ????????? [url=http://resar.ru/potolki_tkanevye.html] ????????? ???????? ???????? ??????? [/url] ?? ??????????? ??????

Leave a Reply