re software
This is probably naive but shouldn't software be something that one doesn't ever develop from new by now? In the computing world you do have windows and the UNIX derivatives (like linux, the mac, android etc) but you also have a great deal of stuff which simply gets bolted together in a different way and put on a new device - lots of reuse in other words and not a lot of "from the ground up" developments.
Surely with aircraft it must be approaching that point? If it's always re-writes then how can anyone ever get rid of the bugs? Surely the next aircraft must not require more than 20% new software?