NAVmoble - the pocket-sized ERP
Optimized for Microsoft Dynamics NAV and Windows Mobile powered devices

Monday, April 04, 2005

Continuous Integration Again

I was digging into the Continuous Integration theme and fall on the Martin Fowler's Continuous Integration article again - a classic in this field.

And some thoughts came to my mind...
I've always been an extreme fan of the development process automation. I think it may be beneficial for an organizations to automate most of the activities during the development process. This may be one of the ways to transform current software handcrafting into a real industry.

Why automate:
A modern approach in software development activities is the iteration based development. It means that your project steps through a number of iterations. Each iteration, the team adds new features and fixes defects, injected in the previous ones. A key aspect of this aproach is that each iteration includes a lot of similar activities. These activities are vital for the project. However, the team should spend some time for managing, performing and verifying the results from the activities and it costs money. The time and money for these activities are spend every iteration. However there is one other problem - people’s ability to make mistakes. Mistakes may manifest them selves later, often when it’s too late. Some methods to mitigate the risk of mistakes are people's training, personal and group reviews, etc. Such an approach may lower the probability of failing due to mistakes or lack of skills , however it is pretty expensive and also tend to be a constant expense. And while training and reviews will not be avoided another weapon may be added to the organization’s armoury - development process automation techniques.

The benefit from automation

  • Avoid people mistakes
  • Allow experts to focus on unique activities, thus decreasing the total production time
  • Decreases the total development costs and increases the quality of the product

Some ideas of what may be automated:

Source code generation
  • Source code guidelines conformance checking
  • Source version control activities
  • Building/Packaging
  • Distribution Code level tests
  • System-wide tests
  • Team communication

  • Note that the list above only scratches the surface of what may be automated. It also may turns out that some activities may not be automated in a particular context. The development process automation techniques should be adopted with caution and understanding of the possible drawbacks.

    Some velocity gaining concept lately, which concerns some aspects of the upper mentioned ideas is the Software Factories term

    No comments: