Agile development aims to support early and quick development of working code that meets the needs of the customer. Agile supporters claim that code is the only deliverable that matters, whereas, agile opponents found that emphasis on code will lead to memory loss, because the amount of documentation and modeling done is not enough [1]. There are some limitations to apply agile methodologies [1].
First limitation of Agile methodologies is that it is not suitable for maintenance, since there is not much documentation for the system. Developers are not concentrating on the documentation as much because the primary goal when using an Agile Methodology is to write software not documentation.[20] Another limitation is that Agile Methodologies depend heavily on the user involvement, and thus, the success of the project will depend on the cooperation and communication of the user. Another limitation is that agile methodologies concentrate work quality on the skills and behaviors of the developers, as the design of the modules and sub-modules are created mainly by single developer. This is because they focus on building systems that solve specific problems, and not the general ones. Agile methodologies work best for teams with relatively small number of members (no less than 3 and no more than 9) [23], and hence, they will not work well for teams with large number of members.
To get the advantages of applying agile methodologies in the development, there is a set of assumptions that are assumed to be true. To mention some are: cooperation and face to face relation between the customers and the development team; evolving and changing requirements of the project; developers having good individual skills and experiences; in addition to many more [1]. If these assumptions can not be met, it may be better to go with a different methodology for better project outcome.