Agile software development is a conceptual framework of software engineering that promotes iterations in development throughout the project life cycle. There are many agile development methods; the majority minimizes risk by developing software in short time frames. The software developed in a unit time is called an iteration, which should last from one to four weeks. Iteration of the life cycle includes: planning, requirements analysis, design, coding, review and documentation. Iteration should not add too much functionality to justify the launch of the product to market, but the goal is to have a "demo" (without errors) at the end of each iteration. After each iteration the team reevaluates project priorities. Agile methods emphasize face-to-face communication rather than documentation. Most agile teams are located in a single open office, sometimes called "launch pads".
Agile Approaches
Agile software development is a conceptual framework of software engineering that promotes development iterations throughout the project life cycle. There are many Agile development methods; the majority minimizes risk by developing software in short time frames. The software developed in a unit time is called an iteration, which should last from one to four weeks. Each of the life cycles includes planning, requirements analysis, design, coding, and documentation. Agile methods also emphasize that working software is the first step of progress. Combined with the preference for face-to-face communication, agile methods are often criticized and treated as "unruly" by the lack of technical documentation (Abrahamsson & Korkala, 2004, 12).
There are four types of values:
The team ("People and interaction rather than processes and tools"): In order Agile team is more important than the tools (structural or control) or operating procedures. It is better to have a cohesive team that communicates, composed of developers (possibly varying levels), rather than a team of experts each operating in isolation. Communication is a fundamental concept.
The application ("Software functional rather than full documentation"): It is vital that the application works. The rest, including the technical documentation is a valuable but not an end in itself. Accurate documentation is useful as a means of communication. The documentation represents a significant workload, but may nevertheless be harmful if it is not updated. It is best to discuss thoroughly the code itself, and especially to transfer skills within the team (it goes back to the importance of communication).
Collaboration ("Collaboration with the client rather than contract negotiation): The client must be involved in development. One cannot simply negotiate a contract at the beginning of the project, and then ignore the demands of the customer. The client must cooperate with the team and provide continuous feedback on adapting the software to its expectations (Adzic, 2009, 123).
The acceptance of change ("Coping with change rather than follow a plan"): Initial planning and structure of the software must be flexible to allow for the changing demands of the customer throughout the project. The first releases of the software will often result in change requests.
Until the end of the 1990s, software projects had been developed by many people and with much ...