The University of Queensland Homepage
School of ITEE ITEE Main Website

 V&V in Concurrency Survey Results

Context of V&V Technology

1. What is your role in your organization?

ResponseCount
Software Tester5
Quality Assurance4
Verification and Validation5
Software Developer28
Project Manager5
Researcher9
Academic4
Other0

2. How many years of experience do you have with V&V?

Less than one year1-2 years3-5 years6 years or more
25818

3. What is the scope of verification and validation that you perform?

ResponseCount
Unit29
Integration23
System18
Acceptance9
Other0
- Ad hoc
- Accessibility
- model checking

4. What programming languages do you use?

Years of experience with Java:

6, 3, 2, 6, 8, 9, 6, 8, 7, 7, 10, 8, 9, 7, 10, 8, 10, 8, 10, 7, 2, 8, 9, 10, 5, 5, 6, 8, 6, 8, 6, 12

Current version of Java used:

1.5, 5.0, 1.4.2, 1.5, 5, 5, Java SE 6 beta2, Mustang, 1.4, JDK 5, Mustang b76, 1.5, 1.6, 5, 5.0, 1.5, 6.0, 1.4, 5.0, 5, 1.5, jdk1.5, 1.5, 1.4.2, 1, 5, 1.4.2, 1.5, 1.4, jdk 5

Years of experience with C++:

1, 6, 15, 2, 15, 11, 3, 10, 10, 18, 1, 2, 23, 3, 10, 8, 2, 10+, 5, 4, 10, 15 (company), 10, 1

Current version of C++ used:

Gnu 4.0, gcc 4; MSVC 6, Initial C++ spec (10 years ago), n/a, ?, gcc 3.4.5, 1998, 1998, ?

Years of experience with Ada:

10, <1, 1, 20 (company)

Current version of Ada used:

not current, n/a, ?

Other programmling languages used: - Haskell (12 years) Esterel (5 years) C# (2 years) F# (1 year) Pascal (12 years) BCPL (6 years) C (15 years) BASIC (7 years)
- C COBOL PL/1
- Python, Tcl, C, and Basic.
- C 23 years, Sun C 5.2/gcc 4.0 Pascal 15 years, Encore ISO Pascal Fortran 24 years, Encore Fortran Modula-2, Modula-3, 7 years PL/1, PL/N (PL/1-like proprietary language) 3 years Myriad assembly languages spanning ~25 years, notably: x86 Assembler 3 years (wrote an embedded OS w. preemtive "thread" scheduler & priority interrupt handling that supported interpretive "application programs"
- Perl, 4, 5.8.5
- Perl, ~10, 5.8+ Lisp, since 1980s, n/a Fortran, since 1970s, n/a Haskell, <1, recent GHC and Hugs etc.
- C, 11, ? Progress,10,9
- Objective-C : 7 years C : 3 years (~40% of ObjC dev) Smalltalk: 3 years
- C, 15 Yrs., I don't use it any more. I've used many other languages over the years, but not professionally.
- Prolog: 2 years C: 2 years Pascal: years
- C (gcc 4.0), 15 years exp.
- Perl, shell scripting, C, Pascal - 10 years
- Fortran 1 year 77
- Various assembly languages, 10 years experience C#, 3 years
- C, Perl, Pascal
- x86 Assembly 2 years IBM 370 assembly 2 years C 3 years
- Java, Lisp, C.
- Python 2 2.4
- C Pascal
- Fortran 2 fortran77 XML 8 2.0(?) beanshell 1

5. What concurrency defects are (or have been) an issue in your work?

ResponseCount
Deadlock31
Interference27
Starvation17
Other6
- Correctness
- livelock, missed wakeups
- priority inversion, live lock, defective synchronization
- livelock
- race conditions
- race conditions (synonym for interference?)
- lock contention (although not a true defect.. is can cause serious problems), and not enough locking in databases (or too much locking in databases)
- Data races (interference)

6. a) What V&V technologies do you use?

ResponseCount
Code inspection/code walkthrough32
Pair programming7
Automated static analysis tools18
Coverage15
Capture/Playback5
Model-checker7
Development testing tools (JUnit)29
Other3
- Jtest
- manual flow analysis on Whiteboard
- Home grown JSP checker based on regular expressions and Tag EI classes
- System automated test

6. b) If you marked code inspection/code walkthrough, please choose the style you most often apply:

individual-systematicindividual-ad hocgroup-systematicgroup-ad hoc
61754

7. a) Is any of the V&V technology you use open source?

YesNo
2112

7. b) If yes, then please list the open source tools you use:

Zing SMV ZChaff

junit

junit, macker, ...

findbugs, checkstyle, PMD, clover, JUnit,

Spin

JUnit, FindBugs, EMMA

FindBugs

JUnit, FindBugs

FindBugs, PMD, manual techniques (inserting dummies/tracers/boobie traps etc.)

findbugs, junit

JUnit

i have built a tool that i intend to release in the near future

findbugs

JUnit, JUnitEE, Checkstyle, Selenium

SPIN

junit, findbugs, cobertura

XMC/Concurrency Factory from SUNY Stony Brook, NY, USA; Patrice Godefroid's Verisoft verification tool; PVS from SRI International, Menlo Park, CA, USA.

I do not have a list right now... sorry.

JUnit, FindBugs, PMD, Checkstyle

junit

Decision Process for V&V Use

8. For each of the following sources of information, indicate your level of agreement with the statement that the particular source of information is an important factor in determining what V&V technology to use.

QuestionSAANDSD
History of use in other companies715631
History of use in your company1214510
Marketing information051647
Search Engine results on the V&V technology1111461
Newgroups/Forums615930
Research Literature914730

Information from Case Studies

9. If you consider case studies or experience reports in your decisions to apply certain V&V technologies, indicate your level of agreement with the statement that the particular aspect of a case study is an important factor in determining what V&V technology to use.

QuestionSAANDSDNA
The empirical study took place in industry.4129006
There was a large number of participants taking part in the study.488515
The study involved participants that applied the V&V technology. (i.e.the evaluation was not automated).6811105
The defects in the study were real, as opposed to artificially seeded.10124015
The case study was in a similar application domain to yours.4137305

Other aspects of case studies that you consider important:

Who performed them

attacking "hard" problems (e.g. non-statically determined race condition detection) instead of solving problems that can often attributed to bad practice/bad APIs/language defects

Some form of measurable (or ideally quantifiable) result and the time taken to find such results. eg. number of bugs found, manual time spent setting up tool, time tool took to run. Sample output from tool.

How the tool or methodology scales to industrial scale (i.e. very large and rapidly evolving) software projects.

Scalability

10. Rate the following aspects of cost-effectiveness of V&V technology in terms of their relative importance. (1-highest importance, 2-middle importance, 3-lowest importance).

The V&V tool finds all faults of a certain type.

1 3 1 1 1 1 2 3 1 1 3 1 1 2 1 2 1 2 1 1 1 2 1 3 1 1 2 2 1 3 2 2 2 1 2

The V&V tool does not report any false positives (i.e. warnings that turn out not to be errors).

1 1 3 3 3 1 2 3 3 3 1 3 2 3 3 3 1 1 2 2 2 2 2 3 1 2 3 3 2 2 2 3 3 3 2

The cost of using the V&V tool relative to the number of errors detected.

1 2 1 2 2 1 1 1 2 2 2 2 3 1 2 1 1 1 1 3 3 1 3 2 1 1 1 3 1 1 1 1 3 2 3

Other aspects of cost-effectiveness of V&V technology that you consider important:

automation capabilities/need for manual conversion of code to evaluate cycle time for analysis

Ease of integration into the development cycle - if it cannot be executed in an automated build cycle it's not as effective.

"automated" operation is a plus (batch runs vs. interactive use), but (apparently fictional?) interactive systems driven by e.g. expert/rule systems with feedback cycles would be OK too as long as they help find/crack the "hard problems".

Really the number and quality of error reports, rather than "false alarm, real bug" is more important. Because it takes work to figure out whether an alarm is true, and then once figured out, you have to figure out how to fix it. Even if a tool only output true alarms, if those alarms were not helpful in finding and fixing the underlying bugs they wouldn't be very helpful.

Whether V&V can be automated - 1 Time taken to learn - 2 Ease of use of report output - 2

"Saleability" of results to the academic community; the goal of V&V in research papers is often to be able to convince the reader (who may be an expert in a field other than V&V) that the algorithm under test is actually correct. Model checking of models derived from source is therefore particularly useful.

The purchase cost of tool does not include the cost to implement; it's important that the tool itself be easy to set-up and train people with. If a tool is practically free (in terms of cost/time to implement and integrate) and only catches 5-10% of concurrency defects that other tools do not, it's very useful in my opinion.

The cost of using the tool is by far the most important. Note that cost includes such aspects as whether the software source code requires manual translation into a language that the tool understands. Tools that consume the source code directly and which scale to millions of lines of source code are the ones that industry could really use. The rest, which constitute the majority of v&v tools on the market, are merely academic curiosities.

The errors reported are likely to be high priority. (some tools find a lot of "real" errors, but they are not things likely to make a difference in practice)

Cost of maintenance also important.