The process of software development has involved the usage of different methodologies that were dependent on the requirements of the software to be developed. The traditional approach taken in software development projects has been the waterfall model which was the standard practice adopted for a fairly long period of time. Subsequently, the shortcomings of the waterfall model led to the development of the agile methodology which has established itself as the gold standard in the present times.
The pre Agile methodology period
As you are aware, the waterfall model was the oldest model, based on which software development activities took place. Even before any coding activity started, there was a long phase that entailed only documentation. The first piece of the document was the Business requirements document or BRD for short. This explained in detail the business solution for a software project including the expectations of a customer. This was followed by the technical specification which documented the software architecture of the proposed application and included both functional and nonfunctional requirements.
After all the documentation processes were complete, would the activity of coding finally begin? This was followed by integration and testing. At this stage, you had an application at hand which could be said to be production-ready. But mind you, a huge amount of time – months or maybe years have already been spent by the time you arrived here.
Now when you are ready, you happen to find that something or the other was not working as expected. At other times customers would not find a particular feature to be very necessary which in fact was a wasted effort. Also, there were scenarios where a feature was highly successful but needed a lot of reprogramming on the performance factor. Incidentally, all these were slowly discovered after the entire process of software development which included a lot of effort other than the expenditure incurred.
The methodology of the waterfall model began to slowly change with the arrival of the internet and the subsequent development of internet applications. There were market forces at work which dictated that the applications, websites should be developed and marketed in a brisk manner. This led to the questioning of the contours of the traditional waterfall model. Little did anyone know at that point that these small things were what was mainly responsible for the development of the Agile methodology in later years.
Birth of the Agile methodology
It was in the year 2001 that a few senior programmers collectively came to the conclusion that the manner in which they practiced software development was quite different from the traditional waterfall model. They came up with what is now known as the Agile Manifesto which clearly explained what they believed to be the manner in which software development processes should take place. These twelve principles as outlined in the manifesto can be termed as the foundations on which Agile methodology was born.
The agile manifesto gave value to the following four things:
Principles of the Agile methodology
There are twelve principles which serve as the guidelines of agile software development:
Agile methodology roles
The main focus area when an Agile process begins is the user or customer.
When the agile development process begins there is someone who happens to spell out the requirements from the customers’ end.
of the customer. He takes inputs from the customer and creates a vision of the product. This person is known as the product owner and it lies within his responsibility to communicate this vision to the development team and develop the product. While working with the development team this vision is broken down into user stories that have more details on the user and the solution needed. These user stories are given a priority by the product owner and accordingly, activities are planned, executed till completion.
In practices of agile methodology, the team members consist of people having different job roles whose responsibility is to complete a deliverable. So, you shall find the following professionals working together and completing a predefined task which is, in fact, a part of the application, not the entire application:
In order to seamlessly do this, the team members have to have very fine communication within themselves so that everybody knows who is doing what and how the actual product development is taking shape.
The Scrum Master is, in essence, the coach of the team and helps the team members work in an effective manner. The Scrum Master sees to it that regular scrum meetings are held where progress on user stories are tracked, discussions held on existing issues that impair the progress of the project.
There are many agile frameworks that support agile development practices. The most popular of them is scrum and focuses on a measure of delivery called a sprint and meeting processes which include the following:
Along with Scrum, Kanban is a popular framework which you are probably aware of and which supports the Agile methodology. The Kanban method lays emphasis on a process of continual delivery while not overburdening any particular team. The Kanban method is based on the following four principles:
The Agile methodology
The Agile process helps in breaking a larger software project into several smaller projects which are developed incrementally in an iterative fashion. As a result of which the size of the project is greatly reduced and what you are left with is smaller projects whose scope and size becomes more easily measurable. Agile works in an iterative manner and each iteration is, in general, a week long.
During this period of iteration, the project, the customer team decides on what needs to be added to the iteration and accordingly the result which is a working software program is delivered to the customer in a production-like environment.
The customers on their part test the programs and can make changes if necessary. Many such releases are made throughout the process as the program undergoes changes. This process of continuous iteration is repeated until the completion of the project.
Key benefits of Agile methodology
The benefits which come as a part and parcel for adapting the Agile methodology are the main reasons for which it is thought to be the way forward for all software development processes. The main benefits can be summarised as:
The agile methodology ensures that within the scope of each sprint meeting there are enough opportunities for interaction and engagement between the team and all stakeholders. Since the client is actively involved during the entire duration of the project the team has a clear cut idea about the client’s vision and consistent delivery of high-quality software ensures all stakeholders have an authentic relationship with all team members.
As the practice of Agile methodology ensures that the client is involved throughout the entire project, the entire project development life cycle is completely transparent. So, there are no hidden or grey areas that the client may be unaware of. This transparency results in better engagement between client and team members.
Since the sprints are held on a predetermined schedule of 1 to 4 weeks duration the scope of predictability is higher and additional features to the software can be delivered faster. This results in early releases of the software for testing purposes, either by quality assurance professionals or by the client.
Since the duration of the sprint is fixed, the costs are limited and can be predicted which is based on the amount of work done. The client can better understand the approximate costs of features being added if the estimated cost before each sprint is combined.
As scrum is closely related to Agile methodology it allows more flexibility in terms of giving priority to features that are customer-driven. The team, in turn, has control in managing the units of work which are defined within the boundary of each sprint thereby making gradual and continuous progress towards the final product which is to be delivered.
The processes practiced within the scope of Agile methodology allow the scope to continually set new priorities with respect to the product backlog. As a result of which the new changes which have been thought of can be added to the next iteration cycle and these can be introduced within a very short time, say a couple of weeks.
The constructive engagement which the client has with members of the team ensures that the team understands better the requirements of the client’s business and delivers features that give the maximum value to the business.
User stories are used to define the features of the product which need to be worked on. As the focus is on the needs of the user each feature is of actual value addition and not a mere component. So, after each sprint session if the software is put through beta testing then there is a scope of getting valuable feedback. This is of importance as remedial steps can be taken on early in the project and necessary changes can be made by you.
This is one of the key benefits of using the Agile methodology. As the project is broken down into smaller units, they are more manageable and the team can concentrate on delivering high-quality work. As for build creation, testing, reviewing, etc happen all through the iteration defects can be found which can be fixed early in the process thereby resulting in overall quality improvement.
The Agile methodology focuses on the creation of a common sense of objective for all members of your team. This shall be giving a sense of purpose to all members of the team. Teams who have a purpose have been found to be more productive and efficient.
Why is the Agile methodology better
The total assimilation of agile principles, implementation of them in an agile framework, adoption of agile development practices ensure that applications are better developed in a much faster way and having the best available technical standards. The main difference with the pre-existing waterfall model is that agile has been designed to be flexible and adaptable with respect to change in requirements.
Agile methodology allows problems to be broken down into smaller units which can be developed and tested. If there were a situation that something is not working as expected or a feature which was a part of the planned application is missing then immediately steps can be taken to rectify the issue and get the project back on track.
Agile development is better because it promotes an ongoing process of continual improvement, something which fits very nicely with the way software development practices take place today. Development teams may understand the requirements of the client and accordingly design an application but feedback from users or clients may necessitate the incorporation of major changes to the existing solution.
In such a scenario, implementation of the best practices of Agile methodology ensures that the changes envisaged are made a part of the product before the final shipment is made. Any software is in constant need of being improved as compared to its existing version. The life span of any software is limited until and unless there are constant changes, upgradations being made to it in order to add new features or functionalities.
Hence, any environment which facilitates rapid incremental changes will be best suited to serve the needs in such situations. This is where Agile development comes into play as it fits the role perfectly with its processes which are iterative in nature and generate a process and ecosystem for continual process improvement.
Lastly and most importantly, Agile methodology works better because teams are more productive working with this process. Members of the development team are clear on the work activity at hand and are happy to show the results of their effort. Product owners, on the other hand, can see their vision take the form of something concrete in the form of software in a much faster time frame.
Lastly and most importantly the users, for whom the entire software development life cycle takes place to get a product which they need and not what has been imposed on them by the development team. It is for all these reasons that enterprises prefer the processes associated with Agile methodology. Agile methodology is here to stay as Agile is the future.
We, at Vyrazu Labs, have been avid practitioners of the processes associated with the Agile methodology and as we are software solution providers for businesses, have incorporated the best practices of agile while developing our products which are available at Google Play and App Store. Additionally, one of our leading products, an HR software called HRMS has been developed using the principles of Agile methodology. Do have a look at this blog post to know a bit about it.
As it has been mentioned above, we have incorporated the best practices of the Agile methodology in our software development projects.
Incidentally, We happen to specialise in the areas of mobile app development which includes both Android and iPhone platforms, website development, upcoming areas of Blockchain, iOT amongst others. So, if you happen to have any need for the development of customised software for your organisation please get in touch with us for a FREE CONSULTATION.
Please drop your comments/feedback which shall be much appreciated.