Now that our software engineering class is coming to an end, we have been exposed to different approaches to software development. Two distinct concepts come up a lot when discussing the software development lifecycle. Agile development is the standard in many engineering projects, but it is a slightly newer concept. Before agile development practices became mainstream, most software was developed in a waterfall process.
When software development follows a waterfall process, work on components is done sequentially. When one task is completed, then you can proceed to the next task. This works out fine, but it can make it difficult to alter design plans as issues come up during development. It is also difficult to foresee these issues while the project is being scoped out which can cause compounding problems down the line.
When engineers are working with agile development, some of these issues are alleviated. When using an agile system, developers can work on multiple components of the software concurrently which speeds up delivery time. Additionally, when issues are discovered during the development cycle, it is easier to evaluate any interactions that might come into play with other components of the software.