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.
- G. Antoniol and Y.-G. Gueheneuc. Feature Identification: A Novel Approach and a Case Study. ICSM, pages 357--366, 2005. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- T. Ball. The Concept of Dynamic Analysis. In ESEC/FSE, pages 216--234, 1999. Google Scholar
Digital Library
- D. Batory, J. N. Sarvela, and A. Rauschmayer. Scaling Step-Wise Refinement. In ICSE, pages 187--197, 2003. Google Scholar
Digital Library
- 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 Scholar
Digital Library
- D. Bojic, T. Eisenbarth, R. Koschke, D. Simon, and D. Velasevic. Addendum to Locating Features in Source Code. TSE, 30 (2): 140, 2004. Google Scholar
Digital Library
- J. Cleland-Huang. Robust Requirements Traceability for Handling Evolutionary and Speculative Change. PhD thesis, University of Illinois, 2002.Google Scholar
- T. A. Corbi. Program Understanding: Challenge for the 1990s. IBM Syst. J., 28 (2): 294--306, 1989. Google Scholar
Digital Library
- K. Czarnecki and U. W. Eisenecker. Generative Programming: Methods, Tools, and Applications. Addison-Wesley, 2000. Google Scholar
Digital Library
- M. Denker, J. Ressia, O. Greevy, and O. Nierstrasz. Modeling Features at Runtime. In MODELS, pages 138--152, 2010. Google Scholar
Digital Library
- Django. The Web Framework for Perfectionists with Deadlines (06/09/2011). http://www.djangoproject.com, 2011. URL http://www.djangoproject.com.Google Scholar
- A. Egyed. A Scenario-Driven Approach to Traceability. In ICSE, pages 123--132, 2001. Google Scholar
Digital Library
- T. Eisenbarth, R. Koschke, and D. Simon. Locating Features in Source Code. TSE, 29 (3): 210--224, 2003. Google Scholar
Digital Library
- A. D. Eisenberg and K. D. Volder. Dynamic Feature Traces: Finding Features in Unfamiliar Code. ICSM, pages 337--346, 2004. Google Scholar
Digital Library
- O. C. Z. Gotel and A. C. W. Finkelstein. An Analysis of the Requirements Traceability Problem. In RE, pages 94--101, 1994.Google Scholar
- 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 Scholar
Digital Library
- O. Greevy. Enriching Reverse Engineering with Feature Analysis. PhD thesis, University of Berne, 2007.Google Scholar
- O. Greevy and S. Ducasse. Correlating Features and Code Using a Compact Two-Sided Trace Analysis Approach. In CSMR, pages 314--323, 2005. Google Scholar
Digital Library
- R. Hirschfeld, P. Costanza, and O. Nierstrasz. Context-oriented Programming. JOT, 7 (3): 125--151, 2008.Google Scholar
- I. Jacobson. Object-Oriented Software Engineering: A Use Case Driven Approach. Addison-Wesley, 1992. Google Scholar
- I. Jacobson. Use Cases and Aspects - Working Seamlessly Together. JOT, 2 (4): 7--28, 2003.Google Scholar
Cross Ref
- 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 Scholar
Cross Ref
- J. Kothari, T. Denton, S. Mancoridis, and A. Shokoufandeh. On Computing the Canonical Features of Software Systems. In WCRE, pages 93--102, 2006. Google Scholar
Digital Library
- A. Kuhn, S. Ducasse, and T. Gırba. Enriching Reverse Engineering with Semantic Clustering. In WCRE, pages 133--142, 2005. Google Scholar
Digital Library
- T. D. LaToza, G. Venolia, and R. DeLine. Maintaining Mental Models: A Study of Developer Work Habits. In ICSE, pages 492--501, 2006. Google Scholar
Digital Library
- A. Marcus and J. I. Maletic. Recovering Documentation-To-Source-Code Traceability Links Using Latent Semantic Indexing. In ICSE, pages 125--135, 2003. Google Scholar
Digital Library
- PyDev. Python Development Environment (06/08/2011). http://www.pydev.org, 2011. URL http://www.pydev.org/.Google Scholar
- J. Sillito, C. Dutchyn, A. D. Eisenberg, and K. D. Volder. Use Case Level Pointcuts. ECOOP, pages 244--266, 2004.Google Scholar
Cross Ref
- C. O. Systems. Objectory. Wiley-QED Publishing, 1994.Google Scholar
- C. R. Turner, A. Fuggetta, L. Lavazza, and A. L. Wolf. A Conceptual Basis for Feature Engineering. JSS, 49 (1): 3--15, 1999. Google Scholar
Digital Library
- A. von Mayrhauser and A. M. Vans. Program Comprehension During Software Maintenance and Evolution. Computer, 28: 44--55, 1995. Google Scholar
Digital Library
- N. Wilde and M. C. Scully. Software Reconnaissance: Mapping Program Features to Code. J. Softw. Maint.-Res. Pr., 7 (1): 49--62, 1995. Google Scholar
Digital Library
- N. Wilde, J. Gomez, T. Gust, and D. Strasburg. Locating User Functionality in Old Code. In ICSM, pages 200--205, 1992.Google Scholar
Cross Ref
- 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 Scholar
Digital Library
- A. Zeller. Why Programs Fail: A Guide to Systematic Debugging. Morgan Kaufmann, 2006. Google Scholar
Digital Library
- 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 Scholar
Digital Library
Index Terms
Explicit use-case representation in object-oriented programming languages
Recommendations
Explicit use-case representation in object-oriented programming languages
DLS '11: Proceedings of the 7th symposium on Dynamic languagesUse-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 ...
Managing embedded systems complexity with aspect-oriented model-driven engineering
Model-driven engineering addresses issues of platform heterogeneity and code quality through the use of high-level system models and subsequent automatic transformations. Adoption of the model-driven software engineering paradigm for embedded systems ...
Utilizing use case classes for requirement and traceability modeling
MS'06: Proceedings of the 17th IASTED international conference on Modelling and simulationChanges to the UML 2.0 revision indicate that clarifications on the future of traditional use case needs to take place. The indications are that the use case notation can be replaced by use-case classes. Use case classes model requirement types as ...







Comments