1 / 11

CSE 503: Software Engineering

CSE 503: Software Engineering. Winter 2010 Lecturer: Michael Ernst. 503 Software Engineering Research. Not: how to write good software and get a good job at Amazon/Google/Microsoft Research methods and ideas in SE (this may make you a more thoughtful developer) In alternating years:

Télécharger la présentation

CSE 503: Software Engineering

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. CSE 503: Software Engineering Winter 2010 Lecturer: Michael Ernst

  2. 503 Software Engineering Research • Not: how to write good software • and get a good job at Amazon/Google/Microsoft • Research methods and ideas in SE • (this may make you a more thoughtful developer) • In alternating years: • broad overview • in-depth examination of one topic • Examples: software evolution, program analysis

  3. Type systems • Checking • Inference • Non-standard type systems • Example: view type system as a set of constraints to compute legal refactorings

  4. Abstract interpretation • A.k.a. dataflow analysis • “Run” your program statically • Choose an abstract domain; e.g., { +, 0, - } • Assign semantics to operators • Start at beginning of program • Examine possible values of variables • Used daily on aeronautics software

  5. Model checking • In simplest terms, exhaustive testing • How to make this scale? • Choose abstractions that lose just the right amount of precision • Efficient encodings

  6. Analysis back-ends • Binary Decision Diagrams (BDDs) • Reduction to SAT • 1979: “Problem X reduces to SAT, so it is hard.” • 2009: “Problem X reduces to SAT, so it is easy.” • Datalog

  7. Dynamic analysis • Testing • Type inference • Model creation • Counterexample-guided refinement • Concolic execution

  8. Applications • Security • Correctness • Performance • Rapid development • System analysis • Maintenance and evolution

  9. Broader themes • Precision vs. performance • Power vs. transparency • Static vs. dynamic • Tuning analysis to the real problem

  10. Format • 50% of lectures: classic background • 50% of lectures: current research • Homework: • 1 in-class presentation • Group project to put the ideas into practice • Makes you a better researcher, in any field

  11. Who cares? • Intellectually exciting and deep • Spans both “hard” and “soft” areas of computing • Connections to PL, security, systems, architecture, databases, … (many more!) • Quals credit

More Related