A Pattern Language for Software Debugging

In spite of all advancement in software testing, debugging remains a labor-intensive, manual, time consuming, and error prone process. A candidate solution to enhance debugging process is to fuse it with testing process. To achieve this integration, a possible solution may be categorizing common software tests and errors followed by the effort on fixing the errors through general solutions for each test/error pair. Our approach to address this issue is based on Christopher Alexander-s pattern and pattern language concepts. The patterns in this language are grouped into three major sections and connect the three concepts of test, error, and debug. These patterns and their hierarchical relationship shape a pattern language that introduces a solution to solve software errors in a known testing context. Finally, we will introduce our developed framework ADE as a sample implementation to support a pattern of proposed language, which aims to automate the whole process of evolving software design via evolutionary methods.




References:
[1] Brooks, F.P., Jr., "The Mythical Man-Month: Essays on Software
Engineering," Anniversary Edition, Reading, MA: Addison-Wesley
Pub., 1995.
[2] Miller, E.F., Jr., "Program testing: guest editor-s introduction," IEEE
Computer, vol. 11 no. 4, April 1978, pp. 10-12.
[3] Lieberman, H., "The debugging scandal and what to do about it,"
Communications of the ACM, vol. 40 no. 4, April 1997, pp. 26-29.
[4] Eisenstadt, M., "My hairiest bug war stories," Communications of the
ACM, vol. 40 no. 4, April 1997, pp. 30-37.
[5] Dick S. H., "Computational Intelligence in Software Quality
Assurance," PhD Thesis, Department of Computer Science and
Engineering, College of Engineering, University of South Florida, 2002.
[6] Grindal, M.; Offutt, J.; Andler, SF., "Combination testing strategies: a
survey," Software Testing, Verification and Reliability, vol 15 no. 3,
2005, pp. 167-199.
[7] Weyuker, E. J.; Weiss, S. N.; and Hamlet, D., "Comparison of program
testing strategies," In Proceedings Fourth Symposium on Software
Testing, Analysis, and Verification, ACM Press, Oct. 1991, pp. 1-10.
[8] Tonella, P., "Evolutionary testing of classes," in Proceedings of the
ACM SIGSOFT International Symposium on Software Testing and
Analysis, Boston, MA, July 2004, pp. 119-128.
[9] McMinn, P., "Search-based software test data generation: A survey,"
Journal of Software Testing, Verification and Reliability, vol. 14 no. 2,
June 2004, pp. 105-156.
[10] Christopher Alexander et al., "A Pattern Language," Oxford University
Press, New York, 1977.
[11] Coplien, J., "Software Patterns," SIGS books, 1996.
[12] Christopher Alexander, "The Timeless Way of Building," Oxford
University Press, New York, 1979.
[13] Friedman, M.A.; Voas, J.M., "Software Assessment: Reliability, Safety,
Testability," New York: John Wiley & Sons, Inc., 1995.
[14] Peters, J.F.; Pedrycz, W., "Software Engineering: An Engineering
Approach," New York: John Wiley & Sons, 2000.
[15] Saraph, P.; Kandel, A., "Test Case Generation and Reduction by
Automated Input-Output Analysis," IEEE, 2003
[16] TogetherSoft, TogetherSoft Home Page,
http://www.borland.com/together/index.html
[17] Gray, J.; Bapty, T.; Neema, S.; and Tuck, J., "Handling Crosscutting
Constraints In Domain Specific," Modeling, CACM, Vol. 44 no. 10,
2001.
[18] Stankovic, J. A.; Zhu, R.; Poornalingam, R.; Lu, C.; Yu, Z.; Humphrey,
M.; and Ellis, B., "Vest: an aspect-based composition tool for real-time
systems," in Proceedings of the IEEE Real-Time and Embedded
Technology and Applications Symposium, 2003, pp. 58-69.
[19] Duran, J.W.; Wiorkowski, J.J., "Quantifying software validity by
sampling," IEEE Transactions on Reliability, vol. 29 no. 2, June 1980,
pp. 141-144.
[20] De Almeida, M.A.; Lounis, H.; Melo, W.L., "An investigation on the use
of machine learned models for estimating software correctability,"
International Journal of Software Engineering and Knowledge
Engineering, vol. 9 no. 5, 1999, pp. 565-593.
[21] Ebert, C.; Baisch, E., "Knowledge-based techniques for software quality
management," in W. Pedrycz, W.; Peters, J.F., Eds., Computational
Intelligence in Software Engineering, River Edge, NJ: World Scientific,
1998, pp. 295-320.
[22] Sedigh-Ali, S.; Ghafoor, A.; Paul, R.A., "Software engineering metrics
for COTS-based systems," IEEE Computer, vol. 35 no. 5, May 2001, pp.
44-50.
[23] Brown, N., "Industrial-strength management strategies," IEEE Software,
vol. 13 no. 4, July 1996, pp. 94-103.
[24] Tokuda, L., "Evolving Object-Oriented Designs with Refactorings,"
Ph.D. thesis, University of Texas at Austin, 1999.
[25] McMinn, P., "Improving Evolutionary Testing in the Presence of State
Behavior," Ph.D thesis, University of Sheffield, 2002.
[26] Agustin, J. M., "Improving software quality through extreme coverage
with JBlanket," M.S. Thesis CSDL-02-06, Department of Information
and Computer Sciences, University of Hawaii, Honolulu, 2003.
[27] B. Korel, A. M. Al-Yami, "Assertion-oriented automated test data
generation," In Proceedings of the 18th International Conference on
Software Engineering (ICSE), 1996, pp. 71-80
[28] G. Meszaros, J. Doble, "A Pattern Language for Pattern Writing,",