CSE Software design for scientific software is an intricate process composed of multiple steps - including the 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.