Wednesday, 15 September 2010

Problems with software development nowadays part 1

Building custom-built software for a complex business scenario is a big, expensive and risky endeavour. This has many causes. Getting good and complete functional requirements being the most important one of them. Also question like which architecture should we use, should we develop our own components or buy third-party components, have to be answered before starting development. These choices are fundamentally important. They to a  high extent determine the lifespan of the system.
Once the system is ready it needs to be maintained. At that point every system is susceptible to various forms of decay:
  1. Functional decay
    No system is static. There are always new wishes on the horizon and sometimes existing functionality in no longer needed. The bigger a system gets, the more difficult it becomes to change fundamental choices. I call this the law of the oppressive scale.
  2. Knowledge decay
    People come and people go. Often resources who did the original design and implementation have left the team. Has the knowledge about the system been spread over other developers and designers? Is there any documentation and is the documentation up  to date?
  3. Technology decay
    Also technologies come and go. Software engineering is a field in motion. About every 10-15 years there has been some kind of paradigm shift in software development: from procedural to OO, from OO to functional, towards DSL 's to mention a few. Normally a system is built in a technology that is 'hot' at the moment the decision is made to implement a new system but who says that technology is still hot in 10 years time? I think it's a waste of time and money to rebuild a system, just because of a new technology.
So how must we advance in software engineering to fight those decays? This will be the topic of my next blog.

No comments:

Post a Comment