Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
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