Abstract
Due to the technology evolution, every IT Company migrates their software systems at least once. Reengineering tools build system models which are used for running software analysis. These models are traditionally built from source code analysis and information accessible by data extractors (that we call such information observable). In this article we present the case of Microsoft Access projects and how this kind of project is partially observable due to proprietary storing formats. We propose a novel approach for building models that allows us to overcome this problem by reverse engineering the development environment runtime through the usage of Microsoft COM interface. We validate our approach and implementation by fully replicating 10 projects, 8 of them industrial, based only on our model information. We measure the replication performance by measuring the errors during the process and completeness of the product. We measure the replication error, by tracking replication operations. We used the scope and completeness measure to enact this error. Completeness is measured by the instrumentation of a simple and scoped diff based on a third source of information. We present extensive results and interpretations. We discuss the threats to validity, the possibility of other approaches and the technological restrictions of our solution.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Similar content being viewed by others
Notes
- 1.
For space reasons, we do not consider tools performing analyses of system runtime. Such approaches instrument applications and produce various traces [4].
- 2.
- 3.
- 4.
- 5.
- 6.
- 7.
- 8.
- 9.
- 10.
- 11.
- 12.
- 13.
- 14.
- 15.
- 16.
References
Bragagnolo, S., Marra, M., Polito, G., Boix, E.G.: Towards scalable blockchain analysis. In: 2019 IEEE/ACM 2nd International Workshop on Emerging Trends in Software Engineering for Blockchain (WETSEB), pp. 1–7 (2019)
Bragagnolo, S., Rocha, H., Denker, M., Ducasse, S.: SmartInspect: solidity smart contract inspector. In: 2018 International Workshop on Blockchain Oriented Software Engineering (IWBOSE), pp. 9–18 (March 2018). Electronic ISBN: 978-1-5386-5986-1
Brant, J., Roberts, D., Plendl, B., Prince, J.: Extreme maintenance: transforming Delphi into C#. In: 2010 IEEE International Conference on Software Maintenance (ICSM), pp. 1–8 (2010)
De Pauw, W., Jensen, E., Mitchell, N., Sevitsky, G., Vlissides, J., Yang, J.: Visualizing the execution of Java programs. In: Diehl, S. (ed.) Software Visualization. LNCS, vol. 2269, pp. 151–162. Springer, Heidelberg (2002). https://doi.org/10.1007/3-540-45875-1_12
Ducasse, S., Anquetil, N., Bhatti, U., Cavalcante Hora, A., Laval, J., Girba, T.: MSE and FAMIX 3.0: an interexchange format and source code model family. Tech. rep., RMod - INRIA Lille-Nord Europe (2011)
Fleurey, F., Breton, E., Baudry, B., Nicolas, A., Jézéquel, J.-M.: Model-driven engineering for software migration in a large industrial context. In: Engels, G., Opdyke, B., Schmidt, D.C., Weil, F. (eds.) MODELS 2007. LNCS, vol. 4735, pp. 482–497. Springer, Heidelberg (2007). https://doi.org/10.1007/978-3-540-75209-7_33
Francesca, A.F., Fabrizio, P., Claudia, R., Stefano, R.: Behavioural design pattern detection through dynamic analysis. In: Proceedings of 4th PCODA at the 15th Working Conference on Reverse Engineering (WCRE 2008), pp. 11–16 (2008)
Garcés, K., et al.: White-box modernization of legacy applications: the Oracle forms case study. Comput. Stand. Interfaces 57, 110–122 (2017)
Govin, B., Anquetil, N., Etien, A., Ducasse, S., Monegier Du Sorbier, A.: Managing an industrial software rearchitecting project with source code labelling. In: Complex Systems Design & Management conference (CSD&M), Paris, France (December 2017)
Govin, B., Anquetil, N., Etien, A., Monegier Du Sorbier, A., Ducasse, S.: How can we help software rearchitecting efforts? Study of an industrial case. In: Proceedings of the International Conference on Software Maintenance and Evolution, (Industrial Track), Raleigh, USA (October 2016)
Hayakawa, T., Hasegawa, S., Yoshika, S., Hikita, T.: Maintaining web applications by translating among different RIA technologies. GSTF J. Comput. 2, 250–256 (2012)
Kienle, H.M., Müller, H.A.: The tools perspective on software reverse engineering: requirements, construction, and evaluation. In: Advanced in Computers, vol. 79, pp. 189–290. Elsevier (2010)
Newcomb, P.: Architecture-driven modernization (ADM). In: 12th Working Conference on Reverse Engineering (WCRE 2005), p. 237 (2005)
Object Management Group: Abstract syntax tree metamodel (ASTM) version 1.0. Tech. rep., Object Management Group (2011)
Richner, T., Ducasse, S.: Recovering high-level views of object-oriented applications from static and dynamic information. In: Yang, H., White, L. (eds.) Proceedings of 15th IEEE International Conference on Software Maintenance (ICSM 1999), pp. 13–22. IEEE Computer Society Press, Los Alamitos (September 1999)
Sánchez Ramán, O., Sánchez Cuadrado, J., García Molina, J.: Model-driven reverse engineering of legacy graphical user interfaces. In: Proceedings of the IEEE/ACM International Conference on Automated Software Engineering, ASE 2010, pp. 147–150. ACM (2010)
Shah, E., Tilevich, E.: Reverse-engineering user interfaces to facilitate porting to and across mobile devices and platforms. In: Proceedings of the Compilation of the Co-located Workshops on DSM 2011, TMC 2011, AGERE! 2011, AOOPES 2011, NEAT 2011, & VMIL 2011, pp. 255–260. ACM (2011)
Silva, C.E., Campos, J.C.: Combining static and dynamic analysis for the reverse engineering of web applications. In: Proceedings of the 5th ACM SIGCHI Symposium on Engineering Interactive Computing Systems, p. 107. ACM Press (2013)
Stroulia, E., Systä, T.: Dynamic analysis for reverse engineering and program understanding. SIGAPP Appl. Comput. Rev. 10(1), 8–17 (2002)
Terekhov, A.A., Verhoef, C.: The realities of language conversions. IEEE Softw. 17(6), 111–124 (2000)
Ulrich, W.M., Newcomb, P.: Information Systems Transformation: Architecture-Driven Modernization Case Studies. Morgan Kaufmann, Burlington (2010)
Verhaeghe, B., et al.: GUI migration using MDE from GWT to Angular 6: an industrial case. In: 2019 IEEE 26th International Conference on Software Analysis, Evolution and Reengineering (SANER), Hangzhou, China (2019)
Wegner, P.: Dimensions of object-based language design. In: Proceedings OOPSLA 1987, ACM SIGPLAN Notices, vol. 22, pp. 168–182 (December 1987)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Appendices
A Annex 1: Error Tracking and Weighting
Error Tracking. COM is not intensively used to create projects programmatically. Many standard procedures, after running, make Access unstable and easy to fail in any next attempt of modification. Failures that may imply from non created widgets to missing properties. During the whole process we track down all the errors happened during this process, for being able to plot alongside with the results on the comparisons. This error is tracked down at the level of replication operation and typified. (1) ChildCreatedSuccessfully (2) FailureToCreateChild (3) FailureToWriteProperty (4) PropertyWrittenSuccesfully. The tree of error tracking composition responds to the same composition as the proposed model.
Error Weighting. We measure the failure of a replication process, by the weighting and summarization of the tree of operations.
Let o be the result of an operation of replication. Let \(c_o\) be the children creation operation under the scope of the operation o. Let \(p_o\) be the properties creation operation under the scope of the operation o.
This recursive function calculates the proportion of error in terms of errors in terms of composed errors. For our work those elements that are composed of elements (by example, the controls inside a form) are specially represented by their children. This is why one formula branch uses coefficients: 10% based on the component properties, and 90% on the children completeness.
B Annex 2: File X File Diff & Weighting
File Diff. For being able to diff each pair of files we used different techniques Modules, Macros, and Queries are loaded as nodes with name and plain text content. Tables are loaded as XML trees including name, indexes and fields with their name and type. Forms, Reports are loaded with a simple parser that produces a tree of report/form with their controls and properties.
Each of these entities are loaded from original and replica. For each pair we calculate the differential tree expressing all the needed operations for transforming the original graph into the replica graph. We define the following operations: (1) Add (2) Remove (3) Same (4) ModifyChild (5) ModifyProperty.
Diff Weighting. We measure the completeness of each of the elements on the differential graph. Let u be the result of comparing an element from the original project with its equivalent of the replica.
Magnitude M(u) is the weighting of the difference in between two elements. Let \(u_o\) and \(u_r\) being respectively original and replica side of u. Let \(c_u\) be the set of children that belong to the u. Let \(p_u\) be the set of properties that belong to the u.
This recursive function calculates the magnitude of the difference in terms of the composed differences. The coefficients used in this formula respond to the same explanation as those used on the error weighting formula explained above.
Rights and permissions
Copyright information
© 2020 Springer Nature Switzerland AG
About this paper
Cite this paper
Bragagnolo, S., Anquetil, N., Ducasse, S., Abderrahmane, S., Derras, M. (2020). Analysing Microsoft Access Projects: Building a Model in a Partially Observable Domain. In: Ben Sassi, S., Ducasse, S., Mili, H. (eds) Reuse in Emerging Software Engineering Practices. ICSR 2020. Lecture Notes in Computer Science(), vol 12541. Springer, Cham. https://doi.org/10.1007/978-3-030-64694-3_10
Download citation
DOI: https://doi.org/10.1007/978-3-030-64694-3_10
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-030-64693-6
Online ISBN: 978-3-030-64694-3
eBook Packages: Computer ScienceComputer Science (R0)