Over the past decade, an increasing number of scientific and engineering breakthroughs have been achieved due to the rapid advancement in our ability to perform computations. Greater challenges are still in the roadmap of computational sciences, and with petascale computer systems now in the horizon we are urged to question: Do we have the tools? Tools that continue to provide a wide range of services to support massive data transfers, code development, implementation of complex numerical algorithms, coupling of multi-physics, interoperability and code execution.In general, "Do we have the software to run in petascale systems?", "How can we make our algorithms and applications scale for these systems?" and "What will make it more efficient and productive this time around?" In this talk, we will take a look at software technologies and practices that will effectively enable large complex applications to run in petascale systems. For this, we look at general computational requirements of applications and software technology to effectively use these high-end computing systems and the tools.