mutual behavior of the classes in a convenient
format. It provides some useful clues as to how
classes interact when running the use-cases. The
dynamic UML class diagram of the functional
structure of the use-case conveniently summarizes
all the programming elements involved in the
execution of the use-cases.
The drawback of our reverse-engineering technique
is that we are unsure to go through the all the
alternative paths in each of the scenarios since the
latter are recovered from the observation of the
users. For example, in the case of legacy desktop
applications, we investigated a semi-automated
technique to recover the use case from the legacy
code (Dugerdil, Sennhauser, 2013) with moderate
success however, due to the complexity of the task.
Indeed, use-case recovery from source code is still
an open problem. As future work we will integrate
our tool with IBM’s RSA to be able to generate the
dynamic UML class diagram automatically. We also
intend to develop new views to represent the
dynamic business-level application semantics.
Indeed we are building domain concept ontologies
whose concepts will be dynamically identified in the
executed code. This technique will help to close the
semantic gap between the high level business
domain concepts and the code level.
REFERENCES
ANTLR 2014. ANother Tool for Language Recognition.
http://www.antlr.org/ Accessed on Oct 12, 2014.
Apple iOS 2014. File System Programming Guide https://
developer.apple.com/library/mac/documentation/File
Management/Conceptual/FileSystemProgrammingGui
de/FileSystemOverview/FileSystemOverview.html.
[Accessed on Oct 12, 2014].
Appcelerator/IDC 2013. Mobile Developer report. www.
appcelerator.com.s3.amazonaws.com/pdf/developer-
survey-Q2-2013.pdf. [Accessed on March 5, 2015].
Apple UITableView 2014. UITableView Class Reference,
https://developer.apple.com/library/ios/documentation/
UIKit/Reference/UITableView_Class/. [Accessed on
Oct 12, 2014].
Clements P., Kazman R., Klein M. 2002. Evaluating
Software Architecture. Addison-Wesley.
Dugerdil Ph. 2007 - Using trace sampling techniques to
identify dynamic clusters of classes. IBM CAS
Software and Systems Engineering Symposium
(CASCON) October 2007.
Dugerdil Ph., Sennhauser D. 2013. Dynamic Decision
Tree for Legacy Use-Case Recovery. 28th ACM
Symposium On Applied Computing (SAC 2013)
Coimbra, Portugal, March 18-22, 2013.
Dugerdil Ph., Niculescu M. 2014. Visualizing Software
Structure Understandability. 23rd Australasian
Software Engineering Conference (ASWEC) 2014.
Sydney, 2014. IEEE Digital Library.
Gamma E., Helm R., Johnson R., Vlissides J. 1995 Design
Patterns. Elements of Reusable Object Oriented
Software. Addison-Wesley.
Gianchandani P. 2014. Damn Vulnerable iOS Application
(DVIA). http://damnvulnerableiosapp.com/#learn
[Accessed on Oct 12, 2014].
GDB. 2014. GNU Debugger http://www.gnu.org/software
/gdb/ [Accessed on Oct 12, 2014].
Graphviz 2015. http://www.graphviz.org/Home.php.
[Accessed on April 17, 2015].
Hammond J.S. 2013. Development Landscape: 2013,
Forrester Research.
Hamou-Lhadj A., Lethbridge T.C. 2004. A Survey of
Trace Exploration Tools and Techniques. Proc. of the
IBM Conference of the Centre for Advanced Studies
on Collaborative Research.
IBM 2014. IBM Mobile First initiative. www.03.
ibm.com/press/us/en/presskit/39172.wss. [Accessed on
Oct 12, 2014].
IDC 2013. IDC Predictions 2013 Competing on the 3rd
Platform. www.idc.com/getdoc.jsp?containerId=
WC20121129 [Accessed on March 5, 2015].
iExplorer 2014. http://www.macroplant.com/iexplorer/
[Accessed on Oct 12, 2014].
Introspy-iOS 2014. https://github.com/iSECPartners/Intro
spy-iOS. [Accessed on Oct 12, 2014].
iOS Simulator, 2014. https://developer.apple.com/library/
ios/documentation/IDEs/Conceptual/iOS_Simulator_
Guide/GettingStartedwithiOSStimulator/GettingStarte
dwithiOSStimulator.html. [Accessed on Oct 12, 2014].
JavaCC 2014. Java Compiler Compiler – The Java Parser
Generator. https://javacc.java.net/ [Accessed on Oct
12, 2014].
JTB 2014. Java TreeBuilder.http://compilers.cs.ucla.edu/
jtb/ [Accessed on Oct 12, 2014].
LLDB 2014. LLDB Debugger, http://lldb.llvm.org/.
[Accessed on Oct 12, 2014].
Objective C 2014. Runtime Reference. https://developer
.apple.com/library/mac/documentation/Cocoa/Referen
ce/ObjCRuntimeRef/Reference/reference.html.
[Accessed on Oct 12, 2014].
Parada A.G., de Brisolara L.B. 2012. A model driven
approach for An-droid applications development.
Proc. Brazilian Symposium on Computing System
Engineering (SBESC).
Snoop-it 2014. https://code.google.com/p/snoop-it/
[Accessed on Oct 12, 2014].
Szydlowski et al. 2011. Challenges for Dynamic Analysis
of iOS Applications. Proc. of the IFIP WG 11.4
international conference on Open Problems in
Network Security.
Tilley S.R., Santanu P., Smith D.B. 1996. Toward a
Framework for Program Understanding. Proc. IEEE
Int. Workshop on Program Comprehension.
Wasserman A.I. 2011. Software Engineering Issues for
Mobile Application Development. Proc. 2nd Workshop
ReverseEngineeringanIPhoneApplicationsusingDynamicAnalysis
267