Object-Role Modeling In your Enterprise

Wednesday, June 3, 2009 by Mark Murphy
Recently I have been working on a project revamping a very poorly designed database.  This activity brought me to look for some new tools, and I came across something called ORM.  That is Object-Role Modeling, not to be confused by my developer friends in the OO world with ORM or Object Relational Mapping.  Somewhere, somehow, we have to get a handle on all these TLAs, but I digress.  In the past I have touched briefly on the apparent divide between the business and IT.  If both of those groups would just speak the same language then application development be better for it, and IT would be able to support the business in the way it was intended.

So what does Object-Role Modeling do for me?

ORM is not a new concept - it dates back to the 1970's, but it is a way to build simple information models using nothing more than simple facts.  For example a Customer has a Name.  When designing a new system, or even upgrading an existing system, we can easily retrieve these natural language facts, and combine them into a powerful information model that the business can look at and say "yes that is true, but you forgot that a customer also has an address!"  Add a couple constraints that tell about the relationship between the object and it's roles, and the developers can automatically generate all the ER diagrams and class models it wants.  ORM provides a simpler, more accurate and more powerful approach to information modeling than other approaches such as Entity-Relational Modeling and UML.

ORM is really a very simple approach that, once you get past the "there has to be more to it" reaction, will give you some better communication tools for use between the business and the application development team.  In fact if they don't already know it, ORM has been part of Visio for Enterprise Architects for quite some time now, and there are even some open source ORM tools that plug into Visual Studio.  The integration of these tools into your application development environment will make your business analysts and database analysts far more productive.  As such I will impart, over the next couple of posts, some tidbits that will get you going.  In the mean time if you are chomping at the bit, I suggest you jump over to The ORM Foundation for some additional reading.

Comments for Object-Role Modeling In your Enterprise

Thursday, June 4, 2009 by Orion Bühler:
I'm currently working on building a conceptual data model for a state medicaid system, and am using the open-source plugin to Visual Studio that you mentioned to build a lovely model. (I found your blog with a google alert on the phrase object-role modeling) I'm looking forward to reading your next few posts!
Tuesday, June 23, 2009 by Shih-gian Lee:
I prefer Domain-Driven Design (DDD) concept over ORM. DDD is about mapping business domain concepts into software artifacts. By doing so, it creates Ubiquitous Language between developers and business. Your ORM concept looks like it is doing something that DDD is doing but DDD is about capturing the domain concepts in real world without thinking about database. Once we have solid domain concepts, mapping the domain concepts to software artifact should be straight forward. Then, the mapping between Object and relational database using ORM tool like Hibernate should be easier, provided that the database is not so screw up. Further, I never like to work with modeling tool because of its complexity. After reading your post, I will pass on the Object Role approach and stick with Domain Driven Design because it can capture real world information better in the software world.
Monday, June 29, 2009 by Mark Murphy:
Since DDD is primarily interested in making complex projects manageable, I don't see how never using modeling tools is compatible with DDD. But beyond that, DDD is not a tool or a methodology (http://domaindrivendesign.org/resources/what_is_ddd) while Object-Role Modeling is indeed a methodology. I see no reason why ORM cannot be used as one of the tools in your toolbox even if you are following DDD principals. DDD is heavily into using models, though no modeling technique is spelled out as far as I can tell. BTW, Hibernate is an Object Relational Mapping tool, not an Object-Role Modeling tool.

Leave a comment





Captcha