CSE503: Software Engineering
Lecture 1 (January 4, 1999)
David Notkin
What is software engineering?
In groups of two, take three minutes to write down a definition
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
What is software engineering research?
Findings ways to better understand problems that are faced in effectively engineering
software
Finding ways to solve those problems
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
We will, in this course, focus on technical aspects of software engineering
- As opposed to managerial aspects
- That said, its impossible to draw this line firmly and clearly; also, Ill
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
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
To lay a foundation for performing research in software engineering
- Not that all of you will, of course
What is your background?
Whats the largest software system you have ever worked on?
- Get the data points and draw some kind of graph on the board
Were you an original developer of this system, or rather a later maintainer/developer?
- No details needed, just used to raise the distinction
Any commercial products (or broadly used academic products)?
- What were the most difficult software engineering problems you faced?
Did you take an undergraduate course in software engineering?
- If so, what did you think of it, and why?