Summary of Discussions

Dave Binkleytook these notes on the discussions and points made at the workshop. Mark Harman slightly editted them, as they appear here (below).

SCAM 2002 Discussion Points

  1. What are the enabling techniques for SCAM:
    1. Parsing
    2. Slicing
    3. Data Flow Analysis

  2. Many analyses start with information obtained from a compiler. However, compiler is prejudiced towards compilation and thus may not be the best source of information.

  3. Related question: what are the lex and yacc of analysis tools?

  4. We need to include knowledge known before the source was created/modified (e.g. what was in the designers/maintainers head).

  5. Complete automation is a mistake ... better to combine machine and human effort in a symbiotic relationship.

  6. Information is available in coding style imposed by framework (e.g. OO) and management; in general, there is idiomatic information available in the code (e.g. UML has a structure that might be exploited). Thus, there are abstractions other than the source that are useful.

  7. Given source is executable, it's the final "word" on the meaning of the system; even if documentation is out of date it still provides some useful information.

  8. Engineer's needs are specific; therefore, they need tools to focus on particular questions not tools that produce exhaustive solutions.

  9. A quick vague answer may be sufficient and even better than, a more precise answer that takes a long time to compute.

  10. What is the correct (useful) combination of static and dynamic information?

  11. How does one account for things that are unknown while performing an analysis (e.g. the affect of a call to an unknown procedure)? Here, conservatism is not necessarily the right choice. Algorithms that are correct most of the time, but incorrect sometimes, may be useful if they save a programmer time.

  12. A programmer uses a library by chaining together calls to build a program. How do we treat software tools in the same way so that the user can pick the tools s/he needs and chain them together.

  13. Transformations can be specified using source code templates. This allows programmer to work with a "formalism" that s/he is familiar with. (i.e. it is the "Lingua franca").

  14. What are the use-cases that drive the need for slicing? Have slicing proponents have put the cart before the horse?

  15. Chopping is often more useful than slicing.

Mark Harman, Department of Information Systems and Computing, Brunel University, Uxbridge, Middlesex, UB8 3PH.