When you consider the quantity and diversity of models and philosophies available for software development, it's a wonder why many projects fail even when developers deliver on key criteria such as functionality, efficiency, reliability, and so on. There's even a ZDNet blog that chronicles IT project mishap after mishap.
But observers are noticing that a major shift to how software systems are developed is underway, and it's less rigid, more adaptive and evolutionary.
In a recent post on Toolbox.com, David Tow, an Australian author, engineer, and technologist with 20 years experience and a knack for describing future trends, isolates the seminal problem of how best to capture the requirements of a system. "It is the elephant in the room at almost every CIO seminar and conference," he writes.
After discussing where we've been, Tow explains the confluence of today's forces that impact development:
In the 21st century we live in a vastly different world of web services and SOA’s, cloud and mobile computing and enterprises which must continually adapt to a bewildering mix of competitive and economic pressures, almost on a daily basis.
He then points out examples of the evolutionary approach in action:
These are cooperative, innovative works in progress, which have been tested through many iterations by scenarios and prototypes, before emerging in beta form- all developed in close consultation between developers and their user communities. And they continue to be adapted as community needs evolve on a daily basis.
Tow's takeaway for software engineers is that if a chosen development methodology is to be realized, it should incorporate an evolutionary approach (perhaps by emulating the example cases) and also combine an efficient mechanism such as Agile Programming for converting evolving functional and process requirements to a usable system.
Tow completes his point with a look into his crystal ball:
In the future, the trend towards applying evolutionary techniques to software development will become embedded in IT best practice, particularly as this will be coupled with the parallel trend towards autonomic management of enterprises; interacting with the human and physical world on a real-time basis.
This is as good a silver bullet as the IT industry is likely to get. Evolution has been the universal driver of all systems- biological, social and now economic and computing, since the universe began and we ignore its wisdom at our peril.
The record of systems development to date is appalling, but not through lack of the enormous level of innovation, effort and professional skills applied. It is because we have found it difficult to come to terms with a constantly evolving world impacting our built environment. We have ignored the fundamental principle that systems must continually adapt to changing environments if they are to survive.
What do you think about evolutionary software systems development? Is it obvious..or is it a panacea? Or both? Post in Talkback.