Testing of Code Generated by Model-Driven Architecture

Product: Verification and Testing of Code Generated by Model-Driven Architecture 
Development Stage: Software Tested
Primary Inventor: Dr. Wuwei Shen, Department of Computer Science
License Status: License Available 
Patent Status: US 9983977
Reference: 2013-009

Software errors are becoming increasingly prevalent as the size and complexity of computer programs continue to increase and are more difficult to identify before widespread distribution of the software. Consequently, this results in increasing costs to find and fix problems in the software. As programs extend to additional applications and aspects of everyday life, the costs to businesses and society for such errors accelerates.

A design model is used as a blueprint for coding of many software programs. The Model Driven Architecture language, Unified Modeling Language (UML), is used to create a design model and programming languages, like Java, are used to create code from the model. Often-times, machine and programmer -generated code contains inaccuracies with respect to the model that cannot easily be detected, causing the program to not accomplish its designed purposes.

Currently, there are several programs for detecting errors in software that are derived from UML. These programs are time intensive and laborious, while many times not detecting all errors. 

Technology Description

Dr. Shen’s laboratory at ÃÛÌÒÉçÇø has created a novel program that efficiently detects errors in software programs by using a model based testing and verification approach that  determines if there are inconsistencies between the UML design model and the software code. It eliminates redundant branches during the testing to increase its speed and efficiency. 

This new program detects errors in programs based on UML models, by generating constraint rules from the design model, and testing the machine and programmer -generated code using a verification program generated from the constraint rules. The verification program uses a unique application of algorithms to test all cases for the model, while eliminating redundant cases to speed evaluation of the code.

This novel software has successfully been applied to a major software package created with Java. It detected errors that were previously unknown, and it performed the evaluation more efficiently than a well-known Java code verifier.  

Potential Benefits

•    Efficiently detects inconsistences between the design model and the software code
•    Detects more errors than previous methods
•    Not limited to specific programming language or operating platform
•    Automated testing
•    Reduces cost of development and increases reliability of software programs before distribution.