Future-Proof Software Development?

April, 2010

In the software development business, 'change is inevitable, change is constant'. So how do you manage sustainable software development in a constantly changing environment?

If there is one thing you can count on in the software development business, it is that ‘change is inevitable, change is constant’, in both technology and market needs. Evidence of this can be seen in the number of legacy call center systems that are being sent to the scrapyard having reached end-of-life. The world has moved on; out with the old, in with the new!

So what is the best approach to managing sustainable software development and steering effectively in a constantly changing environment?

In a word: separation. Separate and isolate and modularise as much as possible, both between functional processing units as well as between processing and user interface (UI) modules.

The major reason for separating processing modules into discrete but interlinking functional units is that they can then easily and quickly be modified, or even removed and replaced. This could be for a number of reasons, e.g.

  • Upgrade – as functionality is extended and efficiency increased, the user can take advantage of the latest version
  • New technology – as technology changes, it can be quickly incorporated into new modules, completely replacing the old

This approach safeguards investment and avoids a visit to the scrapyard.

It is worth noting that in order for separate units to function properly, it is essential for all APIs to be clear, consistent, well defined and well documented.

An additional benefit of this is that the functionality for any set of modules could be provided either by a single or multiple vendors. Given the individuality and complexity of contact center topologies, this ability to integrate with other applications is essential.

Also worth noting is that the technology providing the functionality is irrelevant. Components could be built using C++, C#, Java, whatever.

With regard to user interface and application control, with the evolution of the web over recent years, the focus on standards has moved away from the installed application toward delivery via HTTP. This effectively means a combination of HTML and Javascript

Being able to deliver UI over the web brings a number of benefits. Firstly, it enables the back-end processing to be run from literally anywhere with an internet connection. Secondly, it means that the UI

  • can be run on a thin client
  • can be embedded within a 3rd party UI/ web page in an almost limitless number of ways
  • look and feel can be changed (skinning)
  • can be 3rd party branded
  • is instantly replaceable
  • is easy to manipulate and customise, because it uses standard technology

Just as society at large has moved beyond ‘just throw it away’ to ‘reduce, reuse, recycle’, so software development has moved toward sustainability that will change with the times and adapt to market requirements. Beats a visit to the scrapyard, doesn’t it?

Note:

On reading the title of this blog, you may have thought ‘But there is no such thing as future-proof software development!’ You are probably right, but without heading in the general direction outlined here you may never even get close.