simply analyzing the source code of the system. This
is because use-cases represent system usage that
must bring a result of business value to the user
(Leffingwell&Widrig 2003) (Bittner 2001). Hence,
any set of user interactions with the machine does
not represent a use case. It is just a set of user
interactions, nothing more. For such a set of
interaction to represent a true use-case, all
interactions must be targeted at providing the user
some result of business value. This business value
lies outside of the system. It is in the head of the user
(and in some rare cases in the documented business
processes involving the IT system). Therefore, our
key idea to recover business-relevant use-case is
actually to start from an initial user-defined scenario
and to incrementally enhance this scenario to
converge to a complete use-case. Since we start form
a scenario of business value, the value of the use-
case resulting from our process is guaranteed. We
called the initial scenario the “backbone”, since this
is a relevant scenario of business value to the user
that will later be completed. To perform this
completion, we proposed to use dynamic as well as
static analysis techniques. The first one let us find
the code that is executed while running a scenario
(i.e. the execution trace). Then the executed code
(the set of events) is searched for alternative
execution paths. Once such a path is found, our
technique tries to link the condition of its execution
to the scenario’s GUI. This is to check if some
alternative user interaction could possibly lead to the
execution of the alternative path. If such a link is
found the alternative interaction is presented to the
user for validation. If it is validated, the system is
run again with the alternative interaction and the
corresponding executed code analyzed. This process
is repeated until the scenarios converge to a
consistent use-case. As of today, the first part of the
use-case recovery method is implemented, up to the
identification of alternative execution paths. The
next step is to use a backward slicing tool to retrieve
the corresponding user interactions. This is the work
are concentrating on presently. We hope to complete
the work by the end of the summer 2010.
ACKNOWLEDGEMENTS
This work has been done with the support of HESSO
Grant N°24245 from the Swiss Confederation,
which is gratefully acknowledged.
REFERENCES
Bass L., Clements P., Kazman R. 2003. Software
Architecture in Practice, 2nd edition. Adison-Wesley
Inc.
Jacobson I., Booch G., Rumbaugh J. 1999. The Unified
Software Development Process. Addison-Wesley
Professional.
Roche Ch. 2006. How Words Map Concepts . Proc. 10
th
IEEE EDOCW.
Binkley D. W., Gallagher K. B. 1996. Program Slicing. in:
Advances in Computers, vol 43, Academic Press.
Gamma E., Helm R., Johnson R., Vlissides J. 1005.
Design Patterns. Elements of Reusable Object
Oriented Software. Addison-Wesley Inc.
Ko A., Myers B., 2008. Debugging reinvented: asking and
answering why and why not questions about program
behavior, Proc. IEEE ICSE.
Li Q., Hu S., Chen P., Wu L., Chen W. 2007. Discovering
and Mining Use Case Model in Reverse Engineering,
Proc. IEEE FSKD.
Hamou-Lhadj A., Braun E., Amyot D., Lethbridge T.
2005. Recovering Behavioral Design Models from
Execution Traces. Proc IEEE CSMR.
El-Ramly M., Stroulia E., Sorenson P. 2002. Mining
System-User Interaction Traces for Use Case Models.
Proc IEEE IWPC.
Di Lucca G. A., Fasolino A. R., De Carlini U. 2000.
Recovering Use Case models from Object-Oriented
Code: a Thread-based Approach. Proc IEEE WCRE
Qin T., Zhang L., Zhou Z., Hao D., Sun J. 2003.
Discovering Use Cases from Source Code using the
Branch-Reserving Call Graph. Proc. IEEE APSEC.
Wisconsin Program-Slicing Project. 2009, www.cs.wisc.
edu/ wpis/html/
JSlice 2009, jslice.sourceforge.net/
Kaffee 2009, www.kaffe.org/
Indus 2009 indus.projects.cis.ksu.edu/
CodeSonar 2009. www.grammatech.com/products/code
sonar/ overview.html
CodeSurfer 2009. www.grammatech.com/products/code
surfer/ overview.html
Leffingwell D, Widrig D. 2003 Managing software
requirements, Addison Wesley.
Bittner K. 2001. Why use cases are not “functions” - The
Rational Edge.
Dugerdil Ph., Jossi S. 2008. Empirical Assessment of
Execution Trace Segmentation in Reverse
Engineering. Proc ICSOFT
Dugerdil Ph., Jossi S. 2007 Reverse-Engineering of an
Industrial Software Using The Unified Process: An
Experiment. Proc IASTED SEA.
Javacc 2010 https://javacc.dev.java.net/
Java 1.5 Parser and AST 2010 javacc.dev.java.net/servlets/
ProjectDocumentView?documentID=44514&showInf
o=true
FastUML 2010 - sourceforge.net/projects/fastuml/
A LEGACY SYSTEMS USE CASE RECOVERY METHOD
237