by Eric Peachey >> Sun, 15 Jul 2001 22:11:45 GMT
Hello,
Imagine you have about 8-10 developers actively building a Jade system (e.g. you have a number developing major new features as well as a small number involved in fixing faults that have been found during user testing). The client would like to pick and choose which new features and fault fixes are released into their test system. E.g. you may have fixed 15 faults but the client only wants 3 of them to be included in the release, and similarly they want just one of the new features but nothing else.
Keeping track of which classes and features have been added and/or modified is a bit of a problem to say the least. You may have the situation where a new property has been added to a class to support a fix that is to be released, but also some of its methods have been changed to accommodate other fixes that the client doesn't want this time round. There may be 7 - 10 days between releases so quite a lot of changes can be made to the system.
The patch versioning capability of Jade doesn't really help with this kind of thing. Keeping track of the changes manually would seem to be a significant overhead and exceptionally error prone. It's easy to imagine the problems that can be caused by missing things out, or of releasing new stuff which breaks existing functionality in the target system. Perhaps in the days of monolithic COBOL programs and relatively simple data structures things were a lot simpler. In any highly modular system (like any OO system) selective releases must always be problematic - or am I being overly negative? Perhaps there are some very smart version control systems out there that are integrated into OO development environments?
We have considered a number of options e.g. a) make a list of changes made as you go along; b) when you are working on a particular feature/fix add all the classes you have worked on into a 'view' to be extracted later; c) when working on a particular fix/feature log on to Jade with a unique userid that is linked somehow with the job you are doing. Of these we think the latter is probably the least useless idea. None of them are satisfactory.
Any ideas? How do you handle this kind of thing?
Cheers,
Eric in Dunedin