Inference of resource management specifications
Pluggable type inference for free
Nothing is better than the Optional type. Really. Nothing is better.
Call Me Maybe: Using NLP to automatically generate unit test cases respecting temporal constraints
Notes on Program Analysis
Accumulation analysis (artifact)
Accumulation analysis
Lightweight and modular resource leak verification
Checking conformance of applications against GUI policies
Verifying determinism in sequential programs
Verifying determinism in sequential programs (extended version)
Revisiting the relationship between fault detection, test adequacy criteria, and test set size
Continuous compliance
Dependent-test-aware regression testing techniques
Verifying Object Construction
Where should I comment my code? A dataset and model for predicting locations that need comments
Visualizing Distributed System Executions
Teaching rigorous distributed systems with efficient model checking
Modular verification of web page layout
Comparing developer-provided to user-provided tests for fault localization and automated program repair
Translating code comments to procedure specifications
Lightweight verification of array indexing
Verifying that web pages have accessible layout
Generalized data structure synthesis
NL2Bash: A corpus and semantic parser for natural language interface to the Linux operating system
Automatic formal verification for EPICS
SpaceSearch: A library for building and verifying solver-aided tools
Verifying Invariants of Lock-free Data Structures with Rely-Guarantee and Refinement Types
Natural language is a programming language: Applying natural language processing to software development
Evaluating and improving fault localization
Program synthesis from natural language using recurrent neural networks
Scalable verification of Border Gateway Protocol configurations with an SMT solver
Automatic trigger generation for rule-based smart homes
Evaluating & improving fault localization techniques
Debugging distributed systems: Challenges and options for validation and debugging
Formal Semantics and Automated Verification for the Border Gateway Protocol
Investigating safety of a radiotherapy machine using system models with pluggable checkers
Automatic generation of oracles for exceptional behaviors
Fast synthesis of fast collections
Semantics for locking specifications
Locking discipline inference and checking
Debugging distributed systems: Challenges and options for validation and debugging
Bagpipe: Verified BGP configuration checking
Planning for change in a formal verification of the Raft consensus protocol
Summarizing Source Code using a Neural Attention Model
Boolean formulas for the static identification of injection attacks in Java
Static analysis of implicit control flow: Resolving Java reflection and Android intents
Explaining visual changes in web interfaces
Development history granularity transformations
Ayudante: Identifying undesired variable interactions
Semantics for locking specifications
Locking discipline inference and checking
Boolean formulas for the static identification of injection attacks in Java
Reducing feedback delay of software development tools via continuous analysis
Static analysis of implicit control flow: Resolving Java reflection and Android intents (extended version)
Proactive detection of inadequate diagnostic messages for software configuration errors
Verdi: A framework for implementing and formally verifying distributed systems
Toward a dependability case language and workflow for a radiation therapy system
Static analysis of implicit control flow: Resolving Java reflection and Android intents
Using declarative specification to improve the understanding, extensibility, and comparison of model-inference algorithms
A data programming CS1 course
When tests collide: Evaluating and coping with the impact of test dependence
Collaborative verification of information flow for a high-assurance app store
Are mutants a valid substitute for real faults in software testing?
A type system for format strings
Empirically revisiting the test independence assumption
A format string checker for Java
Efficient mutation analysis by propagating and partitioning infected execution states
Defects4J: A Database of existing faults to enable controlled testing studies for Java programs
User scripting on Android using BladeDroid
Inferring models of concurrent systems from logs of their behavior with CSight
Case studies and tools for contract specifications
Shedding light on distributed system executions
Which configuration option should I change?
User scripting on Android using BladeDroid
Introductory programming meets the real world: Using real problems and data in CS1
Are mutants a valid substitute for real faults in software testing?
Inferring models of concurrent systems from logs of their behavior with CSight
Empirically revisiting the test independence assumption
Annotations on Java types
, 2014. Proposed Final Draft.Type Annotations specification (JSR 308)
Type Annotations specification (JSR 308)
Interactive record/replay for web application debugging
Early detection of collaboration conflicts and risks
Making offline analyses continuous
Making Offline Analyses Continuous
https://bitbucket.org/kivancmuslu/solstice Implementation
JavaUI: Effects for controlling UI object access
Automatically repairing broken workflows for evolving GUI applications
Rely-guarantee references for refinement types over aliased mutable data
Integrating Systematic Exploration, Analysis, and Maintenance in Software Development
http://files.kivancmuslu.com/Publications/Unpublished/2013/Muslu2013icse... PDF
http://files.kivancmuslu.com/Publications/2013/Muslu2013icse.bib BibTeX
http://files.kivancmuslu.com/Publications/2013/Muslu2013icse_slides.pdf Slides
Automated diagnosis of software configuration errors
Unifying FSM-inference algorithms through declarative specification
Immutability
Unifying FSM-inference algorithms through declarative specification
HAMPI: A solver for word equations over strings, regular expressions, and context-free grammars
Uniqueness and Reference Immutability for Safe Parallelism
Speculative analysis of integrated development environment recommendations
Reducing the barriers to writing verified specifications
ReIm & ReImInfer: Checking and inference of reference immutability and method purity
Unifying FSM-inference algorithms through declarative specification
Finding errors in multithreaded GUI applications
Improving IDE Recommendations by Considering Global Implications of Existing Recommendations
http://files.kivancmuslu.com/Publications/2012/MusluBHEN2012icse.pdf PDF
http://files.kivancmuslu.com/Publications/2012/MusluBHEN2012icse.bib BibTex
http://files.kivancmuslu.com/Publications/2012/MusluBHEN2012icse-slides.pdf Slides
Inference and checking of object ownership
A type system for regular expressions
Verification games: Making verification fun
CBCD: Cloned Buggy Code Detector
Predicting Development Trajectories to Prevent Collaboration Conflicts
http://files.kivancmuslu.com/Publications/2012/BrunMHEN2012fcsd.pdf PDF
http://files.kivancmuslu.com/Publications/2012/BrunMHEN2012fcsd.bib BibTex
http://files.kivancmuslu.com/Publications/2012/BrunMHEN2012fcsd-poster.pdf Poster
Predicting development trajectories to prevent collaboration conflicts
Static lock capabilities for deadlock freedom
Static Lock Capabilities for Deadlock Freedom
http://dl.acm.org/citation.cfm?id=2103786 ACM
http://homes.cs.washington.edu/~csgordon/papers/tldi12.pdf PDF
ftp://ftp.cs.washington.edu/tr/2011/10/UW-CSE-11-10-01.PDF TR
Playing Cupid: the IDE as a matchmaker for plugins
The HaLoop approach to large-scale iterative data analysis
Mining temporal invariants from partially ordered logs
Automated documentation inference to explain failed tests
Scaling up automated test generation: Automatically generating maintainable regression unit tests for programs
Static lock capabilities for deadlock freedom
Type Annotations specification (JSR 308)
Mining temporal invariants from partially ordered logs
Bandsaw: Log-powered test scenario generation for distributed systems
Finding Bugs by Isolating Unit Tests
http://files.kivancmuslu.com/Publications/2011/MusluSW2011esecfse.pdf PDF
http://files.kivancmuslu.com/Publications/2011/MusluSW2011esecfse.bib BibTex
http://files.kivancmuslu.com/Publications/2011/MusluSW2011esecfse-slides... Slides
Leveraging existing instrumentation to automatically infer invariant-constrained models
Proactive detection of collaboration conflicts
Tunable static inference for Generic Universe Types
HAMPI: a string solver for testing, analysis and vulnerability detection
Combined static and dynamic automated test generation
How do programs become more concurrent? A story of program transformations
Always-available static and dynamic feedback
Inference of field initialization
Refactoring using type constraints
Building and using pluggable type-checkers
C3: An Experimental, Extensible, Reconfigurable Platform for HTML-based Applications
Exploiting the collective wisdom of web application executions
Identifying program, test, and environmental changes that affect behaviour
http://homes.cs.washington.edu/~notkin/publications/acm-authorizer/notki... ACM-Authorizer-Link
http://www.youtube.com/watch?feature=player_embedded&v=Q7Xbi-JUNwU YouTube-Demonstration-Video
First workshop on developing tools as plug-ins (TOPI 2011)
http://homes.cs.washington.edu/~notkin/publications/acm-authorizer/notki... ACM-Authorizer-Link
Communication patterns of agile requirements engineering
http://homes.cs.washington.edu/~notkin/publications/acm-authorizer/notki... ACM-Authorizer-Link
Speculative analysis: Exploring future development states of software
Rethinking the economics of software engineering
Ownership and immutability in generic Java
Synoptic: Summarizing system logs with refinement
Finding bugs in web applications using dynamic test generation and explicit state model checking
Featherweight Ownership and Immutability Generic Java (FOIGJ)
Automatically patching errors in deployed software
HAMPI: A solver for string constraints
Refactoring sequential Java code for concurrency via concurrent libraries
Automatic creation of SQL injection and cross-site scripting attacks
Parameter reference immutability: Formal definition, inference tool, and comparison
Software, Software Engineering and Software Engineering Research: Some Unconventional Thoughts
Type Annotations specification (JSR 308)
ReCrash: Making software failures reproducible by preserving object states
Practical pluggable types for Java
Inference of reference immutability
Quantitative information flow as network flow capacity
Theories in practice: Easy-to-write specifications that catch bugs
The Daikon system for dynamic detection of likely invariants
Annotations on Java types: JSR 308 working document
JSR 308: Annotations on Java types
Tools for enforcing and inferring reference immutability in Java
Object and reference immutability using Java generics
Which warnings should I fix first?
A simulation-based proof technique for dynamic information flow
Refactoring for parameterizing Java classes
Prioritizing warnings by analyzing software history
Feedback-directed random test generation
The Groupthink specification exercise
Quantitative information-flow tracking for C and related languages
JSR 308: Annotations on Java types
Finding the needles in the haystack: Generating legal test inputs for object-oriented programs
Combined static and dynamic mutability analysis
Feedback-directed random test generation
Refactoring for parameterizing Java classes
An empirical comparison of automated generation and classification techniques for object-oriented unit testing
Inference and enforcement of data structure consistency specifications
Dynamic inference of abstract types
Detection of web service substitutability and composability
Learning from executions: Dynamic analysis for software engineering and program understanding
Automatic test factoring for Java
Javari: Adding reference immutability to Java
Verification for legacy programs
Using predicate fields in a highly flexible industrial control system
PASTE: ACM SIGPLAN/SIGSOFT Workshop on Program Analysis for Software Tools and Engineering
Static deadlock detection for Java libraries
Eclat: Automatic generation and classification of test inputs
An overview of JML tools and applications
The Groupthink specification exercise
Efficient incremental algorithms for dynamic detection of likely invariants
Formalizing lightweight verification of software component composition
A practical type system and language for reference immutability
Converting Java programs to use generic libraries
Eclat: Automatic generation and classification of test inputs
Improving adaptability via program steering
Using simulated execution in verifying distributed algorithms
An experimental evaluation of continuous testing during development
Early identification of incompatibilities in multi-component upgrades
Automatic mock object creation for test factoring
Finding latent code errors via machine learning over program executions
Continuous testing in Eclipse
Predicting problems caused by component upgrades
Reducing wasted development time via continuous testing
Summary: Workshop on Dynamic Analysis (WODA 2003)
Predicting problems caused by component upgrades
Selecting, refining, and evaluating predicates for program analysis
WODA 2003: ICSE Workshop on Dynamic Analysis
Improving test suites via operational abstraction
Static and dynamic analysis: Synergy and duality
Using simulated execution in verifying distributed algorithms
Programming in a Data Factory
An empirical analysis of C preprocessor use
Graphs induced by Gray codes
Invariant inference for static checking: An empirical evaluation
Automatic generation of program specifications
Verifying distributed algorithms via dynamic analysis and theorem proving
Automated support for program refactoring using invariants
Static verification of dynamically detected program invariants: Integrating Daikon and ESC/Java
Panel: Perspectives on software engineering
Software Reflexion Models: Bridging the Gap between Design and Implementation
Dynamically discovering likely program invariants to support program evolution
Dynamically Discovering Likely Program Invariants
Quickly detecting relevant program invariants
Dynamically discovering pointer-based program invariants
Predicate dispatching: A unified theory of dispatch
Reengineering with Reflexion Models: A Case Study
Automatic SAT-compilation of planning problems
Method and system for controlling unauthorized access to information distributed to users
, 1996. Assigned to Microsoft CorporationLightweight Structural Summarization as an Aid to Software Evolution
Mediators in a Radiation Treatment Planning Environment
http://homes.cs.washington.edu/~notkin/publications/ieee/00536957.pdf PDF
http://homes.cs.washington.edu/~notkin/publications/ieee/ieee-disclaimer... IEEE-disclaimer
IR '95: Intermediate Representations Workshop Proceedings
Slicing pointers and procedures (abstract)
Playing Konane mathematically: A combinatorial game-theoretic analysis
Serializing parallel programs by removing redundant computation
Practical fine-grained static slicing of optimized code
Heraclitean encryption
Value dependence graphs: Representation without taxation
Automated assistance for program restructuring
http://homes.cs.washington.edu/~notkin/publications/acm-authorizer/notki... ACM-Authorizer-Link
Reconciling environment integration and software evolution
http://homes.cs.washington.edu/~notkin/publications/acm-authorizer/notki... ACM-Authorizer-Link