Evaluating Software Complexity Measures
IEEE Transactions on Software Engineering
Automatic generation of invariants and intermediate assertions
Theoretical Computer Science - Special issue: principles and practice of constraint programming
Dynamically Discovering Likely Program Invariants to Support Program Evolution
IEEE Transactions on Software Engineering - Special issue on 1999 international conference on software engineering
Tracking down software bugs using automatic anomaly detection
Proceedings of the 24th International Conference on Software Engineering
Versioning and configuration management in an object-oriented data model
The VLDB Journal — The International Journal on Very Large Data Bases
Predicting Maintenance Performance Using Object-Oriented Design Complexity Metrics
IEEE Transactions on Software Engineering
VLDB '96 Proceedings of the 22th International Conference on Very Large Data Bases
The .NET Contract Wizard: Adding Design by Contract to Languages Other than Eiffel
TOOLS '01 Proceedings of the 39th International Conference and Exhibition on Technology of Object-Oriented Languages and Systems (TOOLS39)
A generic model for semantics-based versioning in projects
IEEE Transactions on Systems, Man, and Cybernetics, Part A: Systems and Humans
Hi-index | 0.00 |
Program invariants can be detected using both static and dynamic approaches. Dynamic methods that complement static methods will be more useful and effective in analyzing software artifacts. Existing dynamic invariant detection techniques detect both relevant and irrelevant invariants due to the presence of relevant and irrelevant/unused variables in the program. Therefore, the speed and efficiency of the techniques are affected. Also, displaying properties about irrelevant variables distracts the user from concentrating on properties of relevant variables. Moreover, these irrelevant invariants do not contribute to the correctness of the program. Therefore, there is a need to overcome the above deficiencies. This is done in three phases in this paper. In the first phase, only the relevant variables are considered by ignoring irrelevant variables. In the second phase, relevant variables are classified into two different types as design variables and non-design variables by using proposed metrics. These metrics are validated analytically against Weyuker's principles. Similarly, relevant invariants are categorized into three types as design invariants, non-design invariants and hybrid invariants in the third phase. For this purpose a set of rules are proposed. This process enormously improves the speed and efficiency of dynamic invariant detection techniques. Also, it drastically reduces the effort that is required to validate program correctness.