Fog Creek Software
Discussion Board




Anyone use visio Architect for design work?


I'm a C# developer and I've been using Visio Enterprise Architect to do most of my intitial design work, but I've noticed it seems that very few other developers do this. Even MS made mention of this in an article dealing with WhiteHorse.

As a C# developer, I use Visio's UML diagrams to build my classes, enumerations and structures and then use the code generation options to generate the skeleton code. I find this incredible useful because it allows me to break it apart it in a way that is easy to understand. I don't get caught up in all the UML syntax, I just use it so I can look at my classes and their relationships.

I find that after coming back to a design a day later, I find several things that need to be adjusted. Since it's still in Visio and not in code form, it's quick and easy to change.

I also use their ERD diagrams to build my SQL Server and Oracle table structures. It generates the DDL so I can create my database right from Visio.

Anyway, it seems that I'm in the minority here...What do you .NET developers use for doing design work? Keeping everything in my head just isn't an option. Using a whiteboard is nice at first, but once things start to solidify, a whiteboard becomes to cumbersome to make changes to.

The silent minority
Tuesday, May 11, 2004

I started using Visio for my initial design work after seeing an interview with Terry Halpin on the .NET show.

http://msdn.microsoft.com/theshow/Episode025/default.asp

nathan
Tuesday, May 11, 2004

Well, this topic always gets the flames roaring!

I don't use UML, but I do use data models. However, Visio is just not a serious data modeling tool, just a very useful drawing tool.

If you know how to do data modeling properly, then you will prefer a tool that separates logical and physical data models (which are poorly represented in UML). You should also be able to customize how the DDL is generated (which physical options, etc.). One thing I can commend Visio for is the inclusion of ORM diagramming. The industry "standard" is restricted to basic ER diagramming, but there are other modeling approaches (David Kroenke's SOM, for example).

My favorite data modeling tool is ER/Studio from Embarcadero. The most "popular" data modeling tool, ERwin (Computer Associates) is, in my opinion, even crappier than it was before CA bought it, which is quite an achievement in itself. I suspect that the popularity of ERwin is mainly explained by the usual "me too" herd mentality, as well as the lack of real data modeling skills among so-called "data modelers". The herd mentality of most IT managers also contributes to this, in my not-at-all-humble opinion.

I have found several quite decent Open Source or  inexpensive shareware data modeling tools, including UML tools.

Data Miner
Wednesday, May 12, 2004

I've fiddled with Visio (including 2003) for data modeling, and it's still not quite "there" - when I'm modeling I prefer not to have to think about the tool, instead concentrating on the design.

I've also used ERWin and Embarcadero's ER Studio. My favorite of all time is Datanamic's Dezign for Databases http://www.datanamic.com/
(Note: I haven't used the latest versions - latest I have is 2, I think - hopefully they haven't screwed it up...)

Anyway, it's shareware and about 1/10 the price of the ER products, so it's worth a try.

Philo

Philo
Wednesday, May 12, 2004

Datanamic's Dezign for Databases looks pretty nifty, and it costs only $229. However, it suffers from the same problem as ERwin - it doesn't separate the logical and physical models.

Data Miner
Wednesday, May 12, 2004

Can you explain "separate the logical and physical models" and why it's so essential?

Philo

Philo
Wednesday, May 12, 2004

There are actually three separations.

Conceptual.  How we map the facts and constraints on those facts from real world examples.

Logical.  How that set of facts form into tables and sets of relations.

Physical.  The actual implementation of those tables in a specific DBMS.

Simon Lucy
Wednesday, May 12, 2004

I use Visio....

The One You Loved (TOYL)
Wednesday, May 12, 2004

I am in the "UML as a sketch" camp so I use Visio for UML diagrams.  By the way, I am a Java developer not C#.

Bill Rushmore
Wednesday, May 12, 2004

I use PowerDesigner from Sybase, and find it excellent in all departments - anyone else tried it?

+=
Wednesday, May 12, 2004

Oh, I understand that there are better tools than Visio for doing data modeling. In fact, I use to use E/R Studio myself years ago. Are you saying that you use those kinds of tools to design your business objects?

I like the phrase "UML as a sketch". That pretty much sums up what I'm using it for when laying out my class designs.

What other products are out there that let you design your business objects and then generate the skeleton code?

The silent minority
Wednesday, May 12, 2004

On conceptual vs logical vs physical:


The process goes conceptual design -> logical design -> physical design or conceptual model -> logical model  -> physical model

A conceptual model is something like ORM (attribute driven) or ER (entity driven) model. Notice that yoy can use different notations with the same conceptual model eg Chen, IDEF1x or IE(Crows foot) for ER. Conceptual model is independent of logical model and can be mapped to logical model. The prevelant logical model is the relational model, but it would be possible to map to a Network or inverted file model as well. The logical model in turn is independent of the physical model which is how your db product implement its relations/files/indexes.

Most literature assumes conceptual model is ER or EER (ER with inheritance) but ORM is a valid contender.

Karel
Wednesday, May 12, 2004

I keep seeing comments that you *should* keep the logical and physical models separate, but I haven't seen anyone say *why*

Philo

Philo
Wednesday, May 12, 2004

>I keep seeing comments that you *should* keep the logical and physical models separate, but I haven't seen anyone say *why*<

Because the conceptual and logical models are implementation-independent - you could label them the "analysis" and "design" phases, in a sense. The physical model is the implemented model. If you have a design that you want to port to multiple database platforms, you will have one logical model and multiple physical models.

By the way, very few data modeling tools can maintain synchronization between one logical and multiple physical models. ER/Studio is one that can.

Data Miner
Thursday, May 13, 2004

*  Recent Topics

*  Fog Creek Home