The Design of Software (CLOSED)

A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.

The "Design of Software" discussion group has been merged with the main Joel on Software discussion group.

The archives will remain online indefinitely.

Software Design/Modeling Tools

Seems that several of you are very well experienced software developers and/or projects leaders/managers.
My question is, what kind of tools do you use for software design? Would you recommend some?
(for example: requirements, classes, database design)

Is there any that can handle models/documents for all the software development process?  starting from requirements to pseudo-code?

Thank You
Miguel Crispin Send private email
Tuesday, July 22, 2008
Well, there's Trace Modeler if you want to work on your design using UML sequence diagrams.

Some people also use it to capture requirements.

Well, you did ask ;o)
Yanic Inghelbrecht Send private email
Tuesday, July 22, 2008
My product has been developed over a period of 13 years. Today it consists of 250K lines of VB6 code and 100K lines of C++ code.

About 50% of the VB6 code has a simple, repetitive structure. So about 2 months ago I decided to create a database containing the parameters needed to generate that code.

One of the main reasons for this is because I got burned when Microsoft abandoned VB6. I see the code modeling and code generation as a way to gain a degree of language independence.

There is no code stored in the database. The database contains only the parameters needed to generate the code. If I hired a human to write that code for me, the database would be the information the human would need to write the code.

I don't really want to pay a human to rewrite that code every time Microsoft abandons the language that I'm using. So that's why I have decided to model parts of the application and generate the code.

My son works with CAD/CAM. A similar situation exists in that domain. When CNC machines first became available, people had to hand code all of the instructions for machining a part. These instructions were somewhat specific to the particular make and model of CNC machine. Today the more advanced shops create graphical 3D models from which the machining instructions can be automatically generated.

I have no experience with commercially available modeling tools or UML, so I can't really help you there. But I am definitely happy with the gains that I am achieving by generating the parts of my code that are feasible to model.

I recently watched an online video of a conference session devoted to the topic of code generation. One of the speakers claimed that teh majority of shops are using UML and doing some modeling, but less than 10% who use UML are actually generating any of their code. I wanted to give you a link to that video, but couldn't find it again. Sorry.
Brody Send private email
Tuesday, July 22, 2008
We are using Sparx Enterprise Architect for UML modelling.
Good product and doesn't cost very much. Well worth its price.
Wednesday, July 23, 2008
This probably wounds ridiculous, but I prefer paper pad and pen over any of the software I have tried.

I recently did a short development gig where I created a web-based wysiwyg report designer as a bolt-on to an existing project. It turned out to be about 50,000 LoC in the end, plus the integration code in the existing project. It was all designed using pen and paper.

There were no documents, as the client didn't want any (I know). To be fair, they said they wanted documents, but they never got to the top of the priority list. They kept coming up with new requirements, right up to my last day.

That was weird, still coding new features at 4pm on my last day. Usually I don't do any new work in the last week, so I can tidy up the documentation, training materials, etc, and make sure the handover has been successful.

"Handover" in this case consisted of an hour showing the in-house guy the helicopter view of how it worked.
Odysseus Send private email
Wednesday, July 23, 2008
For modelling software, I used to prefer paper and pencil or a whiteboard.

These days I use Cadifra UML Editor

Cadifra is a very simple tool that allows very _quick_ and accurate drawing of Class/Package, Sequence, State, Object and Use Case diagrams.

Cadifra has excellent support for embedding diagrams in MS Word using OLE, so you can click on an embedded diagram and it will load in Cadifra for edit.

Cadifra was designed for quick capture of UML diagrams and for accurate printing of such diagrams.  It excels at it's goals.

Cadifra costs just $30 per license and is worth every cent. 

For non-UML diagrams, I use Office 2007 or Visio 2007.
Wednesday, July 23, 2008
Curiously enough, I think that in general most experienced designers/architects use simpler tools because they have realized that modeling is not about getting pretty and very detailed drawings, but about communicating ideas. 

I personally use a lot of paper, a whiteboard and eventually Visio or even PowerPoint. In a few cases, some simple UML tools mostly for sequence or state diagrams, if they are expected to change frequently (for example, when designing complex protocols).

Requirements is a different thing. I don't use any tool, mostly because I haven't have the time to look for one, but I think that for large projects having a data base of requirements could be a plus, mostly to prioritize them and then keep track of what you included on each release and so.
Pablo Send private email
Wednesday, July 23, 2008
i use Jude most of the time for Java development. It is super for requirements analysis, where i can define use cases and activity diagrams very easily, this open-source software is really intuitive and friendly.
And from this i can still go forward with more thin granularity specifiations with class, collaboration and sequence diagrams. The code generation feature supports Java 1.5, which is marvellous.
I'm addicted to Jude.
jtv Send private email
Wednesday, July 23, 2008
There is a modeling plugin for Eclipse (search for EMF -- Eclipse Modeling Framework) that may do some of what you want.
Wednesday, July 23, 2008
I keep it simple, I’m still a big fan of whiteboards and paper.  I use a digital camera to capture and save what’s important.  This works well for internal documentation where the information is more important than the presentation.

Even when I’m plugged into a larger group process that requires more cumbersome documentation I still use whiteboards/paper with digital capture as part of my personal process.
Jon Lundberg Send private email
Wednesday, July 23, 2008
I use UMLStudio by Pragsoft.

This does some forward and reverse engineering of Class diagrams.

It will also do ERD diagrams.
Wednesday, July 23, 2008
<shameless plug>
If you’re considering Domain Driven Design using the .NET framework, you might want to try TrueView Agile Designer (

It’s a different take on application design: you start by defining domain entities using C# or VB.NET, and let the framework render interactive prototypes from them.  Start small, and add more detail as you gain a better understanding of your problem space.

At the very least, it allows your team to quickly give you feedback using interactive prototypes (quicker to understand than static UML diagrams or requirements documents)

</shameless plug>

Vijay Patel
Wednesday, July 23, 2008
Phew, I'm glad it wasn't just me who liked pen and paper.

I'd love to use some software to do this, but I've never found anything that works in the way I want it too. I thought that perhaps OneNote would work, but even that just seems so constraining and inflexible.

Maybe OneNote and a tablet PC would be the killer app for me.

For now, pen and paper rule.
Odysseus Send private email
Thursday, July 24, 2008
I agree, pen and paper rule.

Until you start making mistakes.

Or need to reorganise the layout.

Or just want to make small edits here and there.

This is where a good software solution can step in.

I can actually knock up UML diagrams in Cadifra quicker than I can with pen and paper.  Any mistakes can be quickly corrected and changes of direction accomodated without the need to start over.

I use UML to quickly capture my ideas and to communicate my designs to colleagues.

Anyway, I've banged the Cadifra drum quite hard now.  I'm not at all affiliated with the Cadifra developers, I am just a very satisfied user, who wouldn't mind if more folk used such a cool piece of software.
Thursday, July 24, 2008
About ten years ago,  I used to like Data Architect for modeling databases.  It had good reverse engineering features for generating a model from an existing database, good graphic representations of the model,  and pretty good script generating capability.

It had three kinds of models:  conceptual, physical, and object.  The object model only generated a case use,  not the detailed code.

It wasn't oriented towards modeling process.  Just data.  At the time, it was what I needed.

DA was part of a package from Sybase, called Power Designer (not to be confused with Power Developer).
Walter Mitty Send private email
Thursday, July 24, 2008
Oh,  and pen and paper or whiteboard is useful in a lot of circumstances, too.
Walter Mitty Send private email
Thursday, July 24, 2008
Yeah, I know what you mean, but the beauty of pen and paper is it doesn't matter if you make a mistake.

I guess that program you mention is fine for what it does, although I'd never us it, as I have Visio.

The thing is, there is a lot more to design than UML diagrams. What about screen mockups, database sketches, quick lists of standing data, notes, reminders, billable hours notes, meeting notes, etc, etc.

Personally, I can do all these things, and a lot more, quicker and easier using pen and paper. AFAIK, there is no software that does this (apart from *maybe* OneNote on a Tablet PC, as noted earlier).

If there was such a piece of software, I'd happily pay $1000 for it, if it really worked. I haven't found it yet though.
Odysseus Send private email
Thursday, July 24, 2008
I use Visio 2007 for non-UML diagrams, but the interface is too fiddly for quick sketching of ideas.

With Visio I find myself thinking about Visio stuff and not so much my idea or design.

When using Cadifra I find I think mostly about my design, much like when using pen and paper.

As for other diagrams, such as screen layouts, I nearly always prefer pen and paper.  A scanner can help transfer any paper diagram into a design document should that be required.
Thursday, July 24, 2008
+1 for Sparx Enterpise Architect.

In a situation where formal design with traceability was required, we used it to:

a) Round-trip-engineer between class diagrams in the UML model and the source code

b) Link use cases in the model to deployment packages and classes

I think you can use it for modelling data, too.

It did sequence diagrams too, but not well ... otoh this was a few years ago and even then they seemed to be developing it quite quickly, so it might be [even] better now.

Some languages (e.g. C#) are easier to round-trip than others (e.g. C++).
Christopher Wells Send private email
Friday, July 25, 2008
Databases are simple and easy to model. So, I do use a tool; I find ModelRight ( very good.

For my (mostly) C++ design, however I do not use any tools. I find UML overly compilcated and not really that useful.

Just my 2 cents.

Tuesday, July 29, 2008

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics
Powered by FogBugz