26276 total geeks with 3498 solutions
Recent challengers:
 Welcome, you are an anonymous user! [register] [login] Get a yourname@osix.net email address 

Articles

GEEK

User's box
Username:
Password:

Forgot password?
New account

Shoutbox
MaxMouse
It's Friday... That's good enough for me!
CodeX
non stop lolz here but thats soon to end thanks to uni, surely the rest of the world is going good?
stabat
how things are going guys? Here... boring...
CodeX
I must be going wrong on the password lengths then, as long as it was done on ECB
MaxMouse
lol... the key is in hex (MD5: of the string "doit" without the "'s) and is in lower case. Maybe i should have submitted this as a challenge!

Donate
Donate and help us fund new challenges
Donate!
Due Date: May 31
May Goal: $40.00
Gross: $0.00
Net Balance: $0.00
Left to go: $40.00
Contributors


News Feeds
The Register
Google builds
crowdsourcing into
new Maps code stack
Google"s Native
Code browser tech
goes cross-platform
Yahoo! to "share
something special"
in New York on
Monday
Adobe"s Creative
Cloud fails at
being a cloud
NASA signs off on
sampling mission to
Earth-threatening
asteroid
US military
welcomes Apple iOS
6 kit onto its
networks
Jailed Romanian
hacker repents,
invents ATM
security scheme
Climate scientists
agree: Humans cause
global warming
MIT takes
battery-powered
robot cheetah for a
gallop
Google research
chief: "Emergent
artificial
intelligence?
Hogwash!"
Slashdot
RPiCluster: Another
Raspberry Pi
Cluster, With Neat
Tricks
NASA
Meteoroid-Spotting
Program Captures
Brightest-Yet Moon
Impact
Password Strength
Testers Work For
Important Accounts
Crowdsourced
Network Planning
For
Connection-Bridging
Startup
Cell Phones As a
Dirty Bomb
Detection Network
Linux Mint 15
"Olivia" Release
Candidate Is Out
Australian
Government Backdoor
Internet Filter
Shuts Down 1,000
Websites
Nintendo Hijacks Ad
Revenue From
Fan-Created YouTube
Playthroughs
9th Grade Science
Experiment: Garden
Cress Won"t
Germinate Near
Routers
Review: Star Trek:
Into Darkness
Article viewer

The Importance of Software Design



Written by:dimport
Published by:dimport
Published on:2003-06-21 07:19:46
Topic:Miscellaneous
Search OSI about Miscellaneous.More articles by dimport.
 viewed 13985 times send this article printer friendly

Digg this!
    Rate this article :
If your anything like me, you love to get your sleves rolled up and race into the coding. But stop, taking time to think through the design process will save you some serious heartache in the long term.

Find out why software design is so important...

Introduction

------------

There are many aspects to software design, and many varying methodologies. I will not be examining any particular methodology - rather, I will attempt to discuss why software design (regardless of the facet) is important.


I started programming at the age of 8 using BASIC (on a Tandy TRS-80.... don't laugh!!!). Even then, I had a very logical mind, and I planned and designed any significant programs I wrote.


Now I work in the software industry as a consultant, and I am constantly horrified by the number of young programmers these days that only know how to "hack" together a program. I am not suggesting they are bad programmers; on the contrary - they are likely to be some of the brightest and most creative coders. The problem is that without adequate planning any large project will get out of control.


This is just an overview article - and does not go into great depth.




Facets of design

----------------

When attempting to produce any piece of software (and particularly a large and complex one) it is vital to consider several areas. Many people only look at a small component of this when "designing" their programs. Why? Either they are not aware the other components require design, or they cannot be bothered to do it.


What "components" am I referring to? The main components in software include:

- required functionality

- additional (optional) functionality

- user interface

- internal data structures

- external data structures

- program/object structure


Without applying design principles to these (and often other) areas, you end up with a lot of common software problems: scope creep, poor functionality, unwieldly or difficult to use UI, poor performance, over-sized data files, overly complex processing, impossible to maintain code.


"Design" of required and optional functionality is traditionally the Specification phase of a project/program. The remaining areas should occur during the Design Phase of a project and be revised during Implementation (or post-Prototype). The exact timing and processes will

depend on the methodology being used, but all should occur.


Why design

----------

In the early stages of a project or program, the "functionality design" or specifications need to occur. Without specifications, the development is unguided. It is difficult to know when the program is complete - and impossible to accurately measure progress. It is also difficult for a programmer to be motivated when the task is not well defined.


It is just as important to perform this stage when writing software for yourself as it is when writing for a client.


User interface design is one of the most considered aspects of software design. Everybody is aware that without a usable interface, no software product will be widely used. It is important plan the user interface, and discuss or demonstrate it to the end users - something that you may consider appropriate may not fit well with the way they expect your product to work.


Even if coding for yourself; plan what information needs to be displayed and entered, how it relates to other information, and how to efficiently present that information.


Without performing UI design (whether graphical or command-line), a program will seem unprofessional, and most likely will have over-crowded and difficult to use screens.


Program design refers to the
strucure of the program. The methods here will vary greatly (particularly for OO vs procedural languages). A well designed program will be easier to implement; easier to distribute; and easier to maintain.


Internal and external data structures refer to how the data used by your program is held and handled within the program, or when stored for later use, respectively. Well designed data structures make it easier to handle the information within your program. More importantly, they make your program more flexible and easier to add or change functionality. They can also have a huge impact on the performance of your completed application.


Using design patterns may help solve certain problems, but if used improperly, they add complexity where not required. However, when used correctly and as part of the complete process, design patterns can save a lot of work in the program and data structure design areas.


Summary

-------

There are many facets of design to be considered when putting together an application. They cannot be considered in isolation, and should be performed for any sizable project.


Many tools, techniques and methodologies exist to aid with design - and not all are appropriate for all situations. However, the design of a product is of vital importance for it to be complete and usable, and robust.



This article was originally written by reesylou

Did you like this article? There are hundreds more.

Comments:
Anonymous
2007-01-09 00:05:44
if u give any real world example it ll be more clear......
Anonymous
2007-10-17 22:07:46
why is programming and design important?
Anonymous
2007-10-17 22:08:12
hello i love you..
Anonymous
2009-06-21 17:54:23
I have a question.Can anyone answer it : Why it is important to describe software designs?
Anonymously add a comment: (or register here)
(registration is really fast and we send you no spam)
BB Code is enabled.
Captcha Number:


Blogs: (People who have posted blogs on this subject..)
Action
First one on Tue 12th Jan 10pm
Yaw, this is the first blog post, just to begin with something. Nice site here, cool features like OSIDrive, and so on. However, strange that an "OpenSource Institute" uses non-OpenSource softare to host its site (Windows and IIS). It's not correct... I t
bb
A Daily Profanity at dailyprofanity.com on Mon 21st Dec 11am
For anyone who likes viz, and roger mellies profanisaurus. There's a website called amusing daily profanity which dishes up a humorous profanity every day via rss, twitter email and a few other ways. Rather rude words, but very funny in my opinion,
hambone
Blog entry for Wed 25th Nov 7pm on Wed 25th Nov 7pm
wtf i can't do geek 12. I don't know what to do. i want to kill myself becuz of this
haziman
Blog entry for Mon 9th Nov 4am on Mon 9th Nov 4am
for all geekos out there...
echmil
fuck you all!!!!!!!! on Sat 7th Nov 11pm
jag har tjock med tyngate tråkigt-.-
goldie
Blog entry for Tue 5th May 6am on Tue 5th May 6am
import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; import java.io.*; import java.util.Properties; public class SENDMAIL { public void sendMail(String mailServer, String from, String to,
bb
Bubble Graph on Wed 11th Mar 12pm
I love this graph bubble graph http://www.osix.net:80/modules/folder/in dex.php?tid=28125&action=vf
ketan404
My online resume! on Mon 9th Mar 8am
It is here http://www.listoffreelancers.com/profile s/ketankulkarni Simple and clean design. I like this website. Ketan
macrocat
Blog entry for Sun 8th Mar 3pm on Sun 8th Mar 3pm
Another site with some challenges. Basically, I'm linking this to get a measly five points ;O. Hellbound Hackers
Nightscript
Parapsychology - Fri 19th Dec 5am on Fri 19th Dec 5am
Yes i'm crazy but heres what ive been thinking about and it seems more reasonable that a lot of reality. Note that this ties into parapsychology/psychokinesis research. Mind is not over matter. Thats the wrong state of thinking for sure. Look, this


     
Your Ad Here
 
Copyright Open Source Institute, 2006