One of the main differences in “writing code” and “engineering software” is following a specified process. By process, we mean a series of steps or phases that a team goes through every time to ensure that they are building the software correctly.
Broadly, we are looking at:
Yes… the phases of development again. But the question you have to ask when looking at these phases is “how much time/effort do I put into each phase?” Depending on your answer to that question, it will lead your team to choose potentially substantially different methods for building the software.
Can you constantly communicate with your customer and make changes while building? Or do you have to get all of your requirements exactly right before moving on? One of these would be considered more “agile,” while the other is “plan-driven.”
It’s important to know that “agile” doesn’t equate with “good,” nor “plan-driven” with “bad.” Different types of software projects and teams need to use a variety of methods to work effectively together. So, how do you choose?
Software Process and Methodologies