Managing data constraints in database-backed web applications
There are often constraints associated with data used in software, restricting data length, value, uniqueness, and other properties. These constraints are particularly crucial for the reliability, maintability, and usability of database-backed web applications, where a huge amount of structured data is expected to persist in database and serve web users throughout software upgrade and database migration. In this paper, our comprehensive study about where data constraints are expressed, what they are about, when they evolve, and how their violations are handled in Ruby on Rails applications demonstrates that real-world developers struggle at maintaining consistent data constraints and constraint checking across different components and different versions of web applications, which led to many real-world software reliability, maintanability, and usability problems. Guided by our study, we developed checking tools and API enhancements that can automatically detect and help fix problems in data-constraint specification and violation handling.