Agile Development Model
What is Agile Model?
Meaning of Agile is ‘moving quickly’. This software development methodology is based on iterative and incremental model of software development.
There were certain principles on which the agile model was to be based. The most important of the principles is customer satisfaction by giving rapid and continuous delivery of small and useful software. The delivery of the software happens at regular intervals as opposed to after a number of months, which is the case with the waterfall model.
There is a lot of scope for cooperation between the business people and the developers, as the requirements keep coming from the business people at regular intervals. There is a lot of emphasis laid on technical excellence and good design of the software. The software development team has to adapt regularly to the changing circumstances.
Agile modeling is a methodology, which makes use of practice for modeling and documentation of software based systems. Traditional modeling methods in software development projects have given way to these practices which are applied in a more flexible manner
Types of Agile Methodologies
o Extreme Programming (XP)
o Agile Unified Process (AUP)
o Dynamic Systems Development Method (DSDM)
o Essential Unified Process (EssUP)
o Exia Process (ExP)
o Feature Driven Development (FDD)
o Open Unified Process (OpenUP)
o Crystal Clear
o Velocity tracking
There are different methodologies, which are a part of the agile model. The most famous one is scrum methodology. Like all the other agile computer programming, scrum is also an iterative and incremental methodology. This methodology is different than the other methodologies because, the idea of empirical process control was introduced in this process. As a matter of fact, scrum was introduced for software project management. However, it was eventually also used for software maintenance.
The best part of the scrum methodology is that it makes use of real world progress of a project, which is used for planning and scheduling releases. The entire computer software project is divided into small parts known as sprints. The duration of sprint can range from one week to three weeks. At the end of the duration of the sprint, the team members along with the stakeholders meet. This meeting helps in assessing the progress of the project and chalk out the further plan of action. This assessment helps in taking stalk of the current state of affairs and rework the line of work and complete the project on time and not just speculate or predict the further outcome.
Extreme programming (XP)
It is a software development methodology which is intended to improve software quality and responsiveness to changing customer requirements. As a type of agile software development, it advocates frequent “releases” in short development cycles, which is intended to improve productivity and introduce checkpoints where new customer requirements can be adopted.
Other elements of extreme programming include: programming in pairs or doing extensive code review, unit testing of all code, avoiding programming of features until they are actually needed, a flat management structure, simplicity and clarity in code, expecting changes in the customer’s requirements as time passes and the problem is better understood, and frequent communication with the customer and among programmers. The methodology takes its name from the idea that the beneficial elements of traditional software engineering practices are taken to “extreme” levels, on the theory that if a little is good, more is better.
Critics have noted several potential drawbacks, including problems with unstable requirements, no documented compromises of user conflicts, and a lack of an overall design specification or document.
Agile Model in Software Testing
Agile model is not only used in software development, but also for software testing. Agile model testing is carried out from the perspective of the end user. There is no emphasis, which is laid on the rigid testing procedures, but the focus is rather on conducting the tests iteratively on the newly developed software component, as well as regression tests are carried out on the entire software to check if any new bugs were introduced into the software. In the agile testing model, the focus shifts from ‘testers as quality watchdog’ to ‘the entire team quality watchdog’.
As the name of the testing methodology suggests, the testers have to adapt themselves to rapid development cycles and make the required changes to the test suite. In this software testing type, the aim is to test from the perspective of the customer as early as possible in the development process. Because the testers are involved early on in the entire process of software development, they give the necessary information, feedback and suggestions to the development team, rather than after the development has come to the final stages.
Agile model has given the software development process an effective and practice based methodology. Therefore, the principle ‘maximize stakeholder value’ can actually be put into practice, leaving the customer satisfied and happy.
Advantages of Agile Model
The most important of the advantages of agile model is the ability to respond to the changing requirements of the project. This ensures that the efforts of the development team are not wasted, which is often the case with the other methodologies. The changes are integrated immediately, which saves trouble later. There is no guesswork between the development team and the customer, as there is face to face communication and continuous inputs from the client. The documents are to the point, which no leaves no space for ambiguity. The culmination of this is that a high quality software is delivered to the client in the shortest period of time and leaves the customer satisfied.
Disadvantages of Agile Model
If the projects are smaller projects, then using the agile model is certainly profitable, but if it is a large project, then it becomes difficult to judge the efforts and the time required for the project in the software development life cycle. Since the requirements are ever changing, there is hardly any emphasis, which is laid on designing and documentation. Therefore, chances of the project going off the track easily are much more. The added problem is if the customer representative is not sure, then the project going off track increase manifold. Only senior developers are in a better position to take the decisions necessary for the agile type of development, which leaves hardly any place for newbie programmers, until it is combined with the seniors resources.