473,401 Members | 2,068 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,401 software developers and data experts.

How useful is UML?

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
Sep 14 '08 #1
6 1403
>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.
Welcome to the paranoia feeling of "there must be a better way of
doing software" - that I suspect most developers feel.
>Of course I found it very time consuming to model a complex project with UML
Have you found that the time spent doing it exceeds the time you'd
spent if you hadn't, or are you still feeling that it's not quite as
useful as you'd have thought it might be?
>so I like to ask from other software engineers do they use UML?
I don't, and where I have heard of it being used, it's often done as
lip service because some aspect of the contract required it. Some
people swear by it though!
>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?
Experience may be the best I fear!

Dave
Sep 14 '08 #2
Electronic75 wrote:
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?
Electronic:

For an alternative viewpoint on the software development process (one which
personally I prefer), see the books

Kent Beck: "Test Driven Development: By Example"

Martin Fowler: "Refactoring: Improving the Design of Existing Code"

Michael Feathers: "Working Effectively with Legacy Code"

--
David Wilkinson
Visual C++ MVP
Sep 14 '08 #3
"David Lowndes" wrote:
Have you found that the time spent doing it exceeds the time you'd
spent if you hadn't, or are you still feeling that it's not quite as
useful as you'd have thought it might be?
Thanks Dave, I actually didn't develop a whole project with UML, neither I'm
a UML expert. I only tried to model a project with UML for some days and I
found out that if I'm going to take care of all nitty-gritty stuffs(I mean
define local variables etc) it will be hugely time consuming maybe it was me
that hadn't enough expertise in UML, maybe it was unnecessary to care about
small details, I don't know but of course when I wanted to change the schema
of project it was much easier in UML than rewriting a whole new set of
classes and functions.

cheers,

Sep 15 '08 #4


"David Wilkinson" wrote:

Electronic:

For an alternative viewpoint on the software development process (one which
personally I prefer), see the books

Kent Beck: "Test Driven Development: By Example"

Martin Fowler: "Refactoring: Improving the Design of Existing Code"

Michael Feathers: "Working Effectively with Legacy Code"

--
David Wilkinson
Visual C++ MVP
Thanks david, I will try to read them but I have a vague familiarity with
test driven development and my impression always had been that test driven
development is hugely time consuming and it dose nothing to speed up
development process but only make codes more robust and I think if I adopt
such methodology it dose not prevent me from altering codes in middle of the
project.
my current methodology is to use a lot of trace and assert codes that both
help documenting the project and help in debug process but I think it dose
not help me to reach the best scheme for development before writing down the
code and I still change a lot in development process.

cheers,
Sep 15 '08 #5
Electronic75 wrote:
..........
my current methodology is to use a lot of trace and assert codes that both
help documenting the project and help in debug process but I think it dose
not help me to reach the best scheme for development before writing down the
code and I still change a lot in development process.
Then you have no choice but grow up and become a manager.
You'll get all the architecture delights, while the peons write and test.

--PA
Sep 15 '08 #6
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
Sep 26 '08 #7

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

16
by: Franz Steinhaeusler | last post by:
Hi, I looked at tabnanny to check a python source file. But I didn't find anything, tabnanny is able to find, what couldn't be found by compile command. Or have I missed something? best...
5
by: Nobody | last post by:
I am trying to write a BTree class, just wondering if I missed any useful methods. This is my class definition so far (excuse the MFC portions, its a project requirement): template <class TYPE,...
5
by: djake | last post by:
Someone can explain me what are makefiles useful for? Couldn't i write shell script instead of makefiles? (*.sh in unix; *.cmd in win32) Moreover i really doesn't understand what dependencies are...
30
by: Vla | last post by:
why did the designers of c++ think it would be more useful than it turned out to be?
5
by: Clint Olsen | last post by:
I did a Google about this, and I've seen this covered quite a few times - some leading to useful tricks with offsetof() to discern alignment and others using a big-union of intrinsic types to...
7
by: eyh5 | last post by:
Hi, I'm writing some C codes to run simulations. I'm wondering if there is a website that may contain useful information on how to make one's code run more efficiently and in a...
46
by: Keith K | last post by:
Having developed with VB since 1992, I am now VERY interested in C#. I've written several applications with C# and I do enjoy the language. What C# Needs: There are a few things that I do...
0
MMcCarthy
by: MMcCarthy | last post by:
This is a list of technical site links that many of our experts find useful. They are often included in posts in answer to repeated questions so I am posting a list of them here for convenience. ...
0
by: Very cool design! Useful information. Go on!,Very | last post by:
Very cool design! Useful information. Go on!,Very cool design! Useful information. Go on!,Very cool design! Useful information. Go on!
69
by: raylopez99 | last post by:
They usually don't teach you in most textbooks I've seen that delegates can be used to call class methods from classes that are 'unaware' of the delegate, so long as the class has the same...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.