Hi, in the last lesson we provided an overview of the course and motivated the
need for software engineering. In this lesson,
we will present and start discussing several traditional
software engineering life cycle models. We will
talk about their main advantages, and also about
their shortcomings. We will also talk about
classic mistakes in software engineering that is well
known ineffective development practices, that when
followed, tend to lead to better results. And
covering those, will hopefully help us to avoid
them in the future. And because in this
lesson, I will discuss some fundamental aspects of
software engineering, to suitably introduce these topics, I
went to the University of Southern California, to
interview one of the fathers of software engineering;
Professor Barry Boehm.
>> A well, a software life cycle is a sequence of, of decisions that you
make, and it's fundamentally those decisions are
going to be part of the history of the
software that. You are going to build that other people are going to use, and
the process model is basically answering the question of what do I do next and
how long shall I do it for. And again, because there are a lot of different ways
you can make that decision, you need to
figure out which models are good for which particular
situations. So, for example, we've, written a book
that's called Balancing Agility and Discipline. It says under
what conditions should you use agile methods, under
which conditions should you invest more time in analyzing
the situation and planning what you're going to do and the like. And so,
typically if the project is, is small where it's three to ten
people, agile works pretty well. If it's 300
people, then I think we don't want to go that way. If the affect of
the defect is loss of comfort or limited funds, then agile is fine,
but if it is a loss of life, then you don't. On the other hand if, if
you have a situation where you have lot
of unpredictable change, you really don't want to spend
a lot of time writing plans and lots of documents. In some cases you may have a
project where you want to do waterfall in
some parts and agile in others. So, these are
the kind of things that, that make the choice of life cycle process
model very important and very interesting as a subject of research.