Software Development Methodology involves a comprehensive set of activities where there exists an ordering relationship between activities. In the absence of any predefined ordering relationship, the ability to produce the desired product may go for a toss. Be it any software development methodology – the goal of all software development methodologies is to produce good quality software and deliver it to the customers within the mutually agreed deadlines.
Let us first understand the purpose of specifying the Agile Software Development Methodology whose manifesto essentially comprises the following −
Individuals and Interactions − Individuals can be anybody who is involved either directly or indirectly in any software development process or a part of it. If you have embraced a fallacious supposition that individuals are those who sit in front of computers and while away their precious times, you are terribly wrong. Interactions take place between processes and individuals or sometimes between individuals and individuals only. Software industry defines ‘individuals and interactions’ in a broader horizon.
Working Software − Working software is essentially the software which meets all the requirements of clients. In the light of delivering the finest quality software, it is important to send a demo software to iron out the communicational bumps. If the demo software is perfectly in line with the requirements of clients, you can send the documentation as well. Only documentation with no demo software is undesirable.
Customer Collaboration − It is highly likely that customers may not mention their requirements in the very beginning. It is therefore important to constantly be in touch with customers and solicit their requirements. It is all about negotiations and differentiating the reasonable requirements from the non-feasible ones.
Responding to Change − Sometimes, customers may ask you to change one feature and incorporate another. In such a scenario, changes should be made swiftly and a plan should be followed to meet additional future changes and other requirements.
Agile manifesto was published in the year 2001. Agile Software Development Methodology has twelve foundational principles. Here is a very brief note on the same −
According to this principle, the highest priority is customer satisfaction. This is achieved by delivering the valuable software within stipulated deadlines.
This is same as the ‘Responding to Change’ section under Agile Manifesto.
It is essential to send working software frequently to clients. This is same as ‘Working Software’ section under Agile Manifesto.
It is important that business people, programmers and developers work consistently on a daily basis to meet the requirements of clients and deliver a great quality software.
Conducive environment is the ideal environment in which individuals are motivated and trust one another. It is henceforth important to incorporate the conducive environment in the work place.
The importance of face-to-face conversation cannot be dismissed and ignored. Team members should communicate with one another and exchange the information.
In any software development methodology, it is important to have a few measures and metrics of progress. In Agile Software Development Methodology, working software is the foremost measure of progress.
It is completely in the interest of Agile Software Development Methodology to promote sustainable development. For this, all the programmers, developers, users and sponsors should maintain an ideal pace till the end.
Technical brilliance is a trait that is often appreciated. Good and pragmatic software design are key indispensables. Agility is achieved through technical brilliance and expertise in software design.
It is important to reflect on the amount of work yet to be done and amount of work not done.
Teams that are self-organized are usually a fount of best brains. They come up with brilliant architectures and excellent designs.
Team members should constantly introspect themselves. They should acclimatize themselves to the changing climes and work accordingly.
Agile Software Methodology is the assortment of the following Agile software development methods −
The brilliance of Agile Software Development Methodology lies in the fact that it is absolutely value driven. The two vital components of this methodology are −
Adaptive Planning is easier said than done. It involves repeating the project cycle again and again as iterations. It involves re-planning and re-adapting. Evolutionary Design, on the other hand, is the continuous integration and validation of code through industry practices such as Refactoring and Simple Design.
One of the most popular phrases coming under the ambit of Agile Software Development Methodology is Extreme Programming which is a comprehensive set of simple yet concrete methods that help developers and programmers frequently release the product builds in short timescales in equally short development life cycles so as to incorporate all the necessary changes.
Thanks to the principled and disciplined approach that Agile Software Development Methodology advocates, many corporates are vouching for this methodology.