Code Management Questiongreenspun.com : LUSENET : Joel on Software : One Thread
Does anyone know of any good books about managing code bases in large/growing companies? I'm working on creating a subsidiary business that will have minor evolutionary development needs specific to the subsidiary, but needs to be able to leverage changes in the main product code base over time. We are weighing maintaining a single code base, clean break between the two businesses, a periodic one or two way syncronization, and other possibilities. I'm looking for a good book, or online essay, that debates various methods for managing a large and complex code base during parallel evolution. Any pointers would be great.
-- Anonymous, November 18, 2000
Don't know of the open source model would work within the organization or not, however, the approach written about in
this book on CVS
is at a minimum an interesting read for people doing code management stuff.
-- Anonymous, November 18, 2000
I don't know about books, but I have my opinions. I'm in the same situation in my business. We started in the "One code base with flags" approach, felt it isn't good enough and started in the "Periodic Synchronisation" way. This was pure hell. Synchronising after every stable release seemed like the right way - to avoid copying bugs, but by then the 2 products got so far apart that synching took 2 days. Now we are back with the ugly code and the flags.
-- Anonymous, November 19, 2000
I'm always suspect of "separate but equal" code duplication. There are inevitably duplicate bugs and development effort. I obviously don't know the details of your project, but I really like the way the Linux kernel is partitioned into common and architecture-specific code without ugly #ifdefs. The common code is designed for an "idealized" processor. Each architecture has its own code directory and implements the idealized interface defined in the common headers. Processor quirks and "features" are isolated to their own private files. This avoids the problems of ugly #ifdef LINUX #elseif SUNOS #elseif WIN32 #else ...
Your project sounds like an example of what David Parnas calls "program families". A program family is a set of product based on some core feature code. Microsoft does this often. For example, their localized international products are based on the same core code. Their "edition" products (such as their "enterprise edition" or "student edition") repackage a core product for a new use. You might not like these Microsoft examples, but the Parnas paper does have merit. I can't find the article on the web, but here is a bibliographical reference. It's an oldie but goodie.
David L. Parnas. "On the design and development of program families". IEEE Transactions on Software Engineering, Vol. SE-2, No. 1, March 1976, pp. 1-9.
Steve McConnell briefly discusses program families in his highly recommended book Code Complete: A Practical Handbook of Software Construction.
-- Anonymous, November 20, 2000
Anyone have input on RUP (the Rational Unified Process)? My company is leaning heavily this way. So far it looks good on paper, but I haven't personally heard a lot of real-world feedback. They certainly seem to have the bulk of the mindshare, perhaps due to the prominence of their principals (three amigos) in developing UML.
-- Anonymous, November 21, 2000
You might want to check out The Autodesk File but one of the founders of Autodesk. As well as being an uttrly compelling read, it discusses a variety of strategies they've used over the years in code maintainence.
-- Anonymous, December 11, 2000