The word ‘Agile’ has been around for a while and has created a buzz in Software Development. The history of agile programming can be dated back to the 70’s.
‘Agile Programming and Practices’ introduces the concept of producing small units of output that are thoroughly developed and tested at a constant period of time (usually referred to as ‘sprints’). It emphasizes on delivering the smallest workable unit that best delivers the business ideas while constantly improving the product by adding functionalities to it over a period of time. The underlying fact of agile programming is that it is ‘iterative and incremental’.
Agile practices introduce small self organized teams that are highly interactive. Better collaboration is one of the primary outcomes of agile programming while little emphasis is given for formal planning and documentation. The agile concepts emphasize eliminating waste through’ Lean Programming’ techniques. It provides a means to rectify the flaws at an early stage, thereby reducing the rework costs to a greater extent. Above all the greatest advantage lies in the fact that the agile programming model ensures that the project proceeds in the right direction.
Agile practices provide an ‘adaptability to change’. Agile practices are best suited for object oriented software projects where individual objects (or modules) are developed and tested for their integrity and defects before being actually integrated into the final product and tested.
There are different agile methodologies that have been framed over the due course of time. Some of the noteworthy are ‘Agile Modeling’, ‘Agile Unified Process’, ‘Extreme Programming’, ‘Agile Data method’, ‘Scrum’, ‘Open Unified Process’ etc. Some of the noteworthy agile practices followed in the industry are Test Driven Development, Behavior Driven Development, Pair Programming, and Continuous Integration etc…
Let us examine the feasibility of applying a test driven development approach to a check in activity for an airline departure control solution. The prime aim of the check in activity is to ensure that the passenger has been successfully checked in, a seat allocated and a boarding pass printed and each of these is independent by their nature. A test driven approach to this always asserts that the end point is fulfilled as the functionality materializes. This would greatly reduce the rework overheads which otherwise would have increased if the whole system was designed to be tested in the end.