A software development process is a process used to develop computer software. It may be an ad hoc process, devised by the team for one project, but the term often refers to a standardised, documented methodology which has been used before on similar projects or one which is used habitually within an organisation.
Some managers who are held accountable for software development, may seek to find the commonalities in the efforts of their organizations. If those managers are process-oriented, (rather than people-oriented, task-oriented, profit-oriented, project-oriented, etc.) then they may seek methodologies or other proxies which can serve as templates for the software development process.
Of course, it is entirely rational for other managers who are not process-oriented to use a documented software development process or methodology. In such a case one might say that the methodology is used by them as a "proxy" for the necessary set of process-oriented skills required in any software engineering project.
Processes and meta-processes
A growing body of software development organisations implement process methodologies. Many of them are in the defense industry, which in the U.S. requires a 'Rating' based on 'Process models' to obtain contracts.
The Capability Maturity Model (CMM) grades organizations on how well they create software according to how they define and execute their processes. ISO 9000 describes standards for formally organizing processes with documentation.
ISO 15504, also known as Software Process Improvement Capability dEtermination (SPICE), The software process life cycle is also gaining wide usage. This standard is aimed at setting out a clear model for process comparison. SPICE is used much like CMM and CMMI. It models processes to manage, control, guide and monitor software development. This model is then used to measure what a development organization or project team actually does during software development. This information is analyzed to identify weaknesses and drive improvement. It also identifies strengths that can be continued or integrated into common practice for that organization or team.
Six Sigma is a project management methodology that uses data and statistical analysis to measure and improve a company's operational performance. It works by identifying and eliminating "defects" in manufacturing and service-related processes. The maximum permissible defects are 3.4 per million opportunities. However Six Sigma is manufacturing-oriented, not software development-oriented and needs further research to even apply to software development.
Agile software development methodologies, such as Extreme Programming and lean software development are full blown methods that take an incremental or evolutionary approach to software development.
Finite state machine (FSM) based methodologies allow executable software specification and by-passing of conventional coding (see virtual finite state machine or event driven finite state machine)
Some software development methods:
Some paradigms for programming software:
There are also a variety of kinds of software documentation.