CSE503: Software Engineering
Lecture 1  (March 27, 2000)

David Notkin

What is software engineering?

v     In groups of two, take three minutes to write down a definition

v     Key points to make include (in no particular order)

Ø      Full lifecycle (womb-to-tomb)

Ø      Economics plays a key role, including all resources (cost, time-to-market, etc.)

Ø      Multiple versions of software, as it evolves

Ø      Multiple people are necessary

Ø      Software engineering is not a mere matter of programming

v     Depending on how many people are there, have them break into groups and list and define the different parts of the lifecycle


What is software engineering research?

v     Findings ways to better understand problems that are faced in effectively engineering software

v     Finding ways to solve those problems

v     Neither the problems nor the solutions are usually cut-and-dried in software engineering research

Ø      Both are much more contextual than in many other areas of computer science research

Ø      People play a heavy role in at least two key ways

§        Many aspects of software engineering focus on how to make the humans involved in engineering software more effective (as opposed to the computer itself)

§        People use the software systems (even if indirectly) and this places pressures on the software itself

Ø      Some people (especially graduate students) view this characteristic of software engineering research as sufficiently disturbing to work in other areas

Ø      My view is different

§        The problems of software engineering are real: really, really real

§        The “softness” of the problems and the solutions make it more challenging

v     We will, in this course, focus on technical aspects of software engineering

Ø      As opposed to managerial aspects

Ø      That said, it’s impossible to draw this line firmly and clearly; also, I’ll probably spend some time near the end on a brief overview of some of the less technical aspects


The two primary goals of the course are

v     To provide an overview of some of the most important techniques and approaches that can help in producing better quality software at more predictable costs

v     To lay a foundation for performing research in software engineering

Ø      Not that all of you will, of course


What is your background?

v     What’s the largest software system you have ever worked on?

Ø      Get the data points and draw some kind of graph on the board

v     Were you an original developer of this system, or rather a later maintainer/developer?

Ø      No details needed, just used to raise the distinction

v     Any commercial products (or broadly used academic products)? 

Ø      What were the most difficult software engineering problems you faced?

v     Did you take an undergraduate course in software engineering?

Ø      If so, what did you think of it, and why?

v     Why are you taking the course?



v     By Wednesday read Barry Boehm’s paper (“Software Engineering”) with care

v     On Wednesday I’ll give an assignment for small groups to do some library/web research on determining some statistics and open research questions about software engineering