Goal - Agile software development is to make the development process flexible and slim line. In the development, the focus should rest more on the objectives to be achieved and be able to respond to technical and social problems in the software development.
We know that for creation of something, followed by a strategic plan should be there for better output. Every industry has a goal to produce goods and services, such a way that they can compete in the market. It is possible only when your product cost will be optimum and product specification should be best. We should always think how to make product best and cheapest way. These simple things are also applicable in every software development process model, only difference way of completion of task i.e., how we achieve the desired output.
There are many software development process models. Some of the software process model mentioned below.
- Waterfall model (Traditional software process model)
- Spiral model
- Iterative Process model
- Incremental process model
- Agile process model (combination of Iterative process model and Incremental process)
Every process model has some merits and demerits. Here we discuss some important principles of Agile Software process model. Before discussing Agile process model. we should discuss some important points about Iterative process model and Incremental process because Agile process based on all advantages consist in Iterative and Incremental process model.
Agile method is a particular approach for project management that is utilized in software development. It uses incremental, iterative work sequences those are commonly known as sprints. Agile method is proposed by Dr. William Royce, According to him project could be developed much like a product on an assembly line. Each phase of the Development need to be completed before the next phase could begin.
Principles of Agile Process Model -
- Customer satisfaction by rapid delivery of useful software
- Welcome changing requirements, even late in development
- Working software is delivered frequently (weeks rather than months)
- Working software is the principal measure of progress
- Sustainable development, able to maintain a constant pace
- Close, daily co-operation between business people and developers
- Face-to-face conversation is the best form of communication (co-location)
- Projects are built around motivated individuals, who should be trusted
- Continuous attention to technical excellence and good design
- Self-organizing teams
- Regular adaptation to changing circumstances
There are five main steps followed for Software process model explained below.
A Software Process is a set of related activities that leads to the production of the software. These activities may involve the development of the software from the scratch, or, modifying an existing system.
- Communication - The software development starts with the communication between customer and developer.
- Planning - It consists of complete estimation, scheduling for project development.
- Modelling - It consists of complete requirement analysis and the design of the project i.e. algorithm, flowchart etc. The algorithm is the step-by-step solution of the problem and the flow chart shows a complete flow diagram of a program.
- Construction - It consists of code generation and the testing part. Coding part implements the design details using an appropriate programming language. Testing is to check whether the flow of coding is correct or not. Testing also checks that the program provides desired output.
- Deployment - It consists of delivering the product to the customer and taking feedback from them. If the customer wants some corrections or demands for the additional capabilities, then the change is required
Agile Process Model is a practice that promotes continuous iteration of development and testing throughout the software development lifecycle of the project. Both development and testing activities are concurrent unlike the Waterfall model.
- The agile software development emphasizes on four core values.
- Individual and team interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Agile methods are being widely accepted in the software world recently. However, this method may not always be suitable for all products. Here are some pros and cons of the Agile model.
Advantages of the Agile Model -
- Is a very realistic approach to software development
- Promotes teamwork and cross training.
- Functionality can be developed rapidly and demonstrated.
- Resource requirements are minimum.
- Suitable for fixed or changing requirements
- Delivers early partial working solutions.
- Good model for environments that change steadily.
- Minimal rules, documentation easily employed.
- Enables concurrent development and delivery within an overall planned context. Little or no planning required.
- Easy to manage.
- Gives flexibility to developers.
Disadvantages of the Agile Model -
- Not suitable for handling complex dependencies.
- More risk of sustainability, maintainability and extensibility.
- An overall plan, an agile leader and agile PM practice is a must without which it will not work.
- Strict delivery management dictates the scope, functionality to be delivered, and adjustments to meet the deadlines.
- Depends heavily on customer interaction, so if customer is not clear, team can be driven in the wrong direction.
- There is a very high individual dependency, since there is minimum documentation generated.
- Transfer of technology to new team members may be quite challenging due to lack of documentation.
Agile models are based on iterative software development. An independent working module is built after the completion of iteration. Iteration should not consume more than two weeks to complete a code. Agile methodologies invite the developers to get involved in testing, rather than a separate quality assurance team.
Agile methodologies are suitable in changing environments because of new practices and principles that enable a team to develop a product in short duration.