A field study of the software design process for large systems
Communications of the ACM
A critique of the Windows application programming interface
Computer Standards & Interfaces
Data on the Web: from relations to semistructured data and XML
Data on the Web: from relations to semistructured data and XML
Symbolic execution and program testing
Communications of the ACM
Finding bugs with a constraint solver
Proceedings of the 2000 ACM SIGSOFT international symposium on Software testing and analysis
The SLAM project: debugging system software via static analysis
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
IEEE Standard Computer Dictionary: Compilation of IEEE Standard Computer Glossaries
IEEE Standard Computer Dictionary: Compilation of IEEE Standard Computer Glossaries
MOPS: an infrastructure for examining security properties of software
Proceedings of the 9th ACM conference on Computer and communications security
Construction of Abstract State Graphs with PVS
CAV '97 Proceedings of the 9th International Conference on Computer Aided Verification
Efficient Algorithms for Model Checking Pushdown Systems
CAV '00 Proceedings of the 12th International Conference on Computer Aided Verification
NeT & CoT: Inferring XML Schemas from Relational World
ICDE '02 Proceedings of the 18th International Conference on Data Engineering
Static Analysis of XML Transformations in Java
IEEE Transactions on Software Engineering
Modular Verification of Software Components in C
IEEE Transactions on Software Engineering
Design of Large-Scale Polylingual Systems
Proceedings of the 26th International Conference on Software Engineering
Model checking XML manipulating software
ISSTA '04 Proceedings of the 2004 ACM SIGSOFT international symposium on Software testing and analysis
Inferring Specifications to Detect Errors in Code
Proceedings of the 19th IEEE international conference on Automated software engineering
XJ: facilitating XML processing in Java
WWW '05 Proceedings of the 14th international conference on World Wide Web
Jungloid mining: helping to navigate the API jungle
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
Software verification with BLAST
SPIN'03 Proceedings of the 10th international conference on Model checking software
jMoped: a java bytecode checker based on moped
TACAS'05 Proceedings of the 11th international conference on Tools and Algorithms for the Construction and Analysis of Systems
The essence of data access in Cω: the power is in the dot!
ECOOP'05 Proceedings of the 19th European conference on Object-Oriented Programming
Hi-index | 0.00 |
Two or more components (e.g., objects, modules, or programs) interoperate when they exchange data, such as XML data. Currently, there is no approach that can detect a situation at compile time when one component modifies XML data so that it becomes incompatible for use by other components, delaying discovery of errors to runtime. Our solution, a Verifier for Interoperating cOmponents for finding Logic fAults (Viola) builds abstract programs from the source code of components that exchange XML data. Viola symbolically executes these abstract programs thereby obtaining approximate specifications of the data that would be output by these components. The computed and expected specifications are compared to find errors in XML data exchanges between components. We describe our approach, implementation, and give our error checking algorithm. We used Viola on open source and commercial systems and discovered errors that were not detected during their design and testing.