I have found UML to be a wonderful modeling language that is an invaluable
part of my development process. It allows me to document my thoughts,
communicate with other developers, and even communicate with non developers.
It is important to sketch out your thoughts and see how some of the pieces
will fit together before you start to write. However, you can also commit
the error of over-engineering. For some design issues it is better to write
first and then when the need of the project pushes you to change, you
refractor to meet the change. Often all the wonderful designs you create up
front will be rendered useless because of a changing domain landscape.
But it seems to me you are not really asking about modeling. You are talking
about a tool that does UML to code generation. I have not found one that can
really do model to code and code to model well. I just purchased the Altova
UModel, but haven't really played with their code generation stuff yet
because I know this is the holy grail that has yet to be gained. Borland had
a tool that was very invasive into a VisualStudio project that looked like
it had promise, Borland Together (or something like that). If you ever used
a tool called JBuilder you would have seen the roots of that product in
action. The JBuilder implementation was quite elegant.
It seems to me that you are really looking for a science to help you manage
change in your software development and engineering efforts. There are many
sciences and schools of thought that have been created to help this. Look at
some of the modern schools of software engineering, RUP, Extreme
Programming, Agile Development, etc. All of these approaches assume change
to be an active member of the software development team. All of the modern
philosophies look to strong skills in unit testing and refactoring as a
reasonable way to manage change from a code perspective. They also heavily
embrace iterative development from a philosophical perspective.
Software systems are living breathing entities that evolve and change over
time, like the systems they run on. The black box of analog circuitry or
even hard digital code embedded in silicon is less pervasive than
programmable logic chips and EEPROM. It seems the only way to find success
in modern projects is not to more tightly define the black box, but embrace
the change that lives with in it.
Remember don't drink wine and read news groups in the evening...
Howard
"Electronic75" <El**********@discussions.microsoft.comwrote in message
news:F9**********************************@microsof t.com...
Hello, I program in C and c++ for 5+ years but I am still not satisfied
with
my development process. for a big MFC project I usually start by thinking
what classes do I need then for each class I ask what function and
variables
do I need and I start writing codes. but many times at the middle of
project
I will realize that I could have written program somehow else that
possibly
was more user friendly or more efficient or,... and I start rewriting it
and
it is very time consuming. I heard about UML and even played with it for
awhile. I thought if I can see the whole picture and go deep into details
of
each scheme with a few mouse clicks change something and go back and again
look at the whole picture It may help to find the best possible scheme at
the
beginning so I do not have to change my codes in middle of project.
Of course I found it very time consuming to model a complex project with
UML
so I like to ask from other software engineers do they use UML? dose it
worth
to first model a project that may take a few months with UML? are there
better ways so I can find the best programing schema before start coding
so I
don't change my codes in middle of project?
thanks