In business today, innovation is critical and responsiveness with flexibility is necessary for survival. A new model for software development was created to adapt to the high demands of the modern business needs. Agile software development is the term used to describe a modular, responsive, high quality approach to software development.
With the increasing demand for faster products in the marketplace, software developers have created ways to develop software faster. These agile techniques break complex system programs into functional modules, which can be implemented into production independent of an entire application. This modular approach is necessary as it is unrealistic for modern businesses to wait several years for a software application.
Historical system software was developed using a waterfall method. This process included working on the requirements, design, development and coding of an entire application. When used with large enterprise applications this waterfall process would take years to complete. With agile software development, modules are available for implementation within a few months.
There are many agile development frameworks available today. These include extreme programming, scrum, adaptive software development and feature driven development. All of the fundamentals of these frameworks were combined into the Agile Manifesto. This manifesto was created in 2001 by the technical creators of many of the agile development frameworks of that time.
The fundamental goals of agile software development are to increase communication, increase speed to market, and create a feedback loop from the customer. This form of development provides a means to quickly demonstrate requirements with a functioning application. This also builds transparency into the software development process between the customer and the development team.
Within agile software development, each modular release is considered a sprint or spiral. Each release gives the customer the opportunity to prioritize the functionality that is most important for the business at that time. This model allows business the opportunity to adapt to changing requirements for each modular deployment.
The four key areas to effective agile software development regardless of the specific framework are planning, testing, coding, and validation. During each phase of the process the customer has the opportunity to verify and validate requirements as being met. The fundamental rule within the agile process is to keep the modules small enough to complete quickly.
The planning phase is the most important phase of the agile process. During this phase the customer will determine the priorities and define the modular requirements for the next release. Each requirement should be a high level business case and not include any technical details. The requirement should be small enough to complete testing and coding in under four weeks.