CSE Software design for scientific software is an intricate process composed of multiple steps - including determination of what capabilities are needed to meet the targeted scientific goals to understanding how to balance tradeoffs between modularity, functionality and performance in the resulting software product.