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
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.
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.
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