stream of "change-flow" for the two competing/conflicting sets of users. This would seem to be a restatement of the " branch on incompatible policy " rule.
Other applications of this are evidenced by Task Branches and Private Branches for in-progress changes and exploratory/experimental work, or multiple levels of "active" development lines that may correspond to work being performed and integrated across multiple sites and timezones.
The package coupling principles of OOD translate almost directly to version-control with only slight modification (sometimes "dependency" translates into "flow", but note that change-flow does not imply dependency). We alsready covered the ADP, so we'll cover the other two here:
- The Stable Promotion Principle (SPP):
- Changes and configurations should be promoted in the direction of increasing stability.
- The Stable History Principle (SHIP):
- A codeline should be as stable as it is "historical": The less evolved it is (and hence more mature/conservative), the more stable it must be.
In Robert Martin's book, when discussing the ADP, SDP, and SAP, he describes some measures of stability and abstractness, and plots the stability. He then describes what he calls the "main sequence", which is the line through the origin identifying all points of equal abstractness and stability. When we translate these three principles into version-control terms, the so called "main sequence" seems to directly correlate to Laura Wingerd's "Tofu Scale" of the relative "firmness" of a codeline .
We hope that these ideas (principles) and discussions prove useful to the reader. We are very interested in feedback on any of these principles (especially the names and accuracy of the "translations" from OOD terms to version-control terms). This set of principles is still a "work-in-progress" and we of course reserve the right to modify them as our understanding of them matures.
Agile Software Development: Principles, Patterns, and Practices ; by Robert C. Martin; Prentice-Hall, 2002.
Software Configurationanagement Patterns: Effective Teamwork, Practical Integration ; by Stephen Berczuk and Brad Appleton; Addison-Wesley, November 2002. A Software
Configuration Management Model for Supporting Component-Based Software Development ; by Hong Mei, Lu Zhang, Fuqing Yang; ACM SIGSOFT Software Engineering Notes, Vol. 26, Issue 2; (March 2001), pp. 53-58; ISSN:0163-5948
A Component-Based Software Configuration Management Model And Its Supporting System ; by Hong Mei, Lu Zhang, Fuqing Yang; Journal of Computer Science and Technology, Vol. 17, Issue 4; (July 2002), pp.432 - 441; ISSN:1000-9000
Flexible Configuration Management for a Component-based Software Asset Repository ; by Tom Brett; BCS CMSG event: Why Software Asset Management and Configuration Management is essential , March 2004 (also see accompanying presentation )
The Timesafe Property: A Formal Statement of Immutability in CM ; by Damon Poole Wingerd; submitted to the 8th International Symposium on System Configuration Management (SCM-8) in Brussels, Belgium, July 1998.
"The Flow of Change"; by Laura Wingerd; presented at SD West 2005 and the 2005 Perforce User's Conference.
Configuration Management Principles and Practice ; by Anne Mette Hass; Addison-Wesley, December 2002. Chapter 1, "What is Configuration Management?" (available online)
Streamed Lines: Branching Patterns for Parallel Software Development ; by Brad Appleton, Steve Berczuk et. al.; Proceedings of the 1998 Workshop on Pattern Languages of Program Design.
High-level Best Practices in Software Configuration Management; by Laura Wingerd, Chris Seiwald; Proceedings of the Eighth International Workshop on Software Configuration Management (I-SCM8), Brussels, July 1998; (also presented at the 1998 Perforce User's Conference, June 1998)
Practical Perforce : Channeling the Flow of Change in Software Development Collaboration ; by Laura Wingerd; O'Reilly & Associates, 2005.