Essentials and Accidents of Software Engineering
Essentials and Accidents of Software Engineering
Essentials and Accidents of Software Engineering
Software
Engineering
Lecture 2
1
What is
Software Engineering?
• Definition
• Software Engineering is an engineering discipline
• Concerns with the development of software by
applying Engineering Principles
• Goal is the cost-effective development of software
systems
• Origin
• 1968: The notion of ‘software engineering’ was first
proposed at a conference held to discuss what was
called the “software crisis”.
2
Knowledge Spectrum
TheThe
Application of engineering study that focuses
creation of artifacts and
science knowledge to improve
on materials,
systems toprocesses
meet people's
the quality of life. We are
andnow
material
needs actions
– construction,
being creative with our manufacturing
knowledge
Solutions
Theory
3
A Computing Spectrum
•Development Environment
•Implementation Standards
•Algorithms
•Information theory
•Computability theory
Solutions
Theory
Software Engineer
Solutions
Theory
6
Software Engineering
• Software Engineering [IEEE-93]:
1.The application of a systematic, disciplined,
quantifiable approach to the development, operation,
and maintenance of software; that is, the application
of engineering to software.
2.The study of approaches as in 1
7
SE and Other Engineering
Disciplines
• Two major components in engineering systems
• Design
• Manufacture
8
• SE: engineering is applied to both as well, BUT
• Manufacture is
• Trivial (by comparison – sometimes complex and time-consuming)
• Mundane
• Automated
• Much larger emphasis on engineering applied to DESIGN
• Building a software product is a DESIGN process
• General design approaches/principles applied to diverse domains
9
Reading Assignment
• Brooks, Jr., F.P., "No Silver Bullet—Essence and Accidents of
Software Engineering (IEEE Computer Magazine; April 1987)
Mythical Man-Month, 20th Anniversary Edition, Addison-
Wesley, 1995
10
No Silver Bullets
Essence and Accidents of
Software Engineering
11
Based on presentations by
F.P Brooks
Devon Simmonds Computer Science Department University of North arolina Wilmington
Complexity
problems leading to unreliability
Software Size
1014 (~520)
possible paths!
If we execute one test per
millisecond, it would
take 3,170 years to test
this program!!
Brooks:
The essence is what the software does and the
accidents are the technology by which the software
does the essence or by which the software is
developed.
That is, the requirements are the essence, while the language,
tools, and methods used are the accidents.
what is so difficult about understanding
requirements?
it should be possible to sit down with the customer and users,
ask a few questions, understand the answers, and then
synthesize a complete requirements specification.
? ?