Postby allistar » Tue Jun 28, 2011 8:38 am
Hi Jason,
I have seen three types of source control as applied to medium size (5 to 20 developers) JADE development teams:
1) Use JADE deltas for isolating source code changes to a particular developer (or developers). The downside here is that you cannot isolate structural (including JADE form) changes in a single development system using this approach. I have worked at companies where they have a "class locking" system which insists that yo must "lock" the class before changing it, and you cannot lock it is someone else has. This can be enforced by using a development security dll. Extracts for the changes made can then be automatically made and automatically applied to a known, sane test system for purposes of UAT.
2) Have a single "master" development environment and then each developer (or more likely the developers who share a common project) use a copy of that system for their development. At the end of development (and subsequent peer review) those changes are then moved to a master development environment. In my opinion this is error prone and cumbersome and isn't really "source control" as we know it.
3) Use of a development security library to track changes (and prevent changes, where required). The information collection from this can then automatically create patches and apply those patches to other systems (DEV2, UAT, PROD etc). This is an effective way of doing things but the largest downside is the toolkit needs to be developed and the effort to do so, while not immense, is never the less non trivial.
If you use Jade patch versioning, then source history can be maintained (so you can tell what a method looked like in prior versions).
Something you didn't mention is deployment. I would base any source control and testing strategy around the deployment strategy. One can't be considered without considering the impact on the other. If you are deploying to a single JADE database the deployment issue isn't as crucial, but if you're deploying to 1500 databases (and you value being able to easily upgrade those databases), then deployment becomes a major factor in any source control system.
Cheers,
Allistar.