Software engineering overview

Software Engineering
Why are you here?
• …alternatively, why do we think you need to
be here?
• Why a course on software engineering?
• How is real-world programming different than
what you have been doing so far?
Barry Boehm paper
• Read it before next class
• Make sure you study it for the quiz and final
• Take notes!
What is SE?
• Software engineering (SE) is a profession
“dedicated to designing, implementing, and
modifying software so that it is of higher
quality, more
maintainable, and
faster to build“
What’s wrong with the previous
• A better definition: “SE is the application of a
systematic, disciplined, quantifiable approach to
the development, operation, and maintenance of
software” – IEEE
– Have you been doing this in your classes so far?
• Parnas (super famous CS guy) defined software
engineering as the “multiperson construction of
multiversion software”
– Your projects so far were (probably) neither
multipurpose nor multiversion
Software project failure
• “Most” software projects fail
• This failure is almost never due to developer
incompetence (alone)
• If we are late, we can just add more people!
• Who needs requirements; just start coding!
• Requirements are malleable anyway!
• And documentation just slows us down!
• Besides, once we ship, we’re done!
How can SE help?
• A set of
tools and
that can
So what are these tools/ideas?
• (things we will cover this semester)
• A generic approach
– Rigor and formality
– Separation of concerns
– Modularity
– Abstraction
– Anticipation of change
– Generality
– Incrementality
Leading to a Generic Framework
• (things we will cover this semester)
• Communication
– Heavy collaboration with the customer, other stakeholders and encompasses
requirements gathering and related activities
• Planning
– Establish a plan for the work. Technical task to be conducted, risks, needed
resources, work products to be created, and a schedule
• Modeling
– Creation of models to allow the customer and the developer to better
understand the requirements and design that will achieve those requirements
• Construction
– Combines code generation and testing required to uncover errors in the code
• Deployment
– The software (as a complete entity or partially complete increment) is
delivered to the customer who evaluates it and provides feedback.
And the framework is applied
• This is called the process model
• The framework activities will always be
applied on every project ... BUT
• The tasks (and degree of rigor) for each
activity will vary based on:
– the type of project
– characteristics of the project
– common sense judgment; concurrence of the
project team
• Which activities would you spend the most
time on for
– Space shuttle controller?
– Web-based calendar?
– Embedded controller in
your refrigerator?
– Daily fortune text
Framework Activities
 Communication
 Planning
 Modeling
Analysis of requirements
Code generation
A basic model: Waterfall
• Benefit:
– Easy to follow
• Limitation:
– Often associated with project failure. Why might
that be?
Com m unic a t ion
proje c t init ia t ion
re quire m e nt ga t he ring
es timating
sc heduling
track ing
Mode ling
Const r uc t ion
t est
De ploy m e nt
de liv e ry
s upport
f e e dba c k
Model types
• Prescriptive Models (like waterfall):
– Want to limit and change
– Provide repeatability/consistency
– Coordinate teams
• Agile models
– Respond to change
– Working software rather than documentation
– Individuals and interaction
• Which would you use for {a large team, a
webapp, the space shuttle controller}?
Umbrella activities
Software project management
Formal technical reviews
Software quality assurance
Software configuration management
Work product preparation and production
Reusability management
Risk management