Software Engineering

73 Publications


    Automated Decomposition of Build Targets

    Mohsen Vakilian, Raluca Sauciuc, J. David Morgenthaler, Vahab Mirrokni

    Proceedings of the 37th International Conference on Software Engineering, IEEE Computer Society (2015), pp. 123-133


    Continuous Pipelines at Google

    Dan Dennison

    SRECon Europe 2015, USENIX, Dublin, Ireland, pp. 12


    Enhancing Android Accessibility for Users with Hand Tremor by Reducing Fine Pointing and Steady Tapping

    Yu Zhong, Astrid Weber, Casey Burkhardt, Phil Weaver, Jeffrey P. Bigham

    Web4All, Florence, Italy (2015), pp. 10


    How Developers Search for Code: A Case Study

    Caitlin Sadowski, Kathryn T. Stolee, Sebastian Elbaum

    Joint Meeting of the European Software Engineering Conference and the Symposium on the Foundations of Software Engineering (ESEC/FSE ), 1600 Amphitheatre Parkway (2015) (to appear)


    Tricorder: Building a Program Analysis Ecosystem

    Caitlin Sadowski, Jeffrey van Gogh, Ciera Jaspan, Emma Soederberg, Collin Winter

    International Conference on Software Engineering (ICSE) (2015)


    Using Actors to Implement Sequential Simulations

    Ryan Harrison

    University of Saskatchewan, Saskatchewan, Canada (2015)


    A case of computational thinking: The subtle effect of hidden dependencies on the user experience of version control

    Luke Church, Emma Soederberg, Elayabharath Elango

    Psychology of Programming Interest Group Annual Conference 2014, pp. 123-128


    ARC++: Effective Typestate and Lifetime Dependency Analysis

    Xusheng Xiao, Gogul Balakrishnan, Franjo Ivancic, Naoto Maeda, Aarti Gupta, Deepak Chhetri

    ISSTA, ACM (2014), pp. 116-126


    An Adaptable Rule Placement for Software Defined Networks

    Shuyuan Zhang, Franjo Ivancic, Cristian Lumezanu, Yifei Yuan, Aarti Gupta, Sharad Malik

    DSN, IEEE (2014)


    Bespoke infrastructures

    Diomidis Spinellis

    IEEE Software, vol. 31 (2014), pp. 12-14


    Generating Consistent Updates for Software-Defined Network Configurations

    Yifei Yuan, Franjo Ivancic, Cristian Lumezanu, Shuyuan Zhang, Aarti Gupta

    HotSDN, ACM (2014)


    Machine Learning: The High Interest Credit Card of Technical Debt

    D. Sculley, Gary Holt, Daniel Golovin, Eugene Davydov, Todd Phillips, Dietmar Ebner, Vinay Chaudhary, Michael Young

    SE4ML: Software Engineering for Machine Learning (NIPS 2014 Workshop)


    Moving Targets: Security and Rapid-Release in Firefox

    Sandy Clark, Michael Collis, Matt Blaze, Jonathan M. Smith

    Proceedings of the 2014 ACM SIGSAC Conference on Computer and Communications Security, ACM, New York, NY, pp. 1256-1266


    Norming to Performing: Failure Analysis and Deployment Automation of Big Data Software Developed by Highly Iterative Models

    Keun Soo Yim

    IEEE International Symposium on Software Reliability Engineering, IEEE International Symposium on Software Reliability Engineering (2014), pp. 144-155


    Programmers’ Build Errors: A Case Study (at Google)

    Hyunmin Seo, Caitlin Sadowski, Sebastian Elbaum, Edward Aftandilian, Robert Bowdidge

    International Conference on Software Engineering (ICSE) (2014) (to appear)


    RLint: Reformatting R Code to Follow the Google Style Guide

    Alex Blocker, Andy Chen, Andy Chu, Tim Hesterberg, Jeffrey D. Oldham, Caitlin Sadowski, Tom Zhang

    R User Conference (2014)


    Securing the Tangled Web

    Christoph Kern

    Communications of the ACM, vol. 57, no. 9 (2014), pp. 38-47


    2nd international workshop on user evaluations for software engineering researchers (USER)

    Andrew Begel, Caitlin Sadowski

    International Conference on Software Engineering (ICSE) (2013)


    Accuracy of Contemporary Parametric Software Estimation Models: A Comparative Analysis

    Derya Toka

    Proceeding of the 39th Euromicro Conference Series on Software Engineering and Advanced Applications, IEEE, Santander, Spain (2013), pp. 313-316


    Applications and Extensions of Alloy: Past, Present, and Future

    Emina Torlak, Mana Taghdiri, Greg Dennis, Joseph Near

    Mathematical Structures in Computer Science, vol. 23 (2013), pp. 915-933


    Combining compile-time and run-time instrumentation for testing tools

    Timur Iskhodzhanov, Reid Kleckner, Evgeniy Stepanov

    Programmnye produkty i sistemy, vol. 3 (2013), pp. 224-231


    Does Bug Prediction Support Human Developers? Findings from a Google Case Study

    Chris Lewis, Zhongpeng Lin, Caitlin Sadowski, Xiaoyan Zhu, Rong Ou, E. James Whitehead Jr.

    International Conference on Software Engineering (ICSE) (2013)


    Generating Precise Dependencies for Large Software

    Pei Wang, Jinqiu Yang, Lin Tan, Robert Kroeger, J. David Morgenthaler

    Proceedings of the Forth International Workshop on Managing Technical Debt, IEEE (2013), pp. 47-50


    Large-Scale Automated Refactoring Using ClangMR

    Hyrum Wright, Daniel Jasper, Manuel Klimek, Chandler Carruth, Zhanyong Wan

    Proceedings of the 29th International Conference on Software Maintenance (2013)


    Scalable, Example-Based Refactorings with Refaster

    Louis Wasserman

    Workshop on Refactoring Tools (2013)


    Strategies for testing client-server interactions in mobile applications

    Niranjan Tulpule

    MobileDeLi '13 Proceedings of the 2013 ACM workshop on Mobile development lifecycle, ACM, Indianapolis, Indiana, pp. 19-20


    Testable JavaScript

    Mark Ethan Trostler

    O'Reilly Media, 1005 Gravenstein Highway North Sebastopol, CA 95472 (2013)


    Why Don't Software Developers Use Static Analysis Tools to Find Bugs?

    Brittany Johnson, Yoonki Song, Emerson Murphy-Hill, Robert Bowdidge

    International Conference on Software Engineering (2013), pp. 672-681


    A taste of Capsicum: practical capabilities for UNIX

    Robert N. M. Watson, Jonathan Anderson, Ben Laurie, Kris Kennaway

    Communications of the ACM, vol. 55(3) (2012), pp. 97-104


    AddressSanitizer: A Fast Address Sanity Checker

    Konstantin Serebryany, Derek Bruening, Alexander Potapenko, Dmitry Vyukov

    USENIX ATC 2012


    Building Useful Program Analysis Tools Using an Extensible Java Compiler

    Edward Aftandilian, Raluca Sauciuc, Siddharth Priya, Sundaresan Krishnan

    International Working Conference on Source Code Analysis and Manipulation (SCAM), IEEE (2012), pp. 14-23


    Measuring Enforcement Windows with Symbolic Trace Interpretation: What Well-Behaved Programs Say

    Devin Coughlin, Bor-Yuh Evan Chang, Amer Diwan, Jeremy Siek

    Proceedings of the 2012 International Symposium on Software Testing and Analysis, ACM, pp. 276-286


    Searching for Build Debt: Experiences Managing Technical Debt at Google

    J. David Morgenthaler, Misha Gridnev, Raluca Sauciuc, Sanjay Bhansali

    Proceedings of the Third International Workshop on Managing Technical Debt, IEEE (2012), pp. 1-6


    Systematic Software Testing: The Korat Approach

    Chandrasekhar Boyapati, Sarfraz Khurshid, Darko Marinov

    Foundations of Software Engineering (FSE), ACM (2012), pp. 1


    Team Geek: A Software Developer's Guide to Working Well with Others

    Brian W. Fitzpatrick, Ben Collins-Sussman

    O'Reilly Media, 1005 Gravenstein Highway North, Sebastopol, CA 95472 (2012), pp. 180


    Building Web Apps for Google TV

    Amanda Surya, Andres Ferrate, Daniels Lee, Maile Ohye, Paul Carff, Shawn Shen, Steven Hines

    o'Reilly Media, 1005 Gravenstein Hwy N Sebastopol, CA 95472 (2011), pp. 116


    Combined Static and Dynamic Automated Test Generation

    Sai Zhang, David Saff, Yingyi Bu, Michael D. Ernst

    Proc. 11th International Symposium on Software Testing and Analysis (ISSTA 2011), Toronto, Ontario, (to appear)


    Dynamic Race Detection with LLVM Compiler

    Konstantin Serebryany, Alexander Potapenko, Timur Iskhodzhanov, Dmitry Vyukov

    Google (2011)


    Entrepreneurial Innovation at Google

    Patrick Copeland, Alberto Savoia

    IEEE: Computer, vol. 0018-9162/11 (2011), pp. 7


    HTAF: Hybrid Testing Automation Framework to Leverage Local and Global Computing Resources

    Keun Soo Yim, David Hreczany, Ravishankar K. Iyer

    Lecture Notes in Computer Science, vol. 6784 (2011), pp. 479-494


    Practical Memory Checking with Dr. Memory

    Derek Bruening, Qin Zhao

    Proceedings of the IEEE/ACM International Symposium on Code Generation and Optimization, IEEE Computer Society, Los Alamitos, CA, USA (2011), pp. 213-223


    RACEZ: A Lightweight and Non-Invasive Race Detection Tool for Production Applications

    Tianwei Sheng, Neil Vachharajani, Stephane Eranian, Robert Hundt

    ICSE, ACM (2011), pp. 401-410


    Still All On One Server: Perforce at Scale

    Dan Bloch

    2011 Perforce User Conference


    The Future of Computing Performance: Game Over or Next Level?

    Samuel H. Fuller, Luiz André Barroso, Robert P. Colwell, William J. Dally, Dan Dobberpuhl, Pradeep Dubey, Mark D. Hill, Mark Horowitz, David Kirk, Monica Lam, Kathryn S. McKinley, Charles Moore, Katherine Yelick

    The National Academies Press (2011), pp. 200


    Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman

    Dave Hoover, Ade Oshineye

    O'Reilly, Sebastopol, California (2010), pp. 144


    Evolving ASDF: More Cooperation, Less Coordination

    François-René Rideau, Robert Goldman

    Proceedings of the International Lisp Conference 2010


    Google’s Innovation Factory: Testing, Culture, And Infrastructure

    Patrick Copeland

    IEEE International Conference on Software Testing, Verification and Validation (2010), pp. 4


    How Much Software Testing is Enough

    Ruben Ortega

    Communications of the ACM, vol. 53. No 9 (2010), pp. 9


    Object views: Fine-grained sharing in browsers

    Leo Meyerovich, Adrienne Felt, Mark S. Miller

    Proceedings of the International Conference on World Wide Web, World Wide Web Consortium (2010)


    Software development and crunch time; and more

    Ruben Ortega

    Communications of the ACM, vol. 53 No. 7 (2010), pp. 10-11


    Performance Trade-offs Implementing Refactoring Support for Objective-C

    Robert Bowdidge

    Workshop on Refactoring Tools (2009)


    Programming Google App Engine

    Dan Sanderson

    O'Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA, 95472 (2009), pp. 367


    ThreadSanitizer – data race detection in practice.

    Konstantin Serebryany, Timur Iskhodzhanov

    Proceedings of the Workshop on Binary Instrumentation and Applications, WBIA'09 (, NYC, NY, U.S.A. (2009), pp. 62-71


    Code Coverage, Performance, Approximation and Automatic Recognition of Idioms in Scientific Applications

    Jiahua He, Allan E. Snavely, Rob F. Van der Wijngaart, Michael A. Frumkin

    Proc. 17th International Symposium on High Performance Distributed Computing, ACM, Boston (2008), pp. 223-224


    Dynamic Recognition of Synchronization Operations for Improved Data Race Detection

    Chen Tian, Vijay Nagarajan, Rajiv Gupta, Sriraman Tallam

    Proc. International Symposium on Software Testing and Analysis, ACM, Seattle (2008), pp. 143-154


    Experiences Using Static Analysis to Find Bugs

    Nathaniel Ayewah, David Hovemeyer, J. David Morgenthaler, John Penix, William Pugh

    IEEE Software, vol. 25 (2008), pp. 22-29


    High Performance Web Sites

    Steve Souders

    Communications of the ACM, vol. 51 (2008), pp. 36-41


    Predicting Accurate and Actionable Static Analysis Warnings: An Experimental Approach

    Joseph Ruthruff, John Penix, J. David Morgenthaler, Sebastian Elbaum, Gregg Rothermel

    Proceedings of the International Conference on Software Engineering, ACM (2008), pp. 341-350


    Version Control with Subversion, Second Edition

    Brian Fitzpatrick, Ben Collins-Sussman, C. Michael Pilato

    O'Reilly Media, 1003 Gravenstein Highway North Sebastopol, CA 95472 (2008), pp. 430


    Evaluating Static Analysis Defect Warnings on Production Software

    Nathaniel Ayewah, William Pugh, J. David Morgenthaler, John Penix, YuQian Zhou

    Proceedings of the 7th ACM SIGPLAN-SIGSOFT workshop on Program analysis for software tools and engineering, ACM Press, New York, NY, USA (2007), pp. 1-8


    Keeping the Web in Web 2.0: An HCI Approach to Designing Web Applications

    J. Mittleman, Steffen Meschkat

    ACM CHI 2007


    Parallel Test Generation and Execution with Korat

    Sasa Misailovic, Aleksandar Milicevic, Nemanja Petrovic, Sarfraz Khurshid, Darko Marinov

    Proc. 6th Joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering, ACM, Dubrovnik, Croatia (2007)


    Project Intelligence

    Rong Ou

    Pacific Northwest Software Quality Conference 2007 Proceedings, PNSQC, PO Box 10733, Portland, OR 97296-0733, pp. 267-274


    Using FindBugs on Production Software

    Nathaniel Ayewah, J. David Morgenthaler, John Penix, William Pugh, YuQian Zhou

    Proc. OOPSLA'07, ACM, Montréal (2007)


    A Fishbowl with Piranhas: Coalescence, Convergence, or Divergence? The Future of Agile Software Development Practices: Some Assembly Required!

    Steven Fraser, Linda Rising, Scott Ambler, Alistair Cockburn, Jutta Eckstein, David Hussman, Randy Miller, Mark Striebeck, Dave Thomas

    Proc. OOPSLA, ACM, Portland, Oregon (2006), pp. 937-939


    How to design a good API and why it matters

    Joshua Bloch

    Proc. 21st ACM SIGPLAN Conference (OOPSLA), ACM, Portland, Oregon (2006), pp. 506-507


    LCSD: Library-Centric Software Design

    Josh Bloch, Jaakko Jäarvi, David Musser, Sibylle Schupp, Jeremy Siek

    Proc. OOPSLA, ACM, Portland, Oregon (2006), pp. 616-618


    LEVER: A Tool for Learning Based Verification (Tool Paper)

    Abhay Vardhan, Mahesh Viswanathan

    Springer (2006)


    Modular Software Upgrades for Distributed Systems

    Sameer Ajmani, Barbara Liskov, Liuba Shrira

    European Conference on Object-Oriented Programming (ECOOP) (2006)


    binpac: A yacc for Writing Application Protocol Parsers

    Ruoming Pang, Vern Paxson, Robin Sommer, Larry Peterson

    Proc. 6th ACM SIGCOMM on Internet Measurement, ACM, Rio de Janeriro (2006), pp. 289-300


    Hancock: A language for analyzing transactional data streams

    Corinna Cortes, Kathleen Fisher, Daryl Pregibon, Anne Rogers, Frederick Smith

    ACM Trans. Program. Lang. Syst., vol. 26 (2004), pp. 301-338


    How to Break Software

    James A. Whittaker

    Addison-Wesley (2002)


    Jscheme: A Dialect of Scheme for Scripting in Java,

    Ken Anderson, Tim Hickey, Peter Norvig

    Proceedings of the MIT Dynamic Languages Seminar (2001)