software development history