in

Emerald Hand

Emerald Hand, Inc. community home page.

This Blog

  • Home
  • Contact
  • About
  • Directory of Computers/Tech Blogs

Syndication

News

I'm back to blogging

Worm in liquid maze

Design and development of information management tools.

Is software development like city planning?

Last weekend I went to Chicago and on my trip I got a chance to read some of Code Complete (2nd edition). This is a wonderful book that digs deep into what software development is and how it can be improved. Most of the book is concerned with the actual coding. First few chapters, though, cover software process from a higher level of abstraction and talk about other development activities (requirements analysis and design).

The book also shows how metaphor use can improve understanding of the problem at hand. The mind usually does a better job at handling something familiar than at handling something completely new. Chapter 2 goes into what software development is and what it is like. Is it like writing a letter? Or is it more like building a house? Well, as I was on my way through Chicago, I got stuck in traffic and while I was waiting for the cars to move I had an idea that city planning and development is similar to software development in many ways.

Initially bad city design can cripple the city and make parts of it as hard to maintain as poorly designed code. A city is usually separated into various areas (zones): commercial, industrial, housing. Software is often split into several areas (modules) as well: user interface, data access, business logic, etc. There’s even correlation between city services, police for example, and aspect oriented development (logging and errors handling aspect come to mind), but I feel I’m pushing the metaphor too far:)

Roads is the way for the city resources to flow from one area to another (people going from home to work and back, material going into factories and products coming out). Another way to look at it: roads (as well as electrical lines, etc.) are the pipelines for the different areas exchange various types of information. Their design must be flexible and must take into account future changes when various areas grow. In software interfaces must be just as carefully planned to ensure that any future class modifications will not affect the whole system.

I’m not sure if this analogy has real life use. I will keep it mind and try to get a feel for using  it to come up with better software design or maybe even improve my software development process (which, probably, can use some improvement:) ).

Share this post: Email it! | bookmark it! | digg it! | reddit!
Readability Stats: Word Count: 400; Sentence Count: 20; Grade Level: 10.8, more info...
Published Jul 26 2005, 05:44 PM by Ornus
Filed under:

Comments

No Comments

Leave a Comment

(required)  
(optional)
(required)  
Add

About Ornus

Lead Sider and Xelog developer. I'm interested in information and how we can better manage it using computers. I'm also into design and understanding how to creating cool, useful, simple things.
Copyright © 2006-2007 EmeraldHand, Inc. All rights reserved.
Powered by Community Server (Non-Commercial Edition), by Telligent Systems