Posted by: ahmedashfaque | January 3, 2015

Software high level design – why it is important


When you start your design you are often stuck with the story with where to start. Most software designers face this reality from project to project. The business analysts have completed their requirements gathering and have given you perfect specifications and yet you struggle with starting your design.

requirement specifications will give you ideas about what the software product will be doing. But how the software product will be doing those things is still not done yet. It is now your turn to answer this question.

With advancement of software engineering techniques, the design of a software product has been divided into 2 parts. High level design and low level design. As is the case with every software product, the software design always turns out to be complex. To reduce this complexity many techniques have evolved. All these techniques revolve around the notion that the only solution to reduce complexity is to use the principle of divide and rule. You divide your design so that you end up with simpler small design parts. this is the principle you should always stick. To make this happen, the high level and low level design concepts have evolved. This really helps off course.

High level design should deal with slicing your design into layers. What are these layers? You may already know that there is clear expertise available these days in terms of user interface expertise, business logic building expertise and database creation expertise. So your layers should be corresponding with these expertise. Your layers should be a user interface design, the business logic design and finally the database design.

Once you are clear about separating these layers then definitely you are on the right path. Dividing your design into thee layers definitely helps everybody in the project team. the user interface designs will help the designers doing their bit of work with any interference from any body working on other layers. similarly the business logic implementers will be doing their work independently of people working on other layers. Similar will be the case with database designers. this kind separation really works beautifully.

People working on their own layer later can do their own low level designs. Using concepts like modularization, abstraction etc. low level design can be accomplished.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Categories

%d bloggers like this: