|
The Evolutionary Approach to Developing Software |
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
|
|