views:

62

answers:

3

I'm quite familiar with UML for modeling object-oriented applications. However, I'm not familiar with anything specifically designed for designing and/or modeling procedural, functional, or any other paradigm. How do you design or model applications written in a non-object-oriented language?

+3  A: 

Oh golly, there's a blast from the past.

We used to use flowcharts, pseudocode, data flow diagrams, structure charts, Hierarchy-IPO, "coathanger charts" (which are really a variant of flowcharts), Nassi-Schneiderman diagrams. Among others.

Oh, SADT is another one.

Charlie Martin
A: 

SSADM - I think I've still got my certification in a box somewhere...

anon
+1  A: 

UML can be used for modeling non-OO languages as well. I use UML for modeling just about anything. To be fair the core of UML is OO focused, but much of the behavior, instance level, and less common structural types work for non-OO languages. However, UML is for design in OO not implementation, your building blocks/objects are just different, modules, or whatnot.

Many of the diagram types mentioned by Charlie Martin have analogous UML representations. Even better it is a model not just a diagram/view.

Example: LISP is not OO based. So create a keyword or stereo type for classes that is function. The attributes are the arguments as it has no state. This is not perfect, but it is the most approachable.

Example: COBOL/JCL is not OO based. Have each PACBASE package be a component and have structural components as your COBOL. Artifacts can be your JCL.

Let fact that UML is broad and loosely defined to your benefit and re-purpose UML parts. You can always formalize it with a UML profile. Where I work this has been a point of discussion for some time. Mainframe programmers do not see OO design and OO-UML as relevant, but it is only partially true in that the core or how far most people go with it is just to the class/structural stuff and use cases, which is OO focused.

Ted Johnson