What is Software Engineering?

advertisement
What is Software Engineering?
Engineering is about getting technology to
do what it does well so humans can do what
they do well
Jeff Offutt
Professor of Software Engineering
Volgenau School of Engineering
George Mason University
http://www.cs.gmu.edu/~offutt/
Who Am I ?
Jeff Offutt
Parent : Steffi (24), Joyce (20), Andrew (12)
Education : BS (Math & Data Processing),
PhD (Computer Science, 1988)
Professor : GMU, Software
Engineering, Volgenau School
Scientist : >160 refereed papers
Leader : Journal of Software Testing,
Verification, and Reliability, IEEE Conference
on Software Testing
CS 101, February 2015
© Jeff Offutt
2
Outline of Today’s Talk
1. What is Software Engineering and how is it
related to Computer Science?
2. What Software Engineering educational
opportunities does GMU offer?
3. Software Engineering quality attributes
A. Testing: Can I break it? Yes I can!
B. Usability: Can I use it?
CS 101, February 2015
© Jeff Offutt
3
Comparing Computing Fields
Calc-1, discrete math,
graphs, logic
design, test, maintenance,
programming, web apps, …
Calc-2, discrete math, CS theory
Programming, …
Calc-3, discrete math
(logic, algebra)
3-4 programming / CS
Calc-4
1-2 programming
Calc-4, real analysis, …
1 programming
CS 101, February 2015
Software
Engineering
Computer
A
b
Science
s
t
r
a
c
t
i
o
n
How to design, test, maintain
& build large, high quality
programs
How to make computers work
Algorithms, programming, …
Computer
Engineering
Computer components
Chips, memory, cpu, …
Electrical
Engineering
Anything that uses power
Transistors, batteries,
transformers, …
Physics
How the unoverse works …
© Jeff Offutt
4
Engineers and Scientists
Science is about adding to the knowledge base
Engineering uses the knowledge to solve problems
Science is discovery
Engineering is invention
Engineers use science to build things to
improve our lives
CS 101, February 2015
© Jeff Offutt
5
Goals of Science and Engineering
Behaviors
observe
achieve
Science
Engineering
find and
describe
design and
develop
Structures
CS 101, February 2015
© Jeff Offutt
6
Computer Science and
Software Engineering
Computer Science is about
fundamentally understanding
what we can do with computing devices
Software engineering is about
building high quality computing solutions
to real-life problems
CS 101, February 2015
© Jeff Offutt
7
Outline of Today’s Talk
1. What is Software Engineering and how is it
related to Computer Science?
2. What Software Engineering educational
opportunities does GMU offer?
3. Software Engineering quality attributes
A. Testing: Can I break it? Yes I can!
B. Usability: Can I use it?
CS 101, February 2015
© Jeff Offutt
8
Undergraduate Opportunities
Applied Computer Science
Concentration in Software Engineering
Minor in Software Engineering
8 undergrad SWE courses
Accelerated program into the MS-SWE program
Offered by the
Department of Computer Science
CS 101, February 2015
© Jeff Offutt
9
Distinguishing SWE and CS
Reliability
Building High Quality
Software
specifying, modeling, designing, implementing,
evaluating, deploying, maintaining, …
Fact: Engineering software is distinct from the science of computing
Goal: Give UG students a coherent treatment of engineering software
CS 101, February 2015
© Jeff Offutt
10
ACS Software Engineering
ACS Foundation:
CS 101, 105, 112, 211;
Math 113, 114, 125, 203
ACS Core:
CS 262, 310, 330, 367, 321, 465, 483, 4xx;
ECE 301
SWE Foundation and Core:
SWE Related:
SWE 205: Software Usability
SWE 432, 443
SWE 301/401: Intern Prep & Reflect
CS 363, 450, 455, 468, 471, 475
SWE 332:
OO Design & Impl
SWE 437:
Software Test & Maint
STAT 344;
CS 306
15 Hours From
Cross Disciplinary:
ENGL 410:
Prof / Tech Writing
One of PSYC 333, COMM 320, COMM 335
Essentials of Computer Science Degree
Software Engineering Essentials
Communication/Organizational Skills
CS 101, February 2015
© Jeff Offutt
11
Software Engineering Minor
CS 112 (4 hrs)
CS 211 (3 hrs)
9 hours
from these
6 courses
SWE 205
CS/SWE 332
CS/SWE 321
SWE 432
SWE 437
SWE 443
• SWE 205 – Usability Analysis and Design
• CS / SWE 332 – OO software
• CS / SWE 321 – Intro to software engineering
• SWE 432 – Software usability and web software
• SWE 437 – Software testing and maintenance
• SWE 443 – Software architectures
CS 101, February 2015
© Jeff Offutt
12
Outline of Today’s Talk
1. What is Software Engineering and how is it
related to Computer Science?
2. What Software Engineering educational
opportunities does GMU offer?
3. Software Engineering quality attributes
A. Testing: Can I break it? Yes I can!
B. Usability: Can I use it?
CS 101, February 2015
© Jeff Offutt
13
Software is a Skin that Surrounds
Our Civilization
Quote due to Dr. Mark Harman
CS 101, February 2015
© Jeff Offutt
14
Outline of Today’s Talk
1. What is Software Engineering and how is it
related to Computer Science?
2. What Software Engineering educational
opportunities does GMU offer?
3. Software Engineering quality attributes
A. Testing: Can I break it? Yes I can!
B. Usability: Can I use it?
CS 101, February 2015
© Jeff Offutt
15
Spectacular Software Failures

NASA’s Mars lander : September 1999, crashed
due to a units integration fault
Mars Polar
Lander crash
site?

Toyota brakes : Dozens dead, thousands of
crashes

Major failures : Ariane 5 explosion, Financial
engines, Intel’s Pentium FDIV bug

Poor testing of safety-critical software can kill :
 THERAC-25 radiation machine: 3 dead
Ariane 5:
exception-handling
bug : forced self
destruct on maiden
flight (64-bit to 16bit
conversion: about
370 million $ lost)
THERAC-25 design
We need our software to work (be reliable)
Testing is how we evaluate whether it works.
CS 101, February 2015
© Jeff Offutt
16
Airbus 319 Safety Critical
Software Control
Loss of autopilot
Loss of most flight deck lighting and intercom
Loss of both the commander’s and the co-pilot’s
primary flight and navigation displays !
CS 101, February 2015
© Jeff Offutt
17
Northeast Blackout of 2003
508 generating
units and 256
power plants shut
down
Affected 10 million
people in Ontario,
Canada
Affected 40 million
people in 8 US
states
Financial losses of
$6 Billion USD
The alarm system in the energy management system failed
due to a software error and operators were not informed of
the power overload in the system
CS 101, February 2015
© Jeff Offutt
18
What is Testing & Why is It Hard?
Software Testing
tries to find software faults before users do
A program can have quadrillions of inputs.
And will work correctly on most!
If a million inputs trigger the fault.
Only .00000000025 chance of finding it ...
Software Testers
try to find test inputs that will trigger the faults
before they get to users
CS 101, February 2015
© Jeff Offutt
19
Testing Student Programs
Programming
Assignment
Submit
Debugging
Does it work ?
All the time ?
Maybe not …
Customers care !
Thus …
Industry cares !
Who cares ?
CS 101, February 2015
© Jeff Offutt
20
Software Testing in Real Life
Needs or idea
Requirements
Deployment
System Test
Architecture
Future
Evolution
Unrecoverable
Common !!
Disaster!
Very expensive
Full System
Design
CS 101, February 2015
Programming
Integration
Test
Unit Test
Integrate
© Jeff Offutt
Expensive
21
Google’s Motto
Debugging Sucks
Testing Rocks
CS 101, February 2015
© Jeff Offutt
22
Cost Of Late Testing
60
Assume $1000 unit cost, per fault, 100 faults
50
40
Fault origin (%)
30
Fault detection (%)
20
Unit cost (X)
10
0
Software Engineering Institute; Carnegie Mellon University; Handbook CMU/SEI-96-HB-002
Finding faults early saves LOTS of money
CS 101, February 2015
© Jeff Offutt
23
What Do Testing Researchers Do?
Software Testing Researchers
invent clever ways to design inputs that will find
software faults
Build software tools to create tests
Run experiments to find out how well the
testing ideas work
Tell industry how to use the ideas
Teach students – the next generation of
software testers
CS 101, February 2015
© Jeff Offutt
24
Outline of Today’s Talk
1. What is Software Engineering and how is it
related to Computer Science?
2. What Software Engineering educational
opportunities does GMU offer?
3. Software Engineering quality attributes
A. Testing: Can I break it? Yes I can!
B. Usability: Can I use it?
CS 101, February 2015
© Jeff Offutt
25
What is Usability?
The ability for a typical user to effectively
accomplish a task without needing external help
Usable software should be :
• Learnable within with reasonable effort
• Tolerant of reasonable user mistakes
• Efficient to use without undue effort
CS 101, February 2015
© Jeff Offutt
26
Example: Error Message
People are poor at being perfect
…
but pretty good at getting “close”
Make all actions undoable
Make it easy to discover mistakes (visibility)
Make it easy to correct mistakes
Do not think in terms of “users making errors,”
think in terms of users getting close
CS 101, February 2015
© Jeff Offutt
27
A Poor Error Message
1-Jul-16
© Offutt, 2010-2012
28
A Poor Error Message
I did!
Maybe I need 50
cents …
50
1-Jul-16
© Offutt, 2010-2012
29
A Poor Error Message
Must enter 2 zeros
(other values not
allowed)
00
50
1-Jul-16
© Offutt, 2010-2012
30
More Bad Examples
 ! HT ACCESS: Error accessing “http://www.cs.gmu.edu/offutt.html”: “HTTP:
File/directory does not exist”
☺ The requested web page /offutt.html was not found on http:// ...
 !PrintMonitor is currently printing “Doc 1: Bad Examples” from “WordPerfect
2.1”. If PrintMonitor quits now, “Doc 1: Bad Examples" will be printed when
the system is restarted with MultiFinder. Do you want to finish printing
before PrintMonitor quits? (Windows 95)
☺ Currently printing. If you shut the computer down now, the document will
not be printed until MS Word restarts. You can still delay shutdown until the
document finishes printing.
Wait and shutdown after printing:
Shutdown now and cancel printing:
1-Jul-16
© Offutt, 2010-2012
31
Another Bad Example
 http://www.inwarehouse.se/ : Microsoft OLE DB Provider
for ODBC Drivers error '80004005'
[Microsoft][ODBC SQL Server Driver][SQL Server]Your
transaction (process ID #85) was deadlocked with
another process and has been chosen as the deadlock
victim. Rerun your transaction.
/script/webkatalogen/pb.asp, line 221
☺ Internal failure, please try again.
1-Jul-16
© Offutt, 2010-2012
32
More Bad Examples
 Bus error, core dumped (Unix)
☺ Access through a nil pointer in function GetNext()
 Terminating thread, due to a stack overflow problem. A
VxD, possibly recently installed, has consumed too muhc
stack space. Increase the setting of MinSPs in SYSTEM.INI
or remove recently installed VxDs. There are currently 5
SPs allocated. (Windows 2000)
☺ ???
1-Jul-16
© Offutt, 2010-2012
33
Summary
1. Software Engineering & Computer Science
2. Software Engineering education @ Mason
3. Software Engineering quality attributes
A. What is software testing?
B. What is software usability?
Jeff Offutt
offutt@gmu.edu
http://cs.gmu.edu/~offutt/
4430 Engineering Building
CS 101, February 2015
© Jeff Offutt
34
Download