skip to main content
10.1145/512035.512040acmconferencesArticle/Chapter ViewAbstractPublication PagesfseConference Proceedingsconference-collections
Article

A method for detecting faulty code violating implicit coding rules

Authors Info & Claims
Published:19 May 2002Publication History

ABSTRACT

In the field of legacy software maintenance, there unexpectedly arise a large number of implicit coding rules --- which are seldom written down in specification documents or design documents --- as software becomes more complicated than it used be. Since not all the members in a maintenance team realize each of implicit coding rules, a maintainer who is not aware of a rule often violates the rule while doing various maintenance activities such as adding new functionality and repairing faults. The problem here is not only such a violation causes injection of a new fault into software but also this violation will be repeated again and again in the future by different maintainers. Indeed, we found that 32.7% of faults of certain legacy software were due to such violations.This paper proposes a method for detecting code fragments that violate implicit coding rules. In the method, an expert maintainer firstly investigates the causes, situations, and code fragments of each fault described in bug reports; and, identifies implicit coding rules as much as possible. Then, code patterns violating the rules (which we call bug code patterns) are described in a pattern description language. Finally, potential faulty code fragments are extracted by a pattern matching technique.

References

  1. A. A. Andrews, M. C. Ohlsson, and C. Wohlin, "Deriving fault architectures from defect history," J. of Software Maintenance: Research and Practice, Vol. 12, No. 5, pp. 287 - 304, Sept.-Oct. 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. S. G. Eick, T. L. Graves, A. F. Karr, J. S. Marron, and A. Mockus, "Does code decay? Assessing the evidence from change management data," IEEE Trans. on Software Engineering, Vol. 27, No. 1, pp. 1 - 12, Jan. 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. M. Fowler, "Refactoring: Improving the design of existing code", Addison-Wesley, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. T. L. Graves, A. F. Karr, J. S. Marron, and H. Siy, "Predicting fault incidence using software change history," IEEE Trans. on Software Engineering, Vol. 26, No. 7, pp. 653 - 661, July 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. C. P. Hollocker, "Software reviews and audit handbook," p. 162, John Wiley & Sons, 1990. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. W. S. Humphrey, "A discipline for software engineering," Addison-Wesley, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. T. M. Khoshgoftaar, E. B. Allen, W. D. Jones, and J. P. Hudepohl, "Data mining for predictors of software quality," Int'l J. of Software Engineering and Knowledge Engineering, Vol. 9, No. 5, pp. 547 - 563, 1999.Google ScholarGoogle ScholarCross RefCross Ref
  8. F. Macdonald, and J. Miller, "A comparison of tool-based and paper-based software inspection," Empirical Software Engineering, Vol. 3, No. 3, Autumn 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. A. Monden, S. Sato, K. Matsumoto, and K. Inoue, "Modeling and analysis of software aging process," F. Bomarius and M. Oivo (Eds), Lecture Notes in Computer Science, Vol. 1840, pp. 140 - 153, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. A. Monden, S. Sato, and K. Matsumoto, "Capturing industrial experiences of software maintenance using product metrics," Proc. 5th World Multi-Conference on Systemics, Cybernetics and Informatics, Vol. 2, pp. 394 - 399, July 2001.Google ScholarGoogle Scholar
  11. G. J. Myers, "The art of software testing," John Wiley, New York, 1979. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. S. Paul, and A. Prakash, "A framework for source code search using program patterns," IEEE Trans. on Software Engineering, Vol. 20, No. 6, pp. 463 - 475, June 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. E. Regelson and A. Anderson, "Debugging practices for complex legacy software systems," Proc. International Conference on Software Maintenance, pp. 137-143, Sept. 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. N. F. Schneidewind and C. Ebert, "Preserve or redesign legacy systems?," IEEE Software, Vol. 15, No. 4, pp. 14 - 17, July/Aug. 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. A method for detecting faulty code violating implicit coding rules

    Recommendations

    Comments

    Login options

    Check if you have access through your login credentials or your institution to get full access on this article.

    Sign in
    • Published in

      cover image ACM Conferences
      IWPSE '02: Proceedings of the International Workshop on Principles of Software Evolution
      May 2002
      155 pages
      ISBN:1581135459
      DOI:10.1145/512035

      Copyright © 2002 ACM

      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      • Published: 19 May 2002

      Permissions

      Request permissions about this article.

      Request Permissions

      Check for updates

      Qualifiers

      • Article

    PDF Format

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader