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?
Assignment
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