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.
Mark Harman, Department of Information Systems and Computing, Brunel University, Uxbridge, Middlesex, UB8 3PH.