Writing new FindBugs detectors

Size: px
Start display at page:

Download "Writing new FindBugs detectors"

Transcription

1 Writing new FindBugs detectors Why? You may find bug patterns in your own code How? Inspect bytecode There are many ways to implement a FindBugs detector Often, simple techniques (e.g., sequential scan) suffice

2 Basic Approach (! important ) Start with a bug Write the simplest possible detector that might find similar bugs Evaluate: does it find enough interesting bugs without too many false positives? Refine: improve analysis and FP suppression heuristics Repeat steps 3 and 4 until you get something acceptable or you give up on the idea

3 Example Bug Don t use String literals for the synchronized blocks! static private final String LOCK = "LOCK"; void somemethod() { synchronized(lock) {... }} This example from Jetty If other code synchronizes on same String Possible deadlock

4 Writing a detector Add test case Bytecode: LDC "LOCK" DUP ASTORE 1 MONITORENTER Let s use opcode stack. Could also look for bytecode sequence.

5 SynchronizationOnSharedBuiltinConstant public void sawopcode(int seen) { if (seen == MONITORENTER) { OpcodeStack.Item top = stack.getstackitem(0); ("; top.getsignature().equals("ljava/lang/string ) if ( String && top.getconstant() instanceof bugreporter.reportbug(new BugInstance(this, "DL_SYNCHRONIZATION_ON_SHARED_CONSTANT", ( NORMAL_PRIORITY ( addclassandmethod(this. ( addstring((string)constant..addsourceline(this)); } }

6 Results Found issue fixed in Jetty-352. Jetty-352 didn t fix all occurrences in Jetty (Jetty-362). Also found occurrences in Eclipse, glassfish, Sun s JDK, netbeans, nutch, oc4j, weblogic, websphere Not bad for 20 minutes work

7 Why simple techniques work We aren t trying to prove anything about the code Simple mistakes generally result in mistakes that are easy to find javac does minimal optimization/transformation Simple analysis produces results that are easy to triage

8 Bytecode frameworks All FindBugs detectors work by analyzing bytecode. Supported frameworks: BCEL ( DOM-like API ASM ( SAX-like API Currently, much of the supporting FindBugs infrastructure is based on BCEL. Support for ASM-based analyses and detectors is experimental.

9 Types of detectors Most FindBugs detectors use one of the following implementation techniques: Inspecting class/method/field structure Micropatterns: simple bytecode patterns Stack-based patterns Dataflow analysis Interprocedural analysis Each technique is supported by ready-made base classes and support infrastructure

10 Inspecting class/method/field structure Some detectors do not require code analysis. Examples: Find classes that override equals() but not () hashcode Find method naming problems (e.g., hashcode() (() hashcode instead of

11 Micropatterns: simple bytecode patterns E.g., unconditional wait: Source code synchronized (lock) { lock.wait();... } Bytecode in class file ALOAD 0 GETFIELD A.lock DUP ASTORE 1 MONITORENTER ALOAD 0 GETFIELD A.lock INVOKEVIRTUAL Object.wait()V

12 Detector states

13 Stack-based patterns Micropatterns where the values on the operand stack are significant. Example: As seen earlier: look for monitorenter on constant String value Typical implementation strategy: Inquire about values on operand stack Warn when suspicious instruction sequence/stack values seen

14 Dataflow analysis Use intraprocedural dataflow analysis to infer (probable) facts within methods. You may need to dust off your copy of the Dragon book. Examples: Find dereferences of null values Find field accesses not consistently protected by a lock

15 Interprocedural analysis Summarize method behavior, and use that summary at each call site. Examples: Method parameters that are unconditionally dereferenced. Return values that are always nonnull. Methods that always throw an exception.

16 For more information Slides from PLDI tutorial, Using FindBugs for Research In-depth discussion of writing FindBugs detectors Source code for demo plugin with two detectors

Improving Software Quality with Static Analysis and Annotations for Software Defect Detection

Improving Software Quality with Static Analysis and Annotations for Software Defect Detection Improving Software Quality with Static Analysis and Annotations for Software Defect Detection William Pugh Professor, Univ. of Maryland http://www.cs.umd.edu/~pugh TS-2007 About Me Professor at Univ. of

More information

Built-in Concurrency Primitives in Java Programming Language. by Yourii Martiak and Mahir Atmis

Built-in Concurrency Primitives in Java Programming Language. by Yourii Martiak and Mahir Atmis Built-in Concurrency Primitives in Java Programming Language by Yourii Martiak and Mahir Atmis Overview One of the many strengths of Java is the built into the programming language support for concurrency

More information

<Insert Picture Here> What's New in NetBeans IDE 7.2

<Insert Picture Here> What's New in NetBeans IDE 7.2 Slide 1 What's New in NetBeans IDE 7.2 The following is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated

More information

University of Twente. A simulation of the Java Virtual Machine using graph grammars

University of Twente. A simulation of the Java Virtual Machine using graph grammars University of Twente Department of Computer Science A simulation of the Java Virtual Machine using graph grammars Master of Science thesis M. R. Arends, November 2003 A simulation of the Java Virtual Machine

More information

ABSTRACT TO FIND BUGS. Department of Computer Science. can be found using simple analysis techniques. We have found that simple static

ABSTRACT TO FIND BUGS. Department of Computer Science. can be found using simple analysis techniques. We have found that simple static ABSTRACT Title of dissertation: SIMPLE AND EFFECTIVE STATIC ANALYSIS TO FIND BUGS David H. Hovemeyer, Doctor of Philosophy, 2005 Dissertation directed by: Professor William W. Pugh Department of Computer

More information

02 B The Java Virtual Machine

02 B The Java Virtual Machine 02 B The Java Virtual Machine CS1102S: Data Structures and Algorithms Martin Henz January 22, 2010 Generated on Friday 22 nd January, 2010, 09:46 CS1102S: Data Structures and Algorithms 02 B The Java Virtual

More information

State of the World - Statically Verifying API Usage Rule

State of the World - Statically Verifying API Usage Rule Statically Verifying API Usage Rule using Tracematches Xavier Noumbissi, Patrick Lam University of Waterloo November 4, 2010 (University of Waterloo) Statically Verifying API Usage Rule November 4, 2010

More information

Comparing Four Static Analysis Tools for Java Concurrency Bugs

Comparing Four Static Analysis Tools for Java Concurrency Bugs Comparing Four Static Analysis Tools for Java Concurrency Bugs Md. Abdullah Al Mamun, Aklima Khanam, Håkan Grahn, and Robert Feldt School of Computing, Blekinge Institute of Technology SE-371 79 Karlskrona,

More information

Checking Access to Protected Members in the Java Virtual Machine

Checking Access to Protected Members in the Java Virtual Machine Checking Access to Protected Members in the Java Virtual Machine Alessandro Coglio Kestrel Institute 3260 Hillview Avenue, Palo Alto, CA 94304, USA Ph. +1-650-493-6871 Fax +1-650-424-1807 http://www.kestrel.edu/

More information

Virtual Machines. Case Study: JVM. Virtual Machine, Intermediate Language. JVM Case Study. JVM: Java Byte-Code. JVM: Type System

Virtual Machines. Case Study: JVM. Virtual Machine, Intermediate Language. JVM Case Study. JVM: Java Byte-Code. JVM: Type System Case Study: JVM Virtual Machines What is a machine? does something (...useful) programmable concrete (hardware) What is a virtual machine? a machine that is not concrete a software emulation of a physical

More information

Ontology Model-based Static Analysis on Java Programs

Ontology Model-based Static Analysis on Java Programs Ontology Model-based Static Analysis on Java Programs Lian Yu 1, Jun Zhou, Yue Yi, Ping Li, Qianxiang Wang School of Software and Microelectronics, Peking University, Beijing, 102600, PRC Abstract 1 Typical

More information

Nullness Analysis of Java Bytecode via Supercompilation over Abstract Values

Nullness Analysis of Java Bytecode via Supercompilation over Abstract Values Nullness Analysis of Java Bytecode via Supercompilation over Abstract Values Ilya G. Klyuchnikov JetBrains; Keldysh Institute of Applied Mathematics of RAS Abstract. Code inspections in the upcoming release

More information

Java Virtual Machine Locks

Java Virtual Machine Locks Java Virtual Machine Locks SS 2008 Synchronized Gerald SCHARITZER (e0127228) 2008-05-27 Synchronized 1 / 13 Table of Contents 1 Scope...3 1.1 Constraints...3 1.2 In Scope...3 1.3 Out of Scope...3 2 Logical

More information

Assessing Tools for Finding Bugs in Concurrent Java

Assessing Tools for Finding Bugs in Concurrent Java Assessing Tools for Finding Bugs in Concurrent Java Alexandros Spathoulas E H U N I V E R S I T Y T O H F G R E D I N B U Master of Science Computer Science School of Informatics University of Edinburgh

More information

Java SE 7 Programming

Java SE 7 Programming Java SE 7 Programming The second of two courses that cover the Java Standard Edition 7 (Java SE 7) Platform, this course covers the core Application Programming Interfaces (API) you will use to design

More information

Pentesting Java/J2EE, finding remote holes

Pentesting Java/J2EE, finding remote holes Pentesting Java/J2EE, finding remote holes Marc Schoenefeld University of Bamberg HackInTheBox 2006 Marc Schoenefeld (Uni Bamberg) Pentest J2EE, remote holes HackInTheBox 2006 1 / 42 Agenda 1 Context 2

More information

Data Flow Static Code Analysis Best Practices

Data Flow Static Code Analysis Best Practices Data Flow Static Code Analysis Best Practices Introduction This paper examines why and how to add flow analysis to your existing testing strategies. After introducing the general concept and benefits of

More information

Write Barrier Removal by Static Analysis

Write Barrier Removal by Static Analysis Write Barrier Removal by Static Analysis Karen Zee and Martin Rinard Laboratory for Computer Science Massachusetts Institute of Technology Cambridge, MA 02139 {kkz, [email protected] ABSTRACT We present

More information

The Java Virtual Machine (JVM) Pat Morin COMP 3002

The Java Virtual Machine (JVM) Pat Morin COMP 3002 The Java Virtual Machine (JVM) Pat Morin COMP 3002 Outline Topic 1 Topic 2 Subtopic 2.1 Subtopic 2.2 Topic 3 2 What is the JVM? The JVM is a specification of a computing machine Instruction set Primitive

More information

UI Performance Monitoring

UI Performance Monitoring UI Performance Monitoring SWT API to Monitor UI Delays Terry Parker, Google Contents 1. 2. 3. 4. 5. 6. 7. Definition Motivation The new API Monitoring UI Delays Diagnosing UI Delays Problems Found! Next

More information

Structural Typing on the Java Virtual. Machine with invokedynamic

Structural Typing on the Java Virtual. Machine with invokedynamic WRIGHT STATE UNIVERSITY Structural Typing on the Java Virtual Machine with invokedynamic by Brian Diekelman A thesis submitted in partial fulfillment for the degree of Bachelor of Science in the Department

More information

picojava TM : A Hardware Implementation of the Java Virtual Machine

picojava TM : A Hardware Implementation of the Java Virtual Machine picojava TM : A Hardware Implementation of the Java Virtual Machine Marc Tremblay and Michael O Connor Sun Microelectronics Slide 1 The Java picojava Synergy Java s origins lie in improving the consumer

More information

A Comparison of Bug Finding Tools for Java

A Comparison of Bug Finding Tools for Java A Comparison of Bug Finding Tools for Java Nick Rutar Christian B. Almazan University of Maryland, College Park {rutar, almazan, jfoster}@cs.umd.edu Jeffrey S. Foster Abstract Bugs in software are costly

More information

A Java Virtual Machine Architecture for Very Small Devices

A Java Virtual Machine Architecture for Very Small Devices A Java Virtual Machine Architecture for Very Small Devices Nik Shaylor Sun Microsystems Research Laboratories 2600 Casey Avenue Mountain View, CA 94043 USA [email protected] Douglas N. Simon Sun Microsystems

More information

Java Language Tools COPYRIGHTED MATERIAL. Part 1. In this part...

Java Language Tools COPYRIGHTED MATERIAL. Part 1. In this part... Part 1 Java Language Tools This beginning, ground-level part presents reference information for setting up the Java development environment and for compiling and running Java programs. This includes downloading

More information

Continuous Code-Quality Assurance with SAFE

Continuous Code-Quality Assurance with SAFE Continuous Code-Quality Assurance with SAFE Emmanuel Geay Eran Yahav Stephen Fink IBM T.J. Watson Research Center {egeay,eyahav,sjfink}@us.ibm.com http://www.research.ibm.com/safe ABSTRACT This paper presents

More information

Java SE 7 Programming

Java SE 7 Programming Oracle University Contact Us: 1.800.529.0165 Java SE 7 Programming Duration: 5 Days What you will learn This Java SE 7 Programming training explores the core Application Programming Interfaces (API) you'll

More information

Java SE 7 Programming

Java SE 7 Programming Oracle University Contact Us: Local: 1800 103 4775 Intl: +91 80 4108 4709 Java SE 7 Programming Duration: 5 Days What you will learn This Java Programming training covers the core Application Programming

More information

Monitoring Java enviroment / applications

Monitoring Java enviroment / applications Monitoring Java enviroment / applications Uroš Majcen [email protected] Java is Everywhere You Can Expect More. Java in Mars Rover With the help of Java Technology, and the Jet Propulsion Laboratory (JPL),

More information

First Java Programs. V. Paúl Pauca. CSC 111D Fall, 2015. Department of Computer Science Wake Forest University. Introduction to Computer Science

First Java Programs. V. Paúl Pauca. CSC 111D Fall, 2015. Department of Computer Science Wake Forest University. Introduction to Computer Science First Java Programs V. Paúl Pauca Department of Computer Science Wake Forest University CSC 111D Fall, 2015 Hello World revisited / 8/23/15 The f i r s t o b l i g a t o r y Java program @author Paul Pauca

More information

An Overview of Java. overview-1

An Overview of Java. overview-1 An Overview of Java overview-1 Contents What is Java Major Java features Java virtual machine Java programming language Java class libraries (API) GUI Support in Java Networking and Threads in Java overview-2

More information

Common Errors in C/C++ Code and Static Analysis

Common Errors in C/C++ Code and Static Analysis Common Errors in C/C++ Code and Static Analysis Red Hat Ondřej Vašík and Kamil Dudka 2011-02-17 Abstract Overview of common programming mistakes in the C/C++ code, and comparison of a few available static

More information

CHAPTER 5 INTELLIGENT TECHNIQUES TO PREVENT SQL INJECTION ATTACKS

CHAPTER 5 INTELLIGENT TECHNIQUES TO PREVENT SQL INJECTION ATTACKS 66 CHAPTER 5 INTELLIGENT TECHNIQUES TO PREVENT SQL INJECTION ATTACKS 5.1 INTRODUCTION In this research work, two new techniques have been proposed for addressing the problem of SQL injection attacks, one

More information

CSC 8505 Handout : JVM & Jasmin

CSC 8505 Handout : JVM & Jasmin CSC 8505 Handout : JVM & Jasmin Note: This handout provides you with the basic information about JVM. Although we tried to be accurate about the description, there may be errors. Feel free to check your

More information

Effective Java Programming. measurement as the basis

Effective Java Programming. measurement as the basis Effective Java Programming measurement as the basis Structure measurement as the basis benchmarking micro macro profiling why you should do this? profiling tools Motto "We should forget about small efficiencies,

More information

Instrumenting Java bytecode

Instrumenting Java bytecode Instrumenting Java bytecode Seminar work for the Compilers-course, spring 2005 Jari Aarniala Department of Computer Science University of Helsinki, Finland [email protected] ABSTRACT Bytecode

More information

JDK 1.5 Updates for Introduction to Java Programming with SUN ONE Studio 4

JDK 1.5 Updates for Introduction to Java Programming with SUN ONE Studio 4 JDK 1.5 Updates for Introduction to Java Programming with SUN ONE Studio 4 NOTE: SUN ONE Studio is almost identical with NetBeans. NetBeans is open source and can be downloaded from www.netbeans.org. I

More information

Iron Chef: John Henry Challenge

Iron Chef: John Henry Challenge Iron Chef: John Henry Challenge Brian Chess Pravir Chandra Black Hat 3/27/2008 Amsterdam Sean Fay Jacob West Concept We love Iron Chef. We can t cook. Concept Compare tools and manual code review in head-tohead

More information

SAF: Static Analysis Improved Fuzzing

SAF: Static Analysis Improved Fuzzing The Interdisciplinary Center, Herzlia Efi Arazi School of Computer Science SAF: Static Analysis Improved Fuzzing M.Sc. Dissertation Submitted in Partial Fulfillment of the Requirements for the Degree of

More information

TESTING WITH JUNIT. Lab 3 : Testing

TESTING WITH JUNIT. Lab 3 : Testing TESTING WITH JUNIT Lab 3 : Testing Overview Testing with JUnit JUnit Basics Sample Test Case How To Write a Test Case Running Tests with JUnit JUnit plug-in for NetBeans Running Tests in NetBeans Testing

More information

Application-only Call Graph Construction

Application-only Call Graph Construction Application-only Call Graph Construction Karim Ali and Ondřej Lhoták David R. Cheriton School of Computer Science, University of Waterloo Abstract. Since call graphs are an essential starting point for

More information

Speculative Multithreading in a Java Virtual Machine

Speculative Multithreading in a Java Virtual Machine McGill University School of Computer Science Sable Research Group Speculative Multithreading in a Java Virtual Machine Sable Technical Report No. 2005-1 Christopher J.F. Pickett and Clark Verbrugge {cpicke,clump}@sable.mcgill.ca

More information

TOOL EVALUATION REPORT: FORTIFY

TOOL EVALUATION REPORT: FORTIFY TOOL EVALUATION REPORT: FORTIFY Derek D Souza, Yoon Phil Kim, Tim Kral, Tejas Ranade, Somesh Sasalatti ABOUT THE TOOL Background The tool that we have evaluated is the Fortify Source Code Analyzer (Fortify

More information

Static Analysis Tools in Industry: Dispatches From the Front Line. Dr. Andy Chou Chief Scientist and Co-founder Coverity, Inc.

Static Analysis Tools in Industry: Dispatches From the Front Line. Dr. Andy Chou Chief Scientist and Co-founder Coverity, Inc. Static Analysis Tools in Industry: Dispatches From the Front Line Dr. Andy Chou Chief Scientist and Co-founder Coverity, Inc. Outline Things I know A little bit about Coverity Bug-Finding: Technology +

More information

The Java Virtual Machine and Mobile Devices. John Buford, Ph.D. [email protected] Oct 2003 Presented to Gordon College CS 311

The Java Virtual Machine and Mobile Devices. John Buford, Ph.D. buford@alum.mit.edu Oct 2003 Presented to Gordon College CS 311 The Java Virtual Machine and Mobile Devices John Buford, Ph.D. [email protected] Oct 2003 Presented to Gordon College CS 311 Objectives Review virtual machine concept Introduce stack machine architecture

More information

Checking Access to Protected Members in the Java Virtual Machine

Checking Access to Protected Members in the Java Virtual Machine Vol. 4, No. 8, 2005 Checking Access to Protected Members in the Java Virtual Machine Alessandro Coglio, Kestrel Institute, Palo Alto, California, USA This paper studies in detail how to correctly and efficiently

More information

Java Interview Questions and Answers

Java Interview Questions and Answers 1. What is the most important feature of Java? Java is a platform independent language. 2. What do you mean by platform independence? Platform independence means that we can write and compile the java

More information

language 1 (source) compiler language 2 (target) Figure 1: Compiling a program

language 1 (source) compiler language 2 (target) Figure 1: Compiling a program CS 2112 Lecture 27 Interpreters, compilers, and the Java Virtual Machine 1 May 2012 Lecturer: Andrew Myers 1 Interpreters vs. compilers There are two strategies for obtaining runnable code from a program

More information

The Effectiveness of Automated Static Analysis Tools for Fault Detection and Refactoring Prediction

The Effectiveness of Automated Static Analysis Tools for Fault Detection and Refactoring Prediction The Effectiveness of Automated Static Analysis Tools for Fault Detection and Refactoring Prediction Fadi Wedyan, Dalal Alrmuny, and James M. Bieman Colorado State University Computer Science Department

More information

Modulo II Qualidade de Software com Maven

Modulo II Qualidade de Software com Maven Modulo II Qualidade de Software com Maven Professor Ismael H F Santos [email protected] April 05 Prof. Ismael H. F. Santos - [email protected] 1 Bibliografia Linguagem de Programação JAVA

More information

Memories of Bug Fixes

Memories of Bug Fixes Sunghun Kim Department of Computer Science University of California, Santa Cruz Santa Cruz, CA, USA [email protected] Memories of Bug Fixes Kai Pan Department of Computer Science University of California,

More information

CS 111 Classes I 1. Software Organization View to this point:

CS 111 Classes I 1. Software Organization View to this point: CS 111 Classes I 1 Software Organization View to this point: Data Objects and primitive types Primitive types operators (+, /,,*, %). int, float, double, char, boolean Memory location holds the data Objects

More information

Linux Kernel. Security Report

Linux Kernel. Security Report Linux Kernel Security Report September 25 Authors: Andy Chou, Bryan Fulton and Seth Hallem Coverity has combined two years of analysis work carried out in a commercial setting at Coverity with four years

More information

STATIC CODE ANALYSIS Alexandru G. Bardas 1

STATIC CODE ANALYSIS Alexandru G. Bardas 1 Abstract STATIC CODE ANALYSIS Alexandru G. Bardas 1 A lot of the defects that are present in a program are not visible to the compiler. Static code analysis is a way to find bugs and reduce the defects

More information

A Brief Introduction to Static Analysis

A Brief Introduction to Static Analysis A Brief Introduction to Static Analysis Sam Blackshear March 13, 2012 Outline A theoretical problem and how to ignore it An example static analysis What is static analysis used for? Commercial successes

More information

Platform Independent Dynamic Java Virtual Machine Analysis: the Java Grande Forum Benchmark Suite

Platform Independent Dynamic Java Virtual Machine Analysis: the Java Grande Forum Benchmark Suite Platform Independent Dynamic Java Virtual Machine Analysis: the Java Grande Forum Benchmark Suite Charles Daly Computer Applications, Dublin City University, Dublin 9, Ireland. Jane Horgan Computer Applications,

More information

Under the Hood: The Java Virtual Machine. Lecture 24 CS 2110 Fall 2011

Under the Hood: The Java Virtual Machine. Lecture 24 CS 2110 Fall 2011 Under the Hood: The Java Virtual Machine Lecture 24 CS 2110 Fall 2011 Compiling for Different Platforms Program written in some high-level language (C, Fortran, ML,...) Compiled to intermediate form Optimized

More information

The Java Virtual Machine Specification. Java SE 8 Edition

The Java Virtual Machine Specification. Java SE 8 Edition The Java Virtual Machine Specification Java SE 8 Edition This page intentionally left blank The Java Virtual Machine Specification Java SE 8 Edition Tim Lindholm Frank Yellin Gilad Bracha Alex Buckley

More information

Java Mission Control

Java Mission Control Java Mission Control Harald Bräuning Resources Main Resource: Java Mission Control Tutorial by Marcus Hirt http://hirt.se/downloads/oracle/jmc_tutorial.zip includes sample projects! Local copy: /common/fesa/jmcexamples/jmc_tutorial.zip

More information

Habanero Extreme Scale Software Research Project

Habanero Extreme Scale Software Research Project Habanero Extreme Scale Software Research Project Comp215: Java Method Dispatch Zoran Budimlić (Rice University) Always remember that you are absolutely unique. Just like everyone else. - Margaret Mead

More information

KAIST Cyber Security Research Center SAR(Security Analysis Report) Date. August 31, Modified

KAIST Cyber Security Research Center SAR(Security Analysis Report) Date. August 31, Modified Document # Type Attack Trend Technical Analysis Specialty Analysis Title Date Modified Java Applet Vulnerability Analysis (CVE-2012-4681) August 25, KAIST Graduate School 2012 of Information Security Author

More information

Deadlock Victim. dimanche 6 mai 12

Deadlock Victim. dimanche 6 mai 12 Deadlock Victim by Dr Heinz Kabutz && Olivier Croisier The Java Specialists Newsletter && The Coder's Breakfast [email protected] && [email protected] 1 You discover a race condition 2

More information

The Darwin Game 2.0 Programming Guide

The Darwin Game 2.0 Programming Guide The Darwin Game 2.0 Programming Guide In The Darwin Game creatures compete to control maps and race through mazes. You play by programming your own species of creature in Java, which then acts autonomously

More information

Java Virtual Machine, JVM

Java Virtual Machine, JVM Java Virtual Machine, JVM a Teodor Rus [email protected] The University of Iowa, Department of Computer Science a These slides have been developed by Teodor Rus. They are copyrighted materials and may not

More information

Programming by Contract. Programming by Contract: Motivation. Programming by Contract: Preconditions and Postconditions

Programming by Contract. Programming by Contract: Motivation. Programming by Contract: Preconditions and Postconditions COMP209 Object Oriented Programming Designing Classes 2 Mark Hall Programming by Contract (adapted from slides by Mark Utting) Preconditions Postconditions Class invariants Programming by Contract An agreement

More information

Evaluation of AgitarOne

Evaluation of AgitarOne Carnegie Mellon University, School of Computer Science Master of Software Engineering Evaluation of AgitarOne Analysis of Software Artifacts Final Project Report April 24, 2007 Edited for public release

More information

No no-argument constructor. No default constructor found

No no-argument constructor. No default constructor found Every software developer deals with bugs. The really tough bugs aren t detected by the compiler. Nasty bugs manifest themselves only when executed at runtime. Here is a list of the top ten difficult and

More information

IMPROVING VULNERABILITY MANAGEMENT EFFECTIVENESS WITH APPLICATION SECURITY MONITORING

IMPROVING VULNERABILITY MANAGEMENT EFFECTIVENESS WITH APPLICATION SECURITY MONITORING IMPROVING VULNERABILITY MANAGEMENT EFFECTIVENESS WITH APPLICATION SECURITY How runtime application security monitoring helps enterprises make smarter decisions on remediation 2 ABSTRACT Enterprises today

More information

Understanding and Detec.ng Real- World Performance Bugs

Understanding and Detec.ng Real- World Performance Bugs Understanding and Detec.ng Real- World Performance Bugs Gouliang Jin, Linhai Song, Xiaoming Shi, Joel Scherpelz, and Shan Lu Presented by Cindy Rubio- González Feb 10 th, 2015 Mo.va.on Performance bugs

More information

Development Testing for Agile Environments

Development Testing for Agile Environments Development Testing for Agile Environments November 2011 The Pressure Is On More than ever before, companies are being asked to do things faster. They need to get products to market faster to remain competitive

More information

Chapter 1 Java Program Design and Development

Chapter 1 Java Program Design and Development presentation slides for JAVA, JAVA, JAVA Object-Oriented Problem Solving Third Edition Ralph Morelli Ralph Walde Trinity College Hartford, CT published by Prentice Hall Java, Java, Java Object Oriented

More information

Virtual Machine Learning: Thinking Like a Computer Architect

Virtual Machine Learning: Thinking Like a Computer Architect Virtual Machine Learning: Thinking Like a Computer Architect Michael Hind IBM T.J. Watson Research Center March 21, 2005 CGO 05 Keynote 2005 IBM Corporation What is this talk about? Virtual Machines? 2

More information

What s Cool in the SAP JVM (CON3243)

What s Cool in the SAP JVM (CON3243) What s Cool in the SAP JVM (CON3243) Volker Simonis, SAP SE September, 2014 Public Agenda SAP JVM Supportability SAP JVM Profiler SAP JVM Debugger 2014 SAP SE. All rights reserved. Public 2 SAP JVM SAP

More information

Software Reliability Estimation Based on Static Error Detection

Software Reliability Estimation Based on Static Error Detection 7 th Central and Eastern European Software Engineering Conference in Russia - CEE-SECR 2011 October 31 November 3, Moscow Software Reliability Estimation Based on Static M. Moiseev, M. Glukhikh, A. Karpenko,

More information

Advanced Java Client API

Advanced Java Client API 2012 coreservlets.com and Dima May Advanced Java Client API Advanced Topics Originals of slides and source code for examples: http://www.coreservlets.com/hadoop-tutorial/ Also see the customized Hadoop

More information

NetBeans 6.5.1 and GlassFish v 2.1 Creating a Healthcare Facility Visual Web Application

NetBeans 6.5.1 and GlassFish v 2.1 Creating a Healthcare Facility Visual Web Application NetBeans 6.5.1 and GlassFish v 2.1 Creating a Healthcare Facility Visual Web Application [email protected] June 2009 Introduction In some views SOA is represented as a series of 4 layers: Presentation

More information

Comparing the Effectiveness of Penetration Testing and Static Code Analysis

Comparing the Effectiveness of Penetration Testing and Static Code Analysis Comparing the Effectiveness of Penetration Testing and Static Code Analysis Detection of SQL Injection Vulnerabilities in Web Services PRDC 2009 Nuno Antunes, [email protected], [email protected] University

More information

VisualVM: Integrated and Extensible Troubleshooting Tool for the Java Platform

VisualVM: Integrated and Extensible Troubleshooting Tool for the Java Platform VisualVM: Integrated and Extensible Troubleshooting Tool for the Java Platform Tomáš Hůrka, Sun Microsystems Inc. Luis-Miguel Alventosa, Sun Microsystems Inc. BOF-5223 Introduce VisualVM - new tool that

More information

CSCI E 98: Managed Environments for the Execution of Programs

CSCI E 98: Managed Environments for the Execution of Programs CSCI E 98: Managed Environments for the Execution of Programs Draft Syllabus Instructor Phil McGachey, PhD Class Time: Mondays beginning Sept. 8, 5:30-7:30 pm Location: 1 Story Street, Room 304. Office

More information

Improving Software Quality with the Continuous Integration Server Hudson. Dr. Ullrich Hafner Avaloq Evolution AG 8911

Improving Software Quality with the Continuous Integration Server Hudson. Dr. Ullrich Hafner Avaloq Evolution AG 8911 Improving Software Quality with the Continuous Integration Server Hudson Dr. Ullrich Hafner Avaloq Evolution AG 8911 AGENDA 2 > INTRODUCTION TO CI AND HUDSON > USING STATIC ANALYSIS IN PROJECTS > DEMO

More information

Static Code Analysis Procedures in the Development Cycle

Static Code Analysis Procedures in the Development Cycle Static Code Analysis Procedures in the Development Cycle Tools, Technology, and Process in Engineering at Microsoft Mooly Beeri Microsoft Haifa R&D Center Agenda Static code analysis tools PREfix and PREfast

More information

Security Monitor Inlining for Multithreaded Java

Security Monitor Inlining for Multithreaded Java Security Monitor Inlining for Multithreaded Java Mads Dam 1, Bart Jacobs 2, Andreas Lundblad 1, and Frank Piessens 2 1 KTH, Sweden {mfd,landreas}@kth.se 2 K.U.Leuven, Belgium {bartj,frank}@cs.kuleuven.be

More information

Java Power Tools. John Ferguson Smart. ULB Darmstadt 1 PI. O'REILLY 4 Beijing Cambridge Farnham Koln Paris Sebastopol Taipei Tokyo

Java Power Tools. John Ferguson Smart. ULB Darmstadt 1 PI. O'REILLY 4 Beijing Cambridge Farnham Koln Paris Sebastopol Taipei Tokyo Java Power Tools John Ferguson Smart ULB Darmstadt 1 PI O'REILLY 4 Beijing Cambridge Farnham Koln Paris Sebastopol Taipei Tokyo Table of Contents Foreword Preface Introduction xvii xix xxxiii Parti. Build

More information

Java Memory Model: Content

Java Memory Model: Content Java Memory Model: Content Memory Models Double Checked Locking Problem Java Memory Model: Happens Before Relation Volatile: in depth 16 March 2012 1 Java Memory Model JMM specifies guarantees given by

More information

Coding in Industry. David Berry Director of Engineering Qualcomm Cambridge Ltd

Coding in Industry. David Berry Director of Engineering Qualcomm Cambridge Ltd Coding in Industry David Berry Director of Engineering Qualcomm Cambridge Ltd Agenda Potted history Basic Tools of the Trade Test Driven Development Code Quality Performance Open Source 2 Potted History

More information

The Context of Software Development

The Context of Software Development 1 Chapter 1 The Context of Software Development A computer program, from one perspective, is a sequence of instructions that dictate the flow of electrical impulses within a computer system. These impulses

More information

Replication on Virtual Machines

Replication on Virtual Machines Replication on Virtual Machines Siggi Cherem CS 717 November 23rd, 2004 Outline 1 Introduction The Java Virtual Machine 2 Napper, Alvisi, Vin - DSN 2003 Introduction JVM as state machine Addressing non-determinism

More information

Static Analysis. Find the Bug! 15-654: Analysis of Software Artifacts. Jonathan Aldrich. disable interrupts. ERROR: returning with interrupts disabled

Static Analysis. Find the Bug! 15-654: Analysis of Software Artifacts. Jonathan Aldrich. disable interrupts. ERROR: returning with interrupts disabled Static Analysis 15-654: Analysis of Software Artifacts Jonathan Aldrich 1 Find the Bug! Source: Engler et al., Checking System Rules Using System-Specific, Programmer-Written Compiler Extensions, OSDI

More information