Being able to see use case steps directly in code would make the intent expressed by the code more comprehensible and easier to maintain. In this paper, an approach to preserving use case flows (of events) in source code called InFlow is presented within a broader context of its application in the software development process along with the issues that remain as challenges. The approach preserves individual steps of use case flows in the form of their counterpart statements, as well as their ordering. This is achieved by mimicking each use case flow by a sequence of method implementations with each step of the use case flow corresponding to one statement in one of these methods, enabled by the annotation named InFlow. A study of implementing an audio streaming service using InFlow, DCI, and aspect-oriented software development with use cases has been performed and assessed using several metrics in order to determine the level of preserving use case flows in source code. Although InFlow introduces a lot of indirect references to code, the overall results speak in favor of InFlow. DCI adds more complexity to following a use case flow in code than other two approaches. Complexity of making a change to a use case flow ended up with closely matching results. But InFlow guarantees traceability of use case implementation from the domain model implementation.
Abstract-While in waterfall-like processes changes are expected to happen mostly after the main development has finished, agile approaches have incorporated response to changes into the main development itself, which raises the importance of the ability to respond to changes effectively to a sine qua non. Changes are specified from the perspective of how users actually use systems, i.e., usage scenarios, which does not correspond to a common object-oriented code modularization. In their complete form, usage scenarios can be directly observed in user acceptance tests. Unit tests reveal parts of usage scenarios, too. Logically, tests follow the modularization of the code they are related to. Thus, in common object-oriented code, user acceptance tests, which play a very important role in any kind of software development process and which follow the procedural modularization, would be scattered and, consequently, hard to maintain. In this paper, we propose a new approach capable of achieving test driven modularization, i.e., organizing code according to tests. Besides pure test driven modularization, which can be based on user acceptance tests, unit tests, or both, the approach also enables combining use case and test driven modularization.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.