Normalisation of behaviour ?

Normalisation of behaviour ?

Old forum URL: forums.lhotka.net/forums/t/1123.aspx


jas_nhs posted on Tuesday, September 05, 2006

Rocky's book has talked of the importance of "normalisation of behaviour" - does anyone know of any good sites or texts on this vital-sounding topic? 

Too many of us map tables to objects and suffer the consequences!

James.

RockfordLhotka replied on Tuesday, September 05, 2006

To my knowledge, I am the one who coined that phrase "normalization of behavior", so at the moment the phrase itself is unique to my book.

However, I hardly lay claim to the central idea, as it flows from responsibility-driven design and behavioral design of objects. You can find material about these concepts on the web, and also from authors such as David Taylor and David West.

rhoeting replied on Wednesday, September 06, 2006

I think the "normalization of behavior" idea is brilliant.  It resonated the moment I read it...  It greatly helps make the mental distiction between data modeling and object modeling. 

Slightly OT, but I now wonder if we can apply this to SOA and "Service Modeling":

Data Modeling -->  Normalization of Data
Object Modeling --> Normalization of Behavior
Service Modeling --> Normalization of Process

Do folks think the last statement is accurate?   Why or Why not?

Rob

malloc1024 replied on Thursday, September 07, 2006

Normalizing behavior is not new and has been around for awhile.  It should be easy to find information on this topic.  I did find a good article that describes class normalization.  It is like data normalization except that you normalize the behavior in classes.  A class can be in First Object Normal Form, Second Object Normal Form or Third Object Normal Form.  Ideally, you would like your class to be in Third Object Normal Form.  These steps are very simple to follow.  This article is very helpful and informative.

http://www.agiledata.org/essays/classNormalization.html#1ONF


jas_nhs replied on Friday, September 08, 2006

Thanks - on the basis of the ariticle, I have ordered Scott Ambler's "Agile Database Techniques". As ever, I expect you learn better by doing than by reading, but it should be a useful guide,

James.

Dr.Vlado replied on Friday, September 08, 2006

The last page about Behavior Normalitation (http://www.agiledata.org/essays/classNormalization.html#1ONF) is ok, but all that theory is inside the Object Oriented Software Engineering, as you know, exactly in the entity or potential objects identification.


I think that, If you follows a correct way of creating Use Cases, Sequences and Collaboration Diagrams, your final Class diagram or Business Objects Model, should not be in less than 3ONF, because of you were able to identify correctly the Business Objects with a normalization of behavior, from that potential ones, due to the collaborations between them.

malloc1024 replied on Friday, September 08, 2006

Of course all that theory is inside Object Oriented Software Engineering.  That is why I recommended it.  That article is for those that are coming from a data-centric view.  It will be old hat for those that have mastered OOD.  You should learn the basics of OOP along with the principles.  The aforementioned article mentions this as well.  This will help you more than anything.  You can know how to create Use Cases, Sequences and Collaboration Diagrams and still be unable to create a good design without knowing the OOP basics and principles.
 

List of OOP principles you should know by heart:
http://sis36.berkeley.edu/projects/streek/agile/oo-design-principles.html

 
In-depth description of some of the principles:
http://ifacethoughts.net/2006/03/24/design-principles/
 

Liskov Substitution Principle:
http://www.objectmentor.com/resources/articles/lsp.pdf

 
Interface Segregation Principle:
http://www.objectmentor.com/resources/articles/isp.pdf

 
The Dependency Inversion Principle:                   
http://www.objectmentor.com/resources/articles/dip.pdf

 
The Open-Closed Principle:
http://www.objectmentor.com/resources/articles/ocp.pdf


These are only a few of the principles.  You should be able to find the rest.  http://www.objectmentor.com is a good site to get more information on this.

 

Dr.Vlado replied on Friday, September 08, 2006

Nice! Now I recognize your point, and I agree with you (“know how to create Use Cases, Sequences and Collaboration Diagrams and still be unable to create a good design”). I think from that perspective is very helpful.




Copyright (c) Marimer LLC