Dynamically discovering likely program invariants to support program evolution
Proceedings of the 21st international conference on Software engineering
Dynamically Discovering Likely Program Invariants to Support Program Evolution
IEEE Transactions on Software Engineering - Special issue on 1999 international conference on software engineering
Exploiting Positive Equality in a Logic of Equality with Uninterpreted Functions
CAV '99 Proceedings of the 11th International Conference on Computer Aided Verification
Modeling Web-Based Dialog Flows for Automatic Dialog Control
Proceedings of the 19th IEEE international conference on Automated software engineering
Data structure repair using goal-directed reasoning
Proceedings of the 27th international conference on Software engineering
Validating ORA-SS Data Models using Alloy
ASWEC '06 Proceedings of the Australian Software Engineering Conference
Inference and enforcement of data structure consistency specifications
Proceedings of the 2006 international symposium on Software testing and analysis
Dynamic inference of abstract types
Proceedings of the 2006 international symposium on Software testing and analysis
Software Abstractions: Logic, Language, and Analysis
Software Abstractions: Logic, Language, and Analysis
Assertion-based repair of complex data structures
Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering
The Daikon system for dynamic detection of likely invariants
Science of Computer Programming
Scalable satisfiability checking and test data generation from modeling diagrams
Automated Software Engineering
Mapping between Alloy Specifications and Database Implementations
SEFM '09 Proceedings of the 2009 Seventh IEEE International Conference on Software Engineering and Formal Methods
A Case for Automated Debugging Using Data Structure Repair
ASE '09 Proceedings of the 2009 IEEE/ACM International Conference on Automated Software Engineering
Proceedings of the IEEE/ACM international conference on Automated software engineering
Scalable analysis of conceptual data models
Proceedings of the 2011 International Symposium on Software Testing and Analysis
Bounded verification of Ruby on Rails data models
Proceedings of the 2011 International Symposium on Software Testing and Analysis
Relational reasoning via SMT solving
FM'11 Proceedings of the 17th international conference on Formal methods
MDA and analysis of web applications
TEAA'05 Proceedings of the 31st VLDB conference on Trends in Enterprise Application Architecture
Unbounded data model verification using SMT solvers
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Rubicon: bounded verification of web applications
Proceedings of the ACM SIGSOFT 20th International Symposium on the Foundations of Software Engineering
Relating navigation and request routing models in web applications
MODELS'07 Proceedings of the 10th international conference on Model Driven Engineering Languages and Systems
Hi-index | 0.00 |
Nowadays many software applications are deployed over compute clouds using the three-tier architecture, where the persistent data for the application is stored in a backend datastore and is accessed and modified by the server-side code based on the user interactions at the client-side. The data model forms the foundation of these three tiers, and identifies the set of objects stored by the application and the relations (associations) among them. In this paper, we present techniques for automatically inferring properties about the data model by analyzing the relations among the object classes. We then check the inferred properties with respect to the semantics of the data model using automated verification techniques. For the properties that fail, we present techniques that generate fixes to the data model that establish the inferred properties. We implemented this approach for web applications built using the Ruby on Rails framework and applied it to five open source applications. Our experimental results demonstrate that our approach is effective in automatically identifying and fixing errors in data models of real-world web applications.