# UML with Rails

**URL:** <https://www.ruby-forum.com/t/uml-with-rails/137409>\
**Category:** Rails\
**Created:** [May 12, 2008, 10:41pm UTC](https://www.ruby-forum.com/t/uml-with-rails/137409 "2008-05-12T22:41:16Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![pk16](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b19c9b/32.png) [@pk16](https://www.ruby-forum.com/u/pk16)\
**Post date:** [May 12, 2008, 10:41pm UTC](https://www.ruby-forum.com/t/uml-with-rails/137409/1 "2008-05-12T22:41:16Z")

</div>

Hey has anyone used a good uml tool with rails to design applications?  
how do most start their rails application design work after collecting  
requirements? any guidance would be appreciated.

---

<div class="post-metadata">

**Author:** ![pk16](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b19c9b/32.png) [@pk16](https://www.ruby-forum.com/u/pk16)\
**Post date:** [May 13, 2008, 1:25am UTC](https://www.ruby-forum.com/t/uml-with-rails/137409/2 "2008-05-13T01:25:09Z")

</div>

pk16 wrote:

> Hey has anyone used a good uml tool with rails to design applications?  
> how do most start their rails application design work after collecting  
> requirements? any guidance would be appreciated.

The best Rails projects use Test Driven Development. That means you  
write a unit  
test that fails before writing any line of code. This provides tests  
that  
saturate your code, allowing many more flexibilities than traditional  
programming.

If a test fails unexpectedly, you can revert your code back to the state  
where  
everything passed. This ability replaces many long terrible hours  
debugging with  
short minutes writing lots of simple tests.

As a program grows, you can refactor its design to simplify it, and  
migrate its  
database elements, always trying to get the most features out of the  
fewest  
lines of code. Rails is very “lean” and “agile”.

That said, [http://railroad.rubyforge.org/](http://railroad.rubyforge.org/) reads your models and draws a  
nice  
little table out of them.

–  
Phlip

---

<div class="post-metadata">

**Author:** ![pk16](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b19c9b/32.png) [@pk16](https://www.ruby-forum.com/u/pk16)\
**Post date:** [May 13, 2008, 3:51am UTC](https://www.ruby-forum.com/t/uml-with-rails/137409/3 "2008-05-13T03:51:19Z")

</div>

Don’t be fooled. Rails people do value planning, however, it doesn’t  
seem like UML is very popular in the Rails world. Personally, I haven’t  
found it useful, although your situation may be very different.

I really have little idea of available tools, much less which ones are  
good. What OS are you on? (maybe people who use your platform may be  
able to answer your question.)

---

<div class="post-metadata">

**Author:** ![pk16](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b19c9b/32.png) [@pk16](https://www.ruby-forum.com/u/pk16)\
**Post date:** [May 13, 2008, 8:08am UTC](https://www.ruby-forum.com/t/uml-with-rails/137409/4 "2008-05-13T08:08:48Z")

</div>

If you are really interested in the development process promoted by  
most Rails developers take a look at Getting Real from the Rails  
creators.

> **[Getting Real](https://basecamp.com/gettingreal)**
>
> The smarter, faster, easier way to build a successful web application

Fair warning: It’s probably going to be quite different that what you  
may be used to. This will fit for some, but not for others.  
Personally, this fits my style. It’s made me a better programmer.

On May 12, 9:51 pm, Mike Nicholaides \<rails-mailing-l…@andreas-

---

<div class="post-metadata">

**Author:** ![pk16](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b19c9b/32.png) [@pk16](https://www.ruby-forum.com/u/pk16)\
**Post date:** [May 15, 2008, 3:43pm UTC](https://www.ruby-forum.com/t/uml-with-rails/137409/5 "2008-05-15T15:43:12Z")

</div>

Thanks! I have been reading up on test driven development which  
appears to be a natural fit with rails as it bakes the tests in. I  
guess I just wanted to uml out some complex system ideas before  
coding, obviously it depends on preference and complexity.

I’ll have a look at that 37 signals book though, thanks for the  
responses!!

---

<div class="post-metadata">

**Author:** ![pk16](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b19c9b/32.png) [@pk16](https://www.ruby-forum.com/u/pk16)\
**Post date:** [May 18, 2008, 1:59pm UTC](https://www.ruby-forum.com/t/uml-with-rails/137409/6 "2008-05-18T13:59:41Z")

</div>

There seems to be a good bit of confusion as to what UML is and  
isn’t. TDD is a method for defining and verifying software behavior,  
Scrum and other agile methodologies are used for managing software  
development teams, Getting Real is more a philosophy or a manifesto  
than anything else. UML is none of these. It’s a method (one of  
many) for describing and communicating design decisions for a software  
system, and in spite of the unnatural levels of suspicion it seems to  
engender amongst developers who’ve only ever worked on web apps, there  
are a lot of good reasons for wanting to do so – i.e. communicating  
architecture to developers responsible for implementing a system,  
providing artifacts for support teams, etc. Whether you choose to use  
it or any other modeling method though, it won’t force or prevent the  
use of any of the methodologies mentioned so far.

Regarding the use of a tool, the last time I used a specific UML  
modeling application extensively, it was MagicDraw from No Magic.  
They provide a simple tool that’s all XML-based under the hood and  
very flexible. It allows you to define your own UML stereotypes  
including icons and so on, so as a first step, I’d define these for  
the basic Rails domain entities – models, controllers and views –  
and go from there.

---

<div class="post-metadata">

**Author:** ![pk16](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b19c9b/32.png) [@pk16](https://www.ruby-forum.com/u/pk16)\
**Post date:** [May 18, 2008, 3:40pm UTC](https://www.ruby-forum.com/t/uml-with-rails/137409/7 "2008-05-18T15:40:45Z")

</div>

Chris K. wrote:

> There seems to be a good bit of confusion as to what UML is and isn’t.  
> TDD is a method for defining and verifying software behavior,

…and design…

> Scrum and other agile methodologies are used for managing software  
> development teams, Getting Real is more a philosophy or a manifesto than  
> anything else. UML is none of these. It’s a method (one of many) for  
> describing and communicating design decisions for a software system, and  
> in spite of the unnatural levels of suspicion it seems to engender amongst  
> developers who’ve only ever worked on web apps

…and among developers who have worked on big-iron apps and seen UML  
abused…

–  
Phlip

---

<div class="post-metadata">

**Author:** ![pk16](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b19c9b/32.png) [@pk16](https://www.ruby-forum.com/u/pk16)\
**Post date:** [May 20, 2008, 1:11pm UTC](https://www.ruby-forum.com/t/uml-with-rails/137409/8 "2008-05-20T13:11:10Z")

</div>

For your second question, you can consider BDD. This is also test-first  
approach

---

<div class="post-metadata">

**Author:** ![pk16](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/b19c9b/32.png) [@pk16](https://www.ruby-forum.com/u/pk16)\
**Post date:** [May 20, 2008, 5:18pm UTC](https://www.ruby-forum.com/t/uml-with-rails/137409/9 "2008-05-20T17:18:42Z")

</div>

Heh, for me it’s not the webbiness of rails that kind of puts it at odds  
w/UML as a design tool, it’s the agileness that rails devs (and probably  
rails itself) seem to favor. I have UML categorized in that “big design  
up front” class of tools. No doubt that’s not quite accurate…
