Summary Graphs in JWIG Clause Samples
Summary Graphs in JWIG. The JWIG system performs static analysis of the class files of the Web services. For each occurrence of an XML expression, the analyzer determines the set of XML documents that may result from evaluation at runtime. Such a set is described as a summary graph, which is a finite representation of a possibly infinite set of documents. Since the problem of finding the exact solution is clearly undecidable, the analysis is conservatively approximate, so the true set of actual XML documents may be smaller than that corresponding to the inferred summary graph. The notion of summary graphs is formally defined in [9]. Informally, the nodes of a summary graph are the template constants being used in the program. The edges of the graph correspond to plug operations that possibly have been performed. There is an edge labeled g from a node t1 to a node t2 if the template t1 contains a gap named g that may have been plugged with an XML document whose outermost template constant is t2. That is, a single plug operation, x.plug(g,y), where both x and y are XML templates and g is a gap appearing in x, results in an edge from each node that represents a template constant used in x with an open g gap to the node that represents the outermost template constant of y. If gaps are plugged with strings, then the corresponding edges lead to regular expressions describing the possible string values. These regular expressions are inferred by a separate static analysis [10]. Some of the nodes in a summary graph are identified as roots, meaning that they correspond to the outermost template constants of the documents described. Finally, a summary graph notes for every template constant whether a given gap is possibly still open {"orange"} bgcolor Wrapper title {"Average Guys"} body items List items Item type items items name ε <AnyString>
