One set of fairly well known OOD Principles was written by Robert Martin in 1996-1997 as part of a series of articles in "The C++ Report". (See the ObjectMentor webpage for their OOD Principles training course -- halfway thru the page it has an "articles" section with links to copies of the original articles that appeared in the C++ Report.)
These Principles of OOD were also in his 1995 book "Designing O-O Applications Using the Booch Method". Then Robert started evolving and developing them more, and also working with patterns, and then eventually extreme programming practices. And what was going to be a 2nd edition of the book instead became a 10 year "project" that combined these principles, with patterns, and agile development "practices" into a new book that came out in November 2002 called "Agile Software Development: Principles, Patterns, and Practices"
These "Principles of OOD" are ...
Principles of Class Design:Maybe it would be the case that, when "translated" into SCM concepts and terms ...
Principles of Package Cohesion:
- (OCP) The Open-Closed Principle
- (LSP) The Liskov Substitution Principle
- (DIP) The Dependency Inversion Principle
- (ISP) The Interface Segregation Principle
Principles of Package Coupling:
- (REP) The Reuse/Release Equivalency Principle
- (CCP) The Common Closure Principle
- (CRP) The Common Reuse Principle
- (ADP) The Acyclic Dependencies Principle
- (SDP) The Stable Dependencies Principle
- (SAP) The Stable Abstraction Principle
- Class design principles would translate into baseline and/or configuration derivation and composition principles?
- Package cohesion principles would translate into change-task and/or change-set cohesion principles?
- Package coupling principles would translate into codeline and/or variant management principles?
- How small or fine-grained should my change-tasks minimally be?
- When & how often should I commit and/or promote new baselines?
- How should baselines relate to other baselines and codelines?
- How should codelines relate to other baselines and codelines?
- How should I manage dependencies between changes/branches/codelines?
What do you think are some of the principles of Software CM?