The Architect´s Napkin

.NET Software Architecture on the Back of a Napkin

  Home  |   Contact  |   Syndication    |   Login
  9 Posts | 0 Stories | 31 Comments | 0 Trackbacks

News

Archives

Post Categories

Before I bore you with some theory let me quickly show you, how I think you can fill any (!) empty napkin in a minute with a meaningful sketch of a software system, be it completely new or already 30 years old, whether it´s object oriented or all assembler code, and regardless of its size.

Imagine your boss calling you in to talk to you about a new software project. He explains to you his grand vision of a one-size-fits-all "Hello, world!" program. And you can´t hold back your excitement. What a great opportunity for you to show off your skills as a software architect! You go through the requirements with him and make sure you understand every detail. Then you impress your boss with your first architectural sketch. It´s rough, yes, but at least you can show him something right away. You don´t fear an empty sheet of paper (or Visio drawing canvas). Right to the contrary! You love napkins when they are empty!

Here´s what you draw for your boss on the back of a napkin you happen to have brought with you:

image

That´s it. Plain simple, and enough to convey your understanding of his amazing idea.

And what is it you depicted? It´s the whole application, all that you have to develop and don´t know yet how to implement. All the intricacies and complexities of the application are represented by, well, just one "software cell" - the circle with the dot in the middle:

image

I call it a software cell, because it looks like a biological cell with a membrane and a core:

image

source: http://www.schule.at/index.php?url=kategorien&kthid=6191

And like a biological cell a software cell encapsulates complex processes and shields them from the outside world. By drawing a software cell you thus distinguish an inside from an outside, a system from its environment.

image

That´s not difficult, isn´t it? But it´s an important first step, since it draws a line in the sand separating what you have to implement from what you don´t have to implement. And it´s important because it starts software development on a level of abstraction your boss is still comfortable with. He´s an important stakeholder of the whole effort, so you want him to feel comfortable and confident and understanding as long as possible. How better to do that than by drawing pictures even he understands?

posted on Wednesday, June 11, 2008 10:45 PM

Feedback

# re: How to fill an empty napkin 6/13/2008 1:51 AM Ignacio
The very same foundation of OOP.

# re: How to fill an empty napkin 6/13/2008 9:33 AM Ralf
What do you mean by "foundation of OOP"? You mean the encapsulation I talked about? True! OOP is about that, and software cells follow OOP in that regard. The encapsulate state + functionality.

But although there are similarities between software cells and classes/objects, to me it´s more important to see the differences:

-Software cells are about something OOP is not concerned with: OS processes.
-Software cells are about large scale application structures.
-Software cells can be nested, which is very important for describing complex software.

OOP was right in bringing encapsulation to our finger tips. But OOP falls short in making large systems manageable. Encapsulation without nesting is not enough. And encapsulation without a notion of distributed systems is not enough.

# re: How to fill an empty napkin 6/13/2008 11:59 PM Ignacio
Im talking about objects and messages. the idea of OOP was based in the biology, cells exchanging chemical messages.

# re: How to fill an empty napkin 6/14/2008 9:01 AM Ralf
@Ignacio: Do you have link to a document talking about this origin?

# re: How to fill an empty napkin 6/15/2008 2:15 AM Ignacio
i dont remember any, but a quick search in google about Alan Kay give me this: http://userpage.fu-berlin.de/~ram/pub/pub_jf47ht76Ht/doc_kay_oop_en
i post the right source when i find it

# re: How to fill an empty napkin 6/15/2008 7:13 PM Ralf
@Ignacio: Sorry, link does not work. "Access denied". Maybe you want to give the title of the paper and the context, so we try to find another source.

Post Feedback

Title:
Name:
Email: (never displayed)
Url:
Comments: 
Please add 2 and 3 and type the answer here: