Aki,
Software development isn't quite like the other engineering disciplines. In software development, "the source code is the design (and not the product)". The whole process of
writing your application actually involves designing it. Things change
all the time as you go along.
I'd say you shouldn't worry too much about having a perfect "design" on paper before writing a single line of code. You just need to start with a general
"architecture" of the system, which will also change as you flesh it
out in code.
Check out these pages at the Portland Pattern Repository Wiki:
<
http://c2.com/cgi/wiki?WhatIsSoftwareDesign>, <
http://c2.com/cgi/wiki?TheSourceCodeIsTheDesign>, and <
http://c2.com/cgi/wiki?TheSourceCodeIsTheProduct>.
Joseph.