views:

158

answers:

1

Some of the work we do at my company is slowly edging towards a product family with different products in the same family and different flavours (or feature sets) in each product. I am looking for some product line engineering techniques that might help us. Web search leads to a lot of resources and a lot of different sources of information and differing methodologies. Before pluging into any of these in depth I thought it would be useful to get some practical advice from someone who has done something similar to this before. Anyone have any pointers/nuggets of wisdom in this area? I am particularly looking for better ways to do the following in a product line environment:

  1. configuration and build management
  2. ease of development cycle
  3. testing
+3  A: 

Top three tips. Automate, automate, automate.

Read Continuous Integration. Making a "build" used to be a somewhat big ritual back in the days. Find "the machine" and "the files" with "the guy" and only he knows how to package everything up, etc... With CruiseControl and its cousins, unit tests are run, development builds are created, and installer is packaged automatically. There's nothing magical about any of the tools, but spending time setting each component up and maintaining them rewards the team greatly. Automated builds become a mundane part of life.

When you are working on a line of related projects, I'd suggest a strong coding conventions and policies so developers can read and share each others code. Part of the policy should be to prevent thing that can degrade modifiability of code; and to promote refactoring, unit tests, and DRY.

I am not going to repeat what's written by Fowler, but automating the deployment is also worth your time and effort (once you have something to deploy of course). From SQL scripts to creating service users, everything must be automated, and preferably wrapped in a simple website your testers can deploy on demand. Again, by automation, deploying QA builds to test become a matter of fact.

eed3si9n