Abstract
Some deadlock testing strategies have been proposed. They statically analyze the structure of concurrent programs, specifically of Ada, without requiring program execution. They are Static Concurrency Analysis, Task Interaction Graph Analysis and Ada Petri Net Analysis. The primary problem with all these strategies is that their worst-case complexity in both computation time and memory space is exponential. Besides, all these strategies are not powerful enough to analyze all of Ada's programming features. The algorithm defined in this thesis, on the other hand, is a new approach for deadlock testing, which is proposed to be less complex in time and space, and is powerful enough to identify most kinds of deadlocks. The algorithm detects an Ada program's deadlocks by analyzing the program's control and communication flow graph. A control and communication flow graph is a two-dimensional graph which displays control flows within each task and communication between any two tasks. The algorithm is even enhanced by facilitating regression testing. It is based on the philosophy of partial reanalysis, instead of complete reanalysis, as changes are made to the code that affect program structure and parallel behavior. This becomes especially important as programs becomes larger and analysis costs become more expensive. The space complexity of the algorithm is as small as $O(n)$ in terms of the number of tasking related statements. On the other hand, the space complexity of other algorithms is exponential. The time complexity of the algorithm defined in this thesis is $O(n)$ for inconsistency deadlocks and $O((2n)(2\sp{n}))$ for circular deadlocks. The other algorithms are exponential for both inconsistency and circular deadlocks. With mechanism of regression testing, the time complexity is even reduced as to analyzing only the part that is altered or affected by a program modification. In addition to less complexity, the algorithm is powerful enough to detect most Ada deadlocks. Since a C&C flow graph is closer to its original code, the algorithm also provides more intuitive information to the programmers/testers.
Talk to us
Join us for a 30 min session where you can share your feedback and ask us any queries you have
Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.