All software has a shelf life.  The question is how much to invest, when, and what to expect that shelf life to be.

Some tools are near permanent by design.  A hammer is a hammer is hammer.  You don't need to upgrade your hammer every two years.  Software, on the other hand, exists in environments that are active and involve many, ever changing variables.  Beyond the obvious mention of security vulnerabilities there is another reason software is not software is not software, and needs constant updates:  our needs change.  

Software is more sophisticated than ever, and continues to grow in depth and complexity at a rapid rate.   New languages, libraries, and methods are being introduced all the time.  Custom programs that used to take years to develop can be assembled from virtual toolboxes in a fraction of the time, if engineers know where to look and know how to use the available tools.

With all of this in mind, when creating or implementing new software for your organization, always take into consideration how long you expect the software to be useful.  If you can anticipate the number of years of utility, it will help guide the course of design and development to be appropriate to the task.  To be effiicient in software development, it is important not to build a system that is too large or expenisive for its expected use.

In many cases, product managers, designers, and developers have moved away from a "Waterfall" method of development for this very reason.  These folks have moved over to the "Agile" process.  With the "Waterfall" method you put together the entire software plan up front, then execute in batches.  The problem with this approach is that by the time you include all of the features of a program, put them on the road map, and execute against them, some of those features are already unecessary or obsolete.  

Instead, many in the industry use the "Agile" method to build systems incrementally, understanding that anything you add will have some shelf life.  But most importantly, the platform on which you build should be flexible and extensible, because the real name of the game is enduring change.