If you know up front that it needs to last for 50 years, and the requirements are unlikely to change, it's easy to justify the expense of getting lots of spare hardware to be able to handle component failure. That's almost certainly going to be cheaper than trying to port the software forward every decade as technology changes.
Besides that, use open protocols and open source for the whole stack. Use open source hardware too, but don't depend on being able to order new hardware. Processes could change (we could move away from silicon to something else), or file formats for schematics can change so that you can't find anyone to produce the product.
Also helpful would be to target a common VM like the JVM instead of relying on hardware-specific abilities.