skip to main content
research-article

Explicit use-case representation in object-oriented programming languages

Published:24 October 2011Publication History
Skip Abstract Section

Abstract

Use-cases are considered an integral part of most contemporary development processes since they describe a software system's expected behavior from the perspective of its prospective users. However, the presence of and traceability to use-cases is increasingly lost in later more code-centric development activities. Use-cases, being well-encapsulated at the level of requirements descriptions, eventually lead to crosscutting concerns in system design and source code. Tracing which parts of the system contribute to which use-cases is therefore hard and so limits understandability.

In this paper, we propose an approach to making use-cases first-class entities in both the programming language and the runtime environment. Having use-cases present in the code and the running system will allow developers, maintainers, and operators to easily associate their units of work with what matters to the users. We suggest the combination of use-cases, acceptance tests, and dynamic analysis to automatically associate source code with use-cases. We present UseCasePy, an implementation of our approach to use-case-centered development in Python, and its application to the Django Web framework.

References

  1. G. Antoniol and Y.-G. Gueheneuc. Feature Identification: A Novel Approach and a Case Study. ICSM, pages 357--366, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. G. Antoniol, G. Canfora, G. Casazza, A. De Lucia, and E. Merlo. Recovering Traceability Links between Code and Documentation. TSE, 28 (10): 970--983, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. T. Ball. The Concept of Dynamic Analysis. In ESEC/FSE, pages 216--234, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. D. Batory, J. N. Sarvela, and A. Rauschmayer. Scaling Step-Wise Refinement. In ICSE, pages 187--197, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. D. Bojic and D. Velasevic. A Use-Case Driven Method of Architecture Recovery for Program Understanding and Reuse Reengineering. In CSMR, pages 23--31, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. D. Bojic, T. Eisenbarth, R. Koschke, D. Simon, and D. Velasevic. Addendum to Locating Features in Source Code. TSE, 30 (2): 140, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. J. Cleland-Huang. Robust Requirements Traceability for Handling Evolutionary and Speculative Change. PhD thesis, University of Illinois, 2002.Google ScholarGoogle Scholar
  8. T. A. Corbi. Program Understanding: Challenge for the 1990s. IBM Syst. J., 28 (2): 294--306, 1989. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. K. Czarnecki and U. W. Eisenecker. Generative Programming: Methods, Tools, and Applications. Addison-Wesley, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. M. Denker, J. Ressia, O. Greevy, and O. Nierstrasz. Modeling Features at Runtime. In MODELS, pages 138--152, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. Django. The Web Framework for Perfectionists with Deadlines (06/09/2011). http://www.djangoproject.com, 2011. URL http://www.djangoproject.com.Google ScholarGoogle Scholar
  12. A. Egyed. A Scenario-Driven Approach to Traceability. In ICSE, pages 123--132, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. T. Eisenbarth, R. Koschke, and D. Simon. Locating Features in Source Code. TSE, 29 (3): 210--224, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. A. D. Eisenberg and K. D. Volder. Dynamic Feature Traces: Finding Features in Unfamiliar Code. ICSM, pages 337--346, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. O. C. Z. Gotel and A. C. W. Finkelstein. An Analysis of the Requirements Traceability Problem. In RE, pages 94--101, 1994.Google ScholarGoogle Scholar
  16. M. Grechanik, K. S. McKinley, and D. E. Perry. Recovering and Using Use-Case-Diagram-To-Source-Code Traceability Links. In ESEC-FSE, pages 95--104, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. O. Greevy. Enriching Reverse Engineering with Feature Analysis. PhD thesis, University of Berne, 2007.Google ScholarGoogle Scholar
  18. O. Greevy and S. Ducasse. Correlating Features and Code Using a Compact Two-Sided Trace Analysis Approach. In CSMR, pages 314--323, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. R. Hirschfeld, P. Costanza, and O. Nierstrasz. Context-oriented Programming. JOT, 7 (3): 125--151, 2008.Google ScholarGoogle Scholar
  20. I. Jacobson. Object-Oriented Software Engineering: A Use Case Driven Approach. Addison-Wesley, 1992. Google ScholarGoogle Scholar
  21. I. Jacobson. Use Cases and Aspects - Working Seamlessly Together. JOT, 2 (4): 7--28, 2003.Google ScholarGoogle ScholarCross RefCross Ref
  22. G. Kiczales, J. Lamping, A. Mendhekar, C. Maeda, C. V. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-oriented Programming. ECOOP, pages 220--242, 1997.Google ScholarGoogle ScholarCross RefCross Ref
  23. J. Kothari, T. Denton, S. Mancoridis, and A. Shokoufandeh. On Computing the Canonical Features of Software Systems. In WCRE, pages 93--102, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. A. Kuhn, S. Ducasse, and T. Gırba. Enriching Reverse Engineering with Semantic Clustering. In WCRE, pages 133--142, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. T. D. LaToza, G. Venolia, and R. DeLine. Maintaining Mental Models: A Study of Developer Work Habits. In ICSE, pages 492--501, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. A. Marcus and J. I. Maletic. Recovering Documentation-To-Source-Code Traceability Links Using Latent Semantic Indexing. In ICSE, pages 125--135, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. PyDev. Python Development Environment (06/08/2011). http://www.pydev.org, 2011. URL http://www.pydev.org/.Google ScholarGoogle Scholar
  28. J. Sillito, C. Dutchyn, A. D. Eisenberg, and K. D. Volder. Use Case Level Pointcuts. ECOOP, pages 244--266, 2004.Google ScholarGoogle ScholarCross RefCross Ref
  29. C. O. Systems. Objectory. Wiley-QED Publishing, 1994.Google ScholarGoogle Scholar
  30. C. R. Turner, A. Fuggetta, L. Lavazza, and A. L. Wolf. A Conceptual Basis for Feature Engineering. JSS, 49 (1): 3--15, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  31. A. von Mayrhauser and A. M. Vans. Program Comprehension During Software Maintenance and Evolution. Computer, 28: 44--55, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. N. Wilde and M. C. Scully. Software Reconnaissance: Mapping Program Features to Code. J. Softw. Maint.-Res. Pr., 7 (1): 49--62, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. N. Wilde, J. Gomez, T. Gust, and D. Strasburg. Locating User Functionality in Old Code. In ICSM, pages 200--205, 1992.Google ScholarGoogle ScholarCross RefCross Ref
  34. E. W. Wong, S. S. Gokhale, and J. R. Horgan. Quantifying the Closeness between Program Components and Features. JSS, 54 (2): 87--98, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. A. Zeller. Why Programs Fail: A Guide to Systematic Debugging. Morgan Kaufmann, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. W. Zhao, L. Zhang, Y. Liu, J. Sun, and F. Yang. SNIAFL: Towards a Static Noninteractive Approach to Feature Location. ACM Trans. Softw. Eng. Methodol., 15 (2): 195--226, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Explicit use-case representation in object-oriented programming languages

      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

      Full Access

      • Published in

        cover image ACM SIGPLAN Notices
        ACM SIGPLAN Notices  Volume 47, Issue 2
        DLS '11
        February 2012
        103 pages
        ISSN:0362-1340
        EISSN:1558-1160
        DOI:10.1145/2168696
        Issue’s Table of Contents
        • cover image ACM Conferences
          DLS '11: Proceedings of the 7th symposium on Dynamic languages
          October 2011
          114 pages
          ISBN:9781450309394
          DOI:10.1145/2047849
          • General Chair:
          • Theo D'Hondt

        Copyright © 2011 ACM

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 24 October 2011

        Check for updates

        Qualifiers

        • research-article

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader
      About Cookies On This Site

      We use cookies to ensure that we give you the best experience on our website.

      Learn more

      Got it!