tags:

views:

836

answers:

7

Hi,

For my project report, i need to show the class diagram of the software i've built which counts around 20 classes! The problem, is that when i render the class diagram in jpeg file(either using StarUML or ArgoUMl or whatever..) we can't see the details correctly (very big picture because of the large number of classes). Well, how to manage this situation correctly? Since the report is gonna be printed on A4 pages ?

Thanks !

+1  A: 

Generally a good way to deal with this is to create different diagrams for different modules or areas of functionality for your software. Alternately you could print the single image on multiple pages and show how to assemble them to form the full image.

Paul Morie
+9  A: 

With 20 classes I would expect at least 3 subsystems, (modules, layers), possibly more

Make package diagram showing the relation between those, one class diagram for each subsystem. Add class diagrams for special things you want to show. Print each on A4.

If you can't split the diagram easily into modules, I'd consider that a design smell.

Its fun to print large diagrams on huge pieces of paper (like 500 tables on A0 ;-) but it really isn't of much use.

Jens Schauder
+1  A: 

Use BOUML. The ArgoUML and StarUML are classics which everybody mention when it comes to question "is there any free UML software?". It's funny that being a historic software does not make the software unknown and unused. In case of Argo and Star the historic coefficient makes them known and used.

BOUML can export to SVG. This will solve your problems.I described the tool here

Thanks to SVG you will be able to quickly switch between birds eye view and detail view. I do this with Firefox. It's rapidly fast.

PS. I just noticed that you want to print the report. The SVG is then probably not what you want :\

-1 - This problem affects all UML tools. I don't see how exporting to a particular graphics format addresses it.
duffymo
Don't see how that matters when you're printing it on A4 paper. What does FF have to do with that?
duffymo
@duffymo: SVG is vector format. It solves the problem, because it can be rapidly scaled (e.g. in firefox). I hope this explains your doubts so you can withdraw your down vote? PS. It looks that you're right, because the author wants to print the report.
Seems BOUML is a very great tool comparing to StarUML, so i'll give it a try even if it doesn't solve the problem!
Amokrane
I once tried to import project having 160k C++ lines into StarUML. It didn't succeed, it stopped responding after many minutes of intensive processing. BoUML imported the same project in 1.5 minute :)
Try JUDE Community edition and see how it compares if you're looking for a new tool.
duffymo
Sorry for me being bouml over enthusiastic , but here is bouml vs jude comparsion: http://bouml.free.fr/benchmark.html#Jude
+1  A: 

There are a few things you can do:

  1. Bigger paper
  2. Don't display method signatures
  3. Don't display private methods
  4. Partition your problem into more packages
  5. Fewer classes per diagram

This is one of the problems with trying to treat UML like engineering drawings: Once you get it off a whiteboard, it's a poor language for communication. It doesn't read so well.

duffymo
+1  A: 

I think it's the inherent problem that you're trying to show so many things in one diagram. Your question is just like "how can I put 100 words in a sentence without the reader getting tired of it?"

You can probably refactor it with FacadePattern. Basically it's just breaking down stuffs into modules. For e.g. Timesheet, PayCheck, BonusRecord can be ground into ManagementSystem. Product, Order can be grouped into OperationSystem, etc.

kizzx2
+2  A: 

Producing a class diagram containing 20 classes is totally useless- what does it actually show? When using class diagrams I've never created a diagram that has more than about 5-8 classes on it.

The question to ask yourself is "what useful information am I trying to show with this diagram?". Don't produce a class diagram for the sake of it!

Breaking it down to demonstrate a particular design pattern, subsystem or component is what I find class diagrams useful for.

RichardOD
+1  A: 

an other way is to not show all members but only the main ones, this reduce the size of the classes then the size of the diagram. Of course this suppose you use a tool allowing to choose which operations/attributs/relations must be visible, but this drawing setting is classical

may be you tool also have drawing setting to hide some part of the operation to reduce the width, for instance to show or not the parameters, or their direction, their type etc

Bouml (http://bouml.free.fr) has all this drawing options, and as it was said has PNG and SVG exports

best regards and happy modeling

Bruno