The part of the system they interact with in order to
achieve a particular goal (e.g., send an email, write a
memo)
To the Hardware:
A collection of instructions to be executed by
a computer/processor
To the Developer:
A collection of human-readable statements (in a
language) that can be converted to a collection of
instructions to be executed by a
computer/processor
What is...
Science?
Study of a behavior/phenomenon using the scientific
method (i.e., the creation and testing of hypothesis using
observation, measurement, and experimentation)
Engineering?
The application of science to realize goals
Software Engineering
Defined:
The application of (scientific) theories, methods and tools
to the specification, design, creation, verification/validation,
deployment, operation, and maintenance of
software products
Scope:
From specification to maintenance
Involves theories/methods from psychology,
mathematics/statistics, computer science, and management (of
people and resources)
Actually consists of both science and art
Software Engineering vs. Computer Science/Engineering
Computer Engineering:
The application of theories (often from physics) to the
creation of computational devices
Usually thought of as a subset of electrical and electronic
engineering
Computer Science:
The theories and methods that underlie computation and the use of
computational devices
The Origins of Computer Science Departments
Mathematics Departments:
People interested in discrete mathematics who became
particularly interested in computation
Electrical Engineering Departments:
People interested in logic circuits and data storage
Software Processes
Definition:
A set of activities/tasks (and corresponding inputs and outputs)
that results in the specification,
development, validation, and/or evolution of a
software product