The next type of software process models that I
want to discuss are Agile Software Development Processes. And this
is a group of software development methods that are
based on highly iterative and incremental development. And in particular,
I'm going to discuss Test Driven Development or TDD. The
space on the iteration of three main phases. In
the first one that we mark as red, we
write test cases that encode our requirements, and for which
we haven't written code yet. And therefore, they will fail, obviously.
So we're in this sort of red or fail phase. From
this phase, we move to this phase, in which after we
write the just enough code to make the test cases pass.
We have a set of test cases that are all passing.
And therefore, we can consider this as the green phase. We
had enough code to make the test cases pass because the
test cases encode our requirements. We have just written enough code to
satisfy our requirements. When we do this over time though,
what happens is that the structure of the code deteriorates, because
we keep adding pieces. So that's why we have the
first step, which is refactoring. In this step, we modify the
code, and we will talk about refactoring extensively. We'll devote
one lesson to it. We modify the code to make it
more readable, more maintainable. In general, we modify to improve the
design of the code. And after this phase, we will go
back to writing more test cases for
new requirements, write code that makes these
test cases pass, and so on. So we'll continue to iterate among these phases. And
also, in this case, we will talk
about Agile Software Processes. And in particular,
about extreme programming, or XP, and Scrum
in more details, in minor course number four.