In fact, software processes are normally characterized by several phases, what
we call the software phases, and only one of these phases is
mainly focused on coding. The other phases are meant to support
other parts of software development. The first of these phases is called
requirements engineering and that's the phase in which we talk to
the customer, to the stakeholders, whoever we are building the software for.
And we try to understand what kind of system we need
to build. Then we use this information to define our design and
the design is the high-level structure, that then can become more
and more detailed, of our software system. Once we've defined our
design we can actually move to the next phase, which is
the implementation, in which we write code that implements the design which
we just defined. After implementing the code, we need to verify
and validate the code. We need to make sure that the code
behaves as intended. And finally, we need to maintain the code.
And maintenance involves several activities like,
for example, adding new functionality or
eliminating bugs from the code or responding to problems that
were reported from the field after we released the software.
We will look at all of these activities and of
the software development process in detail, in the rest of the
class. And for each activity, we will look at the
fundamental principles and how it is done currently. And in
some cases, we will also look at some advance ways
to do it. For example, more research approaches for that activity.