Solving Software Challenges for Exascale