A software development process describes an approach to building, deploying and maintaining software. There are several models of this process, which describe approaches to the elements of division in the process of software development. Huge amount of organizations, which develop the software, use the different methodologies of producing. The process of searching of the repetitive and expectable processes, which increase the productiveness and quality of the products, have been lasting during decades. Some people try to systematize and formalize insoluble tasks of the software developing, another one begins to use management for its creation. Very quickly projects begin to be inappropriate according to the terms or budget without good management. There are a lot of good projects, which were failed because of a bad budget.

Actually, there are some fundamental software development activities that are common to most processes: requirements analysis, specification, architecture, design, implementation and testing, and deployment and maintenance. The most important task in developing a software product is the elaboration and analysis of client?s demands. Analysis of the work fields very often becomes the first step of the new product design, whether it is the addition to already existed application, new application, subsystem, absolutely new system. Taking into account the fact that at the beginning of the project the developers cannot be the specialists in the field of new software, the first their task is to study this field of knowledge. The better the developers? study the field in which they are working, the less work required. Another reason of this work is to avoid the muddle in terminology and understanding of what this program does. If analyst uses inappropriate terminology, the program can work incorrect.

Specification is the task of exact describing of the product, which will be created. Specifications are the most important for the external interfaces that must be stable. Architecture of a software system or software architecture is used for the certainty that software will be correspond to all requirements and have the opportunity to add new decisions for new requirements. Design deals with describing conceptually a software solution that meets the requirements of the problem; implementation actually builds such solutions, and the process of testing is necessary to find out and correct different mistakes. Documenting is used for the purpose of supporting and improving the software. It is also can include the description of external or internal programming interface.
Deployment starts when the code is tested and approved for release. Software training and support are very important because a lot of developers do not realize that the product will be senseless if nobody uses it. The people very often avoid changes in software products, so it is very important to train new customers. Maintenance and improvement of the product, including the correction of mistakes can take more time that the developing process itself. It can be useful to correct the code, which does not fit the necessary design ? it can make the process of searching and correcting mistakes easier and don?t allow users to find them.
Software Development Models:

Waterfall processes
Historically the first adopted software development model was the waterfall development process or waterfall. The waterfall model shows a process, where developers are to follow these steps:

1. Requirements specification (Verification or Analysis)
2. Design
3. Construction (implementation or coding)
4. Integration
5. Testing and debugging (validation)
6. Installation (deployment)
7. Maintenance

Each new step starts only when the previous steps have already finished. This model is very popular and successful, but it has some disadvantages. For example, it is meant for the existence of definite requirements, which were given beforehand, and they remain invariable during the whole process of development; it also assumes that the whole code is designed from scratch, making no allowance for the reuse of existing software. Because the development is a linear process, the waterfall process doesn?t allow to the previous phase to repeat without repeating all steps.

Agile software development
Agile software development was created by organizations involved in iterative development. To that approach easier, more people-centric viewpoints than traditional approaches were added. Easy processes use feedback, instead of planning as the main controlling mechanism. Feedback is realized with the help of regular tests, as well as the frequent releases of the developed product. Interestingly, that researches show the potential for appreciable improvements of the standard waterfall process.

Iterative processes
Iterative development prescribes the construction of initially small but ever larger portions of a software project to help all those involved to uncover important