The waterfall development model in the context of software engineering is a process of sequential design, often used in software development processes, in which the progress flowing steadily downwards (like a waterfall) through the phases of conception, initiation, analysis, design, construction, testing, manufacturing/production, and maintenance. This methodological approach to sort rigorously the stages of the life cycle of the means, in such a way that the beginning of each stage has to wait for the end of the immediately preceding.

An example of a waterfall development methodology is to follow these steps: requirements Analysis, System Design, program design, coding, testing, implementation and maintenance. In this way, any design error detected in the test stage leads necessarily to the redesign and new programming of the code affected, increasing the costs of development. The word waterfall suggests, using the metaphor of the force of gravity, the effort required to introduce a change in the most advanced phases of a project. While it has been widely criticized from the academia and the industry, continues to be the paradigm more often nowadays.

Agile methodology (philosophy)

Compared to traditional software development, the agile methodology is intended for complex systems with dynamic projects, where to make accurate predictions of the development time is very difficult. As a result it would lose too much money. The number of years of experience have helped make up the agile methodologies.

Predictive versus Adaptive

Development methodologies exist on a continuum from "adaptive to predictive. Agile methodologies are a part of the ADA. One of the key elements of Adaptive development is called Rolling Wave, which determines objectives, but it gives flexibility to the time to get them, these goals are also subjected to possible future changes. How far will come, in time, a goal, an Adaptive development will be more vague about what they spend on that date. A team that uses adaptive development can not report on that will make the next week, but if what features to implement over the next month. If the team asked a prediction of what will be done after six months (or any considerable amount of time) the team will only be able to report on the main objective, or a prediction of the cost you will have.

On the other hand, the predictive methods focus on analysing and planning the future in detail in order to be able to control the possible future dangers. In the most extreme cases, a team that uses a predictive methodology is able to say all of the jobs that will be made over the course of the project. These methodologies are based on a very detailed analysis phase, however, if during the development something goes wrong, it will be very difficult to change the direction of the project. Usually these machines have a change control board, which is to ensure that only the most important changes are added to the project.

Iterative development and development in waterfall

One of the main differences between agile development and the cascade development is that the phase of testing is carried out in several stages. On the Model of desenvoluament in waterfall, there is a stage of testejament when you are finishing one of the phases of implementation, while, in the agile methodologies and especially in the Extema Programming, are carried out in parallel with the development of the code.

As the stages of testing are performed in each small iteration, users can test and validate this small piece of software. This allows users to make better decisions about the future of this program. Have in every iteration of development the opportunity to rethink the way it would continue the program (e.g., the Scrum has at most one month iterations), allows the team to try to maximize establishment the value offered by the program.

This iterative planning allows you to view the development of software such as an organism that was adapted to the changes that were taking place. As long as the software is used, and especially if you have competition, the iterations in the agile development aportarant changes.

Code and documentation

In a letter to IEEE Computer, Steven Rakitin expressed cynicism about agile development, criticizing an article that advocated the agile development as "another attempt to minimize the disciplin of software engineering", and moving the "Work in code for the documentation" to "just want to write code, remember the real programmers don't write documentation".

These aspects are discussed by advocates of agile development, saying that developers should write documentation if it is the best way to achieve the relevant goals, but that there are better ways to get them to write a static documnentaciĆ³. It is said that the documentation hauriĆ  to be barely acceptable (to English Just Barely Good Enough (JBGE), since plenty of documentation seriĆ  a waste of time, because usually the developers did not have much faith in a very detailed documentation, because it usually is not synchronized with the code, on the other hand very little documentation or a very poor can give problems for maintenance , communication, learning, etc.

Agile methodology (the what)

The agile software development agile methodologies or processes (such as, for example, XP, Scrum, DSDM, Crystal, etc.) development methodologies are those that are based on the adaptability of any change as a means to increase the chances of success of a project.

Most agile methods try to minimize the risk to develop the software in iterations, which typically last from one to four weeks. Each iteration is like a miniature project final project, and includes all of the tasks required to implement new functions: planning, analysis of requirements, design, coding, testing, and documentation. While an iteration may not add enough functionality to warrant releasing the product, an agile software project aims to be able to release new software at the end of all the iterations. In many cases, the software was released at the end of each iteration, especially when the software is web-based and can be released easily. However, at the end of each iteration, the team reavalua the priorities of the project.

The basic principles of the agile methodology are:

  • Individuals and interactions over processes and tools
  • The software that runs on top of the documentation
  • The collaboration with the client over the negotiation of contracts
  • The response to the change over following a plan closed

Development methodologies

The process of development of software (or software development life cycle) is a part of software development. Is defined as a sequence of activities that have to be followed by a team of developers to create or maintain a coherent set of products.

You can define a process as a framework that helps the project manager to control the management and engineering activities. This helps to establish the "who does what, when and how" and a control device to see the evolution of the project.

Characteristics of methodologies
Agile methods Predictive methods Formal methods
Soon critics Highly critical Extremely critical
Senior development Junior development Senior development
The requirements change often. The requirements do not change. Limited requirements.
Small teams Large equipment The requirements can be modelled
Culture that responds to change. Culture that calls for order. High quality