Random Blog

Tuesday, February 6, 2007

What are your design considerations?

What do you like to keep in mind when designing a software ?

I like to remind myself the following - in no particular order though

1) Avoid ripple affect
One of my friend who was implementing a software project for a major Car manufacturer was asked (in all seriousness)-by one of the associate at the site , who was an end user- and not a technical savvy individual :'I don't understand one thing about your application. If I have flat tire- why do I have to remove my windshield ?'

While designing - Ask questions like- What if I were to change the UI to Swing from a web based application- what all components will get affected ?
If i were to change the database from oracle to Informix- would I have to change any JSP ?

2) UI will change frequently
The user interface is bound to change frequently during the life cycle of the product-In fact even before the application is released perhaps.
The changes can be cosmetic like changing color etc or more impacting as changing the navigation sequence
.Such changes always seem trivial to the person requesting it
And should be unless this has not been accounted for during the design phase

3)Don't leave performance for last
Performance should be on the table right from Day One
A good design will keep performance as one of the fundamental aim for the product delivery rather than squeezing it in as a last minute requirement


4)Keep room for changes
In the ideal world there would be short lines in the airport on Christmas eve- and requirement phase would always end neatly before the design hasstarted.

In the imperfect world new or adjusted requirements do show up at unaccepted time or in any case in later versions of the application

Avoid rigidity in the application which would make bringing in these changes a mammoth effort

2 Comments:

Blogger Shailender said...

Very nice writeup.
One thing I want to add related to point 4)Keep room for changes is that although it's good to keep room for changes, the question usually is how much room.
I do not like lots of room meaning application that is extemely flexible and can handle most of future changes because usually that means application has lots of configuration and that can become messy to manage.
Also, the future situations that application is designed to handle mostly never occur.
So some room with sensible defaults for configuration good, lots of room with or without defaults, bad.
My 2 cents.

February 15, 2007 at 3:46 PM  
Blogger RN said...

You are very right- zammu-da-zakt
A delicate balance needs to be drawn.

We all love re-usability- but the fact of the matter is - each application has a life cycle and will eventaully get rewritten and redesigned many times over.

One way to predict what kind of changes to accept is to look at the pattern of changes that have happened in the past
e.g if you have a history of adding new attributes to key objects or changing navigation to suit different customers or to generate new reports- you will know what kind of changes to expect in future.

But - your point is well taken...

February 15, 2007 at 7:18 PM  

Post a Comment

Subscribe to Post Comments [Atom]

<< Home