In scientific software requirements gathering phase only loosely determines the required functionality to achieve project goals because scientific software typically does not have static goals. They change with greater knowledge and understanding, therefore, in a way requirements gathering can be viewed as an ongoing process in scientific codes. Not only must the software design be flexible enough to accommodate this dynamism, the software process must also be able to handle it. Development process also involves determination and articulation of verification and validation standards, coding standards and documentation standards. It also includes decision on whether automated regular testing should be a part of the development regime, and if so what are the policites for checking in and addressing testsuite failures. Having well defined coding and testing standards from the outset is essential. Documentation standards dictate the extent of information carried about the development process. For example, a policy could be that all interfaces be described in terms of functionality, parameters, and outcomes in terms of both returned quantities and any changes to the state, and how much documentation should be maintained about design choices and references relevant to the code. A part of coding standard could be the choice of variable names, which would ideally be as self-explanatory as possible.