CS590F Software Reliability
Download
Report
Transcript CS590F Software Reliability
CS590 Z
Software Defect Analysis
Xiangyu Zhang
What is Software Defect Analysis
Given a software program, with or without inputs,
identify and fix defects in the program.
•
•
•
All sorts of defects: crashes, incorrect output, unreasonable
use of resource, deadlock, data race, buffer overflow
vulnerabilities, information leak,…
Consists of techniques from : compilers, PL, program
verification, hardware, OS, …
>> debugging.
CS590F Software Reliability
Requirements
Design
Programming
Testing/Debugging
Deployment
CS590F Software Reliability
Why Is Defect Analysis Important?
One of the most prominent challenges for IT.
•
•
Software bugs cost the U.S. economy about $59.5 billion each year
(0.6% of the GDP) [NIST 02].
Companies.
Security is becoming a necessity.
•
The worldwide economic loss caused by all forms of overt attacks
is $226 billion. [CRS 03].
Software defects make programming so painful.
Stories
• The Role of Software in Spacecraft Accidents
(http://sunnyday.mit.edu/papers/jsr.pdf)
CS590F Software Reliability
Why? (continued)
Almost all areas are open to defect analysis
•
Software Engineering
•
Programming Languages
•
language design, language support, program analysis
conferences (PLDI, POPL, OOPSLA,…)
Computer Architecture
•
covers all topics
conferences (FSE, ICSE, ASE, ISSTA, FASE, ICSM…)
Architecture support for reliability
Conferences (ISCA, MICRO, ASPLOS,…)
OS, Security.
The unit price of a CPU cycle is becoming cheaper and
cheaper.
Make it happen
Make it fast
25 years ago
15 years ago
Make it reliable
now
CS590F Software Reliability
CS 590 Z
Get to know this area.
•
•
Use program analysis to solve interesting problems.
•
What are the topics?
How people solve problems? Some are inspiring.
Hands-on experience on designing and implementing
program analysis.
Paper (PLDI submission(s))
CS590F Software Reliability
Course Organization
Take turns to discuss papers.
•
•
•
Every 2-3 meetings cover one topic;
Each person handles one topic;
One topic includes presenting related papers and leading
discussion.
The discussion subject is distributed before the meeting.
Decide the projects within one month
•
Submission deadline is mid Nov.
Not a requirement to submit paper.
•
The term project is due at the end of the semester;
CS590F Software Reliability
Course Requirements
Presentations and discussions (40%)
Term Project (50%)
Attendance (10%)
Change of meeting times
CS590F Software Reliability
Topics
users
developers
Failure oblivious
CS590F Software Reliability
Debugging
users
developers
Model Checking
Failure oblivious
dynamic
static
Mining Code Base Static Analysis
CS590F Software Reliability
Topics
users
Failure oblivious
developers
dynamic
single-threaded
static
Model Checking
Mining Code Base
Static Analysis
multi-threaded
Deterministic replay
Data Race
Atomicity Violation
CS590F Software Reliability
Debugging
users
developers
dynamic
Failure oblivious
single-threaded
multiple executions
static
Model Checking
Mining Code Base
Static Analysis
multi-threaded
single execution
Statistical debug
Testing
Deterministic replay
Data Race
atomicity violation
CS590F Software Reliability
Topics
users
Failure oblivious
developers
dynamic
single-threaded
multiple executions
static
Model Checking
Mining Code Base
Static Analysis
multi-threaded
single execution
Statistical debug
Testing
Deterministic replay
Data Race
atomicity violation
Advanced debugger Execution Reduction Dynamic slicing
CS590F Software Reliability
Topics
users
Failure oblivious
developers
dynamic
single-threaded
multiple executions
static
Model Checking
Mining Code Base
Static Analysis
multi-threaded
single execution
Statistical debug
Deterministic replay
Data Race
atomicity violation
Advanced debugger
Exe. Reduction
Dynamic slicing
Not Covered: transient errors, performance bugs, …
CS590F Software Reliability
My Research Projects
Auto debugging
Input analysis
Execution reduction
Dynamically matching program versions
Failure classification
Expanding:
•
•
Auto program parallelization
Debugging for concurrent programs
CS590F Software Reliability