The Architect´s Napkin

Software Architecture on the Back of a Napkin
posts - 69 , comments - 229 , trackbacks - 0

My Links



Image Galleries

How to fill an empty napkin

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:


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:


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



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.


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?

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



# re: How to fill an empty napkin

The very same foundation of OOP.
6/13/2008 1:51 AM | Ignacio

# re: How to fill an empty napkin

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.
6/13/2008 9:33 AM | Ralf

# re: How to fill an empty napkin

Im talking about objects and messages. the idea of OOP was based in the biology, cells exchanging chemical messages.
6/13/2008 11:59 PM | Ignacio

# re: How to fill an empty napkin

@Ignacio: Do you have link to a document talking about this origin?
6/14/2008 9:01 AM | Ralf

# re: How to fill an empty napkin

i dont remember any, but a quick search in google about Alan Kay give me this:
i post the right source when i find it
6/15/2008 2:15 AM | Ignacio

# re: How to fill an empty napkin

@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.
6/15/2008 7:13 PM | Ralf

# re: How to fill an empty napkin

Loved the Analogy !!!

Thanks for this idea.
7/27/2010 3:17 PM | Raghuraman

# re: How to fill an empty napkin

It has something from Vera Birkenbihls book "Gehirn-gerechtes Lernen", a book i read some time ago. She would say "Sieben Kügli" for the idea about the napkin (the more "Kügli" you get the better it is. It is a grading system to measure the quality of a presentation to suit the needs of our brains as much as possible).
4/15/2011 10:31 AM | Kajagi
Post A Comment

Powered by: