Next: Location
Up: Resources from the Workshop
Previous: Top ten(ish) myths of
  Contents
Next: Location
Up: Resources from the Workshop
Previous: Top ten(ish) myths of
  Contents
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
- What are the enabling techniques for SCAM:
- Parsing
- Slicing
- Data Flow Analysis
- 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.
- Related question: what are the lex and yacc of analysis tools?
- We need to include knowledge known before the source was created/modified
(e.g. what was in the designers/maintainers head).
- Complete automation is a mistake ... better to combine machine and human
effort in a symbiotic relationship.
- 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.
- 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.
- Engineer's needs are specific; therefore, they need tools to focus on
particular questions not tools that produce exhaustive solutions.
- A quick
vague answer may be sufficient and even better than, a more precise answer that
takes a long time to compute.
- What is the correct (useful) combination of static and dynamic information?
- 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.
- 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.
- 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").
- What are the use-cases that drive the need for slicing? Have slicing
proponents have put the cart before the horse?
- Chopping is often more useful than slicing.
Next: Location
Up: Resources from the Workshop
Previous: Top ten(ish) myths of
  Contents
Mark Harman, Department of Information Systems and Computing, Brunel University, Uxbridge, Middlesex, UB8 3PH.