An Empirical Study of Data Constraint Implementations in Java
Juan Manuel Florez, Laura Moreno, Zenong Zhang, Shiyi Wei and, Andrian Marcus

TL;DR
This empirical study investigates how data constraints are implemented in Java software, revealing common patterns, deviations, and the prevalence of code clones, which aids in testing, debugging, and software maintenance.
Contribution
It identifies four data constraint types, 30 implementation patterns, and develops a protocol to find additional constraint implementations in Java systems.
Findings
Developed a tool-assisted protocol to identify more data constraint implementations.
Found that nearly half of constraints use multiple enforcing statements, often as code clones.
Developed a taxonomy of data constraint types and implementation patterns.
Abstract
Software systems are designed according to guidelines and constraints defined by business rules. Some of these constraints define the allowable or required values for data handled by the systems. These data constraints usually originate from the problem domain (e.g., regulations), and developers must write code that enforces them. Understanding how data constraints are implemented is essential for testing, debugging, and software change. Unfortunately, there are no widely-accepted guidelines or best practices on how to implement data constraints. This paper presents an empirical study that investigates how data constraints are implemented in Java. We study the implementation of 187 data constraints extracted from the documentation of eight real-world Java software systems. First, we perform a qualitative analysis of the textual description of data constraints and identify four data…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Advanced Software Engineering Methodologies · Software System Performance and Reliability
