Saturday, October 30, 2010

Agile Model

Most people have heard of this already as it's been relatively new and most controversially discussed. However, it might also be the one closest to real life scenarios.

There are only four activities: coding, testing, designing and communicating. All of these activities are performed by each of the programmers involved in the project. No documentation is produced as the code represents all design decisions and thus all the knowledge. Pair programming is one of the key concepts in AGILE: two programmers sit in front of the screen and share both knowledge and decisions. While one of them is writing code the other one is keeping an eye on design errors or implementation errors. This way small parts of the system are developed, errors are supposed to be small and there is another person at hand who knows how to move on when one gets ill. The customer is always ready to hand, so that if requirements problems or other problems arise there's always someone to ask.

agile

Together with the manager the customer divides the program into sub-projects that can be dealt with in a certain amount of time (normally one week). This way the customer has the possibility to control the development, costs and can change requirements in between each of the phases. By letting the customer write acceptance tests first, the programmers understand what their goal is, what their program is supposed to do. But the programmers write tests, too, to see if smaller components of the system act the way they're supposed to. After each week the programmers and the manager meet in order to discuss the status and the achievements of the developers. In those meetings the other members are only supposed to listen. After those meetings the members could discuss certain things or have a look at the code.

One of the main advantages is that the customer is involved during the whole development process. And by dividing the project into smaller projects the customer is even able to redefine goals in between the phases. The programmers concentrate on programming and deal with what they're supposed to deal with most of the time: the code. Repeated and also regression tests are used to guarantee quality code.

The drawbacks are obvious: as all of the programmers are dealing with the complete code and all of them are responsible for the whole code, it's hard to catch up at large projects. Empirical studies have shown that AGILE only scales up to 10 programmers. Everything above that creates an immense amount of work for each of the developers.

No comments: