Product Line Acquisition in the DoD: The Promise, The Challengesby Lawrence G. Jones
I found this article to be a good read. One of the key points that Jones addresses is that to maintain a successful Product Line Architecture, you need to be continuously developing your Core Assets & your unique Products. He emphasizes that a major technical hurdle is positioning the Core Assets in a way that they can be reused seamlessly over and over again.
I tend to agree with this, because at the company I work for (which does DoD development) this is exactly one of the problems we face. I am actually going to begin attending meetings with representatives from two separate projects that have similar software components to develop. Both programs are reletively new - but based on the same legacy software.
Hopefully, by tapping into resources like the article by Jones, our two projects will gain guidance towards the concept of a Product Line.
Software Product LinesDuring a previous class, we mentioned Software Product Lines. The idea is to design a core system and then when you want to add a new product you only have to implement the 10%-30% new customized/unique code.
Think of how Microsoft offers "Professional Edition", "Enterprise Edition", and "Home Edition". Or how Canon has the A80 (4MP-CF), A95 (5MP-CF), A520 (4MP-SD), A620 (7.1MP-SD), etc.. (that are all part of the PowerShot Product Line of digital cameras).
The problem is, in reality, by the time you identify a situation where Software Product Lines would be beneficial you've already produced at least three similar-but-different products, so picking out "common code" for the core is a very challenging job. If you are lucky, there will be a lot of overlap among the teams that created the three initial separate products and a lot of similar idealogoies were used. If you are unlucky, each product was slapped together more-or-less independantly and rectifying the Product Line will be as large a project (if not larger) as the initial development effort on the initial product in the line was.
===========
This is submission #1 for CS-565 (Computer Architecture) in the Spring of 2006 with Gregg Vesonder.