Header
The Evolutionary Approach to Developing Software
July 18, 2008  

A software project can be looked at as a problem that is being solved through the use of technology. The software product developed is one of the outputs of the project – in other words, it is the solution to the problem defined. Other outputs of the project can be reusable components, the knowledge gained by the team and so on.

Now, one of the approaches suggested back in the mid-90s, by James Bach, and which still holds good today is to apply an evolutionary strategy to software development. This approach is developed from the fact that as you work on a problem – it evolves and your understanding of it and your capability to solve that problem also changes or evolves. This leads to the product that is being created, evolving over time, and product knowledge also evolving.

When applied to the project level, the evolutionary strategy means ongoing process education, experimentation and adjustment, rather than clinging to a notion of one particular way of developing software. On the product level, it means planning and building the product in layers, which allows concurrent design, coding, and testing. This also provides opportunities to respond to changing requirements or unforeseen problems. On the problem level, it means keeping track of history, and learning about failure and success over time.

Some of the elements of using the evolutionary approach are:

* Don't even try to plan everything up front.
* Converge on good enough in successive, self-contained stages.
* Integrate early and often.
* Encourage disciplined evolution of feature set and schedule over the course of the project.
* Salvage, reuse, or purchase components where feasible.
* Record and review your experience.


This approach has now become common-place, especially in relation to Rapid Application Development, but what you really need to do is to take an evolutionary view of your people, processes, and resources as well. This can lead to better software development in the long-run!

Related links


Evolutionary Software Development: How Data Activities Fit In

Continuous Integration

Measuring the benefits of software reuse

Software Development Methodology Today
 

PProducteering – A great way to build Successful Products!
Producteering is the institutionalization of what it takes to build great products. It ensures the success of a product by bringing customers early into the feedback loop. It also adopts best practices in terms of architecture, usability, performance and documentation.

At the center of Producteering is the people involved in building products, we call them Producteers. It becomes essential for them to be trained on Producteering principles and practices using the Producteering platform. Platform allows for reducing the engineering cycle through usage of frameworks and reusable components, and is an integrated platform for communication, collaboration and project management.

You will learn in this webinar:

How to build successful products quickly and consistently?

What is the significance of 4 Ps in Producteering?

How can Producteeting reduce your R&D budgets?

How does Producteering improve possibilities of differentiating your offerings in the competitive marketplace?

View the webinar


http://producteering.org | Sponsored by Aspire Systems