Agile V. Waterfall
Waterfall to Agile References Pavolka, R. , Mount, V. , Neymeyr, A. , & Rhodes, C. From Waterfall to Rapid Prototyping (2005). Supporting Enterprise-wide Adoption of the Oncourse Collaboration and Learning (CL) Environment at Indiana University. SIGUCCS ’05 Proceedings of 33rd Annual ACM SIGUCCS Fall Conference, 312 – 319. Northrop, Robert (2004). The Fall of Waterfall. Intelligent Enterprise 7. 3, 40-41. Adams, John (2013). Change in Software Techniques Helps FHLB Reduce Defects. American Banker, Technology Section, Volume 178 No. 3. I. Agile v. Waterfall Agile Development Methods (Agile) and the Waterfall Method (Waterfall) are two different styles of designing and managing the Soft Development Life-Cycle (SDLC) within an organization. Waterfall being the more traditional approach and Agile newly born just twelve years ago, there is much debate over which approach works best and when. Companies have used Waterfall for decades of successful projects and in most companies the approach has been ingrained into the very fabric of the company.
The organization of teams and human resources in information technology (IT) can be anywhere from loosely to entirely based on the method that the organization is using. More and more organizations are starting to see the advantages of Agile now and are questioning older methods almost entirely because of the fast-paced business world of the twenty-first century. Agile allows an organization to respond to that change more quickly without sacrificing quality work or customer satisfaction.
Waterfall, on the other hand, with its precise planning can offer better time management and money savings. In a fast-paced society where the time it takes to bring a product to market could mean the difference between success and failure, Agile is making its way into more and more organizations everyday. And, everyday more and more of these organizations are struggling with the change that is required to adopt Agile methods as well as the woes that this fast-paced development style introduce to the organization. II. What is Waterfall
Waterfall is the classical system development model. The model of software development hones its ideas from the manufacturing world. It is based on a step-by-step approach to creating products from the conceptual phase to implementation and maintenance. Waterfall focuses its development strategy on the distinct phases of a project: concept, design, implementation, testing, installation, and maintenance. In larger organizations and on larger scale projects these phases of production are often handled by different people and even different teams.
Using Waterfall, the concept phase of a project tends to be the single most important phase. This is the step during which the development team gathers and analyses its customer’s needs and documents the problem that the software solution is expected to solve. The documentation and analysis needs to be precise, in depth and even flawless because once the phase is complete there is no turning back—modifications to a project, no matter what phase its in when the modification or change order is received, require that the project fall back to the concept phase.
While several techniques such as use cases and customer interviews are used to gather this information the results of the analysis and requirements gathering that are carried out in this phase are typically relayed to the next phase in the form of a formal document. This document serves as the sole resource for the team who handles the second phase: design. Design entails actually making determinations as to exactly how a team intends to in later phases execute the solution.
This is when platforms, programming languages, data storage methodology, equipment types, standards and graphical user interface decisions are made. Design also entails other high-level project decisions on ideas such as how security will be handled and resource management. The design step delivers its decisions on these matters, commonly know as the design specifications to the third phase: implementation. Implementation is very simply put the execution of the requirements in the design specifications document.
During this phase, developers actually write the code that makes the software system work. Hardware specialists similarly setup the equipment and hardware that are necessary for the solution. The application is developed, debugged and tested against the design document and once it passes muster, the product is handed off to the next phase: testing. Testing is often handled by a quality assurance team. The team upon taking delivery of the product refers back to the documents created during conception and ensures that all of the requirements are satisfied by the solution.
This team documents the project and uses business cases or test cases to determine whether the solution actually is the complete solution and whether or not it actually works in its entirety. This team generally hands off the functioning solution, its documentation and a user manual to the next phase: installation. An installation or delivery team then hands the product over to the customer. This team also often provides formal training to the end-user. Delivery is followed by maintenance. Maintenance of a product usually includes end-user support, debugging of system flaws that are discovered after delivery, and change requests.
If Waterfall is executed to the letter of its design, there will be no overlap between the separate phases of the project. Clearly defined timelines for each step are known at the onset of the project and serve as milestones for progress during development. The requirements in a well executed Waterfall project will be so very detailed of point driven that little time is wasted in later phases on things like re-writing blocks of code or back-and-forth’s that question ambiguity in understanding on the developers part.
It is a tried and true and has advantages such as minimal wasted time and easy handover—handover of the project or a part of a project in waterfall can be a very smooth process because of all of the documentation that is produced in the analysis and design phases of the project. The documentation can even smooth over team-member attrition. III. What is Agile Agile Software Development is an umbrella for a particular style of development methods that focus on self-organization or cross-functional teams to develop smaller packages of a product more quickly than has been traditionally done.
The basis for all of these methods is The Agile Manifesto (www. agilemanifesto. org). The author of the manifesto argues that working software, delivered in small packages, delivered in shorter timeframes (weeks not months) by teams who are self-organized and able to communicate freely throughout the process with both the customer and other stakeholders can respond to change and deliver a more effective approach to software development in the volatile business world today.
The manifesto declares that individuals and interactions are more important than processes and that following a design document is not as necessary as having the ability to change quickly. Agile’s focus is on a rhythmic continuity in the lifecycle of a project. The packages that are delivered tend to be broken down into timeframes as small as a week and generally not more than four weeks long. Customers receive working software continuously and the project is more of a living, breathing software that can overtime change to meet the needs of a rapidly changing marketplace.
Agile teams meet frequently, as often as daily to discuss status and approach. Teams focus on reusing code blocks and making decisions about platforms and languages as necessary and with a better chance that standards and new technologies won’t change or become outdated before delivery takes place. IV. Which is the better way? The question so many teams and organizations are debating regularly these days is ‘which is better Agile or Waterfall? ’. Both Waterfall and Agile offer benefits and shortcomings and neither can be called universally better or universally out-of-date.
The decision must be made based on each organization’s and each project’s circumstances. Team size can be a significant factor. Waterfall methodology is hard to manage with a small team. Waterfall relies on division of responsibilities and in very small teams this may result in an overwhelming workload for team members. Time to market with Waterfall; however, is longer whereas Agile methods can get product to market quicker so if time is a very high priority Agile may be the methodology to use.
Indiana University documented a case in which its own IT Training and Education (ITTE) department underwent the change from its previous standard Waterfall approach to an Agile methodology. The team started questioning its approach to development of training materials first when its materials started becoming obsolete before they were even delivered. The team found itself being tasked to develop and deliver training materials for a product that it saw as a “moving target”. It quickly became clear that the old Waterfall methodology would not work given the rapidly changing requirements.
The situation required more constant contact with the stakeholders and that the team be able to deliver consistently changing and updated training materials as the system it was training on was an ever-changing system itself. ITTE faced problems in the transition. One such hurdle was changing the mindset of its customer. The team’s customer had grown used to having ITTE deliver large Waterfall sized training packages on static, tried and true, well planned, designed, thought-out and fully-functional software systems.
The overhaul of it Course Management System (CMS) was, however, being updated constantly and the customer often expressed feeling of being Beta Testers rather than end users. In addition, ITTE’s own team members struggled with the behavioral changes that were necessary to adapt in order to make a more Agile model of development work for the team. Communications amongst team members, for example, became more necessary on a more frequent basis. The team also faced the task of training users on a system that was not fully functional.
Users were, at times, resistant to the change themselves and found confusion in the fact that incomplete software was being delivered. The users were as accustomed to receiving fully functional systems and training as the ITTE team was used to delivering. ITTE also soon learned it necessary to assign team members exclusively to this project. In the past, the team’s Waterfall approach had allowed resources to be more spread out, whereas with the new Agile approach team members were so consistently involved with the living project that they were necessarily exclusively assigned to the CMS project.
With all of the challenges that it faced, ITTE concluded that the change in methodology improved its reputation with the customer. More frequent face time and feedback response made the customer happier. It also concluded that, as a team, ITTE was able to produce more products cheaper, faster and more efficiently using its new approach to the SDLC. A single case, however, can’t be used to make a determination for the next company facing this decision. The fact is the right approach to software development is the approach that works best on a case-by-case basis.
While Waterfall may still be the best approach for fixed-price, fixed-scope, short-term projects, Agile may be better suited to a project where the scope is expected to creep because of a changing marketplace. And there are teams that have even begun applying Agile methodologies to a Waterfall approach and vice versa. So perhaps the appropriate approach for an organization is to not decide on one or the other for the organization but to embrace both Agile and Waterfall methodologies and to learn to apply each appropriately.