June 19th, 2014 by inflectra
Another prime directive of the Agile manifesto is the early and constant testing of the software. This can be more problematic for waterfall style projects as they have no obligation to provide working software until the very end, or at least close to it. Can a project still be called a ‘waterfall’ model if it does deliver early and often? In some sense, that is what Kanban tries to do; avoid the concept of iterative development, but still deliver working software regularly. So, it can be done, but it requires a whole lot more planning to ensure that elements are developed in such a way that there is a (partial) system that should work at fairly regular intervals.
Customer involvement is a very important element of the Agile manifesto. It would seem strange that a seemingly obvious angle should need to be stated explicitly. Why shouldn’t waterfall projects involve their customers at all steps in the process? Well, perhaps it would encourage users to change their minds all the time, which can be a problem for traditional one-shot development methods. So, can waterfall processes allow requirements to change up until the end as Agile processes do? This is perhaps the most difficult of the Agile principles to apply to old-age development methods because those developments are seen as one huge black box of ‘stuff’ being implemented all together. But does that need to be the case? Just because traditional methods do not produce regular working code does not mean we have to see all the requirements as one large amorphous bundle of interlocked functions. If Agile projects are able to implement requirements incrementally, and more importantly, independently from one another, then why should waterfall-style projects not organize requirements in the same way? One could argue that because requirements in waterfall projects are fully formed from the start, separating and untangling them should be easier than with requirements not yet fully explored as in Agile approaches.
The most accurate depiction of an elephant is an elephant. Equally, the most accurate depiction of a piece of software is the piece of software itself. Working software over documentation is how Agile projects interpret this and as we have discussed, this is partly realized by regular releases of working code. There is no significant reason waterfall projects should not take a similar approach and reduce documentation to a minimum, referring instead to the product.
What about constant process measurement and improvement? Old-style project processes tend to have masses of unread procedural guidelines which sit on the shelf gathering dust (or virtual dust for electronic documentation.) The intention is for the processes to be followed until the project ends. But in my experience, the guidelines often go unread because they are not being followed and managers and users both know that to open those dusty tombs would require them to acknowledge this. So, in a conspiracy of silence, they all ignore the procedures and change the way they are working as the project progresses. Now, this is the rather informal and unstructured equivalent of the formal Agile measurement and improvement, so why not just bite the bullet by formalizing and building in flexibility and adaptability to waterfall processes? There may not be separate iterations to which modified practices can be applied but people are adaptable and provided the procedures are written with the knowledge that they are going to change, it could be successful.
Finally, Agile projects are typically made up of self-organizing teams. This aspect alone may highlight the most significant difference between many waterfall organized projects and those following Agile practices, namely size. While it is practical for small teams to organize themselves, (although in reality there is always some person in charge, whether formally or not, and so the reality of ‘self-organization’ is debatable,) it is hard to see how a team of 30 engineers can be self-organizing. Could the team be fragmented into smaller units that could be self-organizing? Possibly. Although it is not easy to conceive of separate development teams each working in its own way and yet interoperating successfully.
Given all these ideas, can a waterfall-style project adopt Agile principles without actually becoming Agile? The answer is yes, and provided the project does not actually implement multiple, short iterations, it will remain waterfall, albeit non-traditional waterfall. Perhaps what we have here is ‘agile waterfalls’, with a lower-case ‘a’.
And can Agile processes learn anything from waterfall practices? Well, let’s leave that for another day.
Ask an Inflectra expert:
SpiraTest combines test management, requirements traceability & bug-tracking
SpiraTeam brings your teams together, managing the entire application lifecycle
SpiraPlan lets you manage your programs and portfolio of projects like never before
Orchestrates your automated regression testing, functional, load and performance
The ultimate test automation platform for web, mobile, and desktop applications
The help desk system, designed specifically for software support teams
Cloud hosted, secure source code management - Git and Subversion
Exploratory testing capture tool that automatically records your testing activity
Let us deal with the IT pain so you don't have to. Or use on-premise if you prefer.
Our customers work in every industry imaginable. From financial services to healthcare and biotech to government and defense and more, we work with our customers to address their specific needs.
Our products do not enforce a methodology on you, instead they let you work your way. Whether you work in agile development, Scrum and XP, Kanban and Lean, Waterfall, hybrid, or Scaled Agile Inflectra can help.
If you want to learn more about application delivery, testing, and more take a look at our whitepapers, videos, background papers, blog, and presentations.
Customers use our tools to help automate repetitive tasks and streamline their business processes using our Robotic Process Automation (RPA) solutions.
We collaborate with a wide range of teams to bring our customers a range of services (including load testing, training, and consultation), complimentary technologies, and specialized tools for specific industries.
Learn how different organizations have benefited from using Inflectra products to manage their software testing and application develooment.
Outstanding support is the foundation of our company. We make support a priority over all other work. Take a look at our support policy.
Discover great tips, discussions, and technical solutions from fellow customers and Inflectra's technical experts.
If you can't find the answer you're looking for, please get in touch with us: over email, phone, or online.
We are constantly creating new videos to help customers learn about our products, including through in depth webinars, all freely available along with a wide selection of presentations.
We provide a number of resources to help customers learn how to get the most out of our products, with free online resources, virtual classrooms, and face to face.
Read about Inflectra, our manifesto, and values. Meet our incredible customers who are building awesome things. We are focused on their success using our tools.
The Inflectra Blog contains articles on all aspects of the software lifecycle.
In addition we have whitepapers,
background articles, videos and
presentations to help get you started.
Events are a big part of our awesome customer service. They are a chance to learn more about us, our products, and how to level up your skills with our tools.
We actively partner with companies and individuals all over the world. We are also a great place to work and encourage you to explore joining our team.
Please contact us with your questions, feedback, comments, or suggestions. We'll get back to you as soon as possible.
When you need additional assistance (be it training, consulting, or integration services) our global certified solution provider partner network is ready to help.
At Inflectra, we are fully committed to provide our customers with the very best products and customer service.
We want to help developers extend and customize our tools to fit in with their needs. We provide robust APIs, sample code, and open source projects.