Abstract
Successful software requires constant modifications. To guarantee the continuous proper functioning of the applications, developers need to understand them well, particularly by having an accurate map of the dependencies between the parts they are modifying. However, some of these dependencies are not easily identified. For example, in an Android application, there are dependencies between the Java source code and XML parts, some of which are materialized by a generated “R” Java class. We call such dependencies external because they are introduced by some agent external to the source code. On top of the categorization of dependencies defined in the literature, we define restrictions on the External Dependencies that allow us to verify the source code and identify possible flaws. We created a common approach relying on reusable patterns to search for containers and entities that are part of such dependencies and implemented it in a prototype that we validate on two different projects from GitHub and developed using different frameworks.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Notes
- 1.
Google Web Toolkit gwtproject.org.
- 2.
Java 2 Platform, Enterprise Edition oracle.com/java/technologies/appmodel.html.
- 3.
Open Database Connectivity wikipedia.org/wiki/Open_Database_Connectivity.
- 4.
For completion, we include Yu et al. in the table although, as already said, they consider a different type of dependency.
- 5.
They call them “key”.
- 6.
Object Relational Mapping wikipedia.org/wiki/Object-relational_mapping.
- 7.
Remote Method Invocation.
- 8.
- 9.
References
Anquetil, N., et al.: Modular Moose: a new generation of software reverse engineering platform. In: Ben Sassi, S., Ducasse, S., Mili, H. (eds.) ICSR 2020. LNCS, vol. 12541, pp. 119–134. Springer, Cham (2020). https://doi.org/10.1007/978-3-030-64694-3_8
Cao, Y., et al.: EdgeMiner: automatically detecting implicit control flow transitions through the android framework. In: NDSS (2015)
Cossette, B., Walker, R.J.: DSketch: lightweight, adaptable dependency analysis. In: Proceedings of the Eighteenth ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp. 297–306 (2010)
Grichi, M., Abidi, M., Jaafar, F., Eghan, E.E., Adams, B.: On the impact of interlanguage dependencies in multilanguage systems empirical case study on Java native interface applications (JNI). IEEE Trans. Reliab. 70(1), 428–440 (2020)
Griswold, W.G., Atkinson, D.C., McCurdy, C.: Fast, flexible syntactic pattern matching and processing. In: WPC 1996. 4th Workshop on Program Comprehension, pp. 144–153. IEEE (1996)
Hecht, G., et al.: Codifying hidden dependencies in legacy J2EE applications. In: 2018 25th Asia-Pacific Software Engineering Conference (APSEC), pp. 305–314. IEEE (2018)
Kempf, M., Kleeb, R., Klenk, M., Sommerlad, P.: Cross language refactoring for eclipse plug-ins. In: Proceedings of the 2nd Workshop on Refactoring Tools, pp. 1–4 (2008)
Mayer, P., Schroeder, A.: Cross-language code analysis and refactoring. In: 2012 IEEE 12th International Working Conference on Source Code Analysis and Manipulation, pp. 94–103. IEEE (2012)
Mayer, P., Schroeder, A.: Automated multi-language artifact binding and rename refactoring between Java and DSLs Used by Java frameworks. In: Jones, R. (ed.) ECOOP 2014. LNCS, vol. 8586, pp. 437–462. Springer, Heidelberg (2014). https://doi.org/10.1007/978-3-662-44202-9_18
Mushtaq, Z., Rasool, G., Shehzad, B.: Multilingual source code analysis: a systematic literature review. IEEE Access 5, 11307–11336 (2017)
Neubauer, M., Thiemann, P.: From sequential programs to multi-tier applications by program transformation. In: Proceedings of the 32nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, pp. 221–232 (2005)
Nguyen, H.V., Nguyen, H.A., Nguyen, T.T., Nguyen, T.N.: BabelRef: detection and renaming tool for cross-language program entities in dynamic web applications. In: 2012 34th International Conference on Software Engineering (ICSE), pp. 1391–1394. IEEE (2012)
Pfeiffer, R.-H., Wąsowski, A.: Taming the confusion of languages. In: France, R.B., Kuester, J.M., Bordbar, B., Paige, R.F. (eds.) ECMFA 2011. LNCS, vol. 6698, pp. 312–328. Springer, Heidelberg (2011). https://doi.org/10.1007/978-3-642-21470-7_22
Pfeiffer, R.-H., Wąsowski, A.: TexMo: a multi-language development environment. In: Vallecillo, A., Tolvanen, J.-P., Kindler, E., Störrle, H., Kolovos, D. (eds.) ECMFA 2012. LNCS, vol. 7349, pp. 178–193. Springer, Heidelberg (2012). https://doi.org/10.1007/978-3-642-31491-9_15
Polychniatis, T., Hage, J., Jansen, S., Bouwers, E., Visser, J.: Detecting cross-language dependencies generically. In: 2013 17th European Conference on Software Maintenance and Reengineering, pp. 349–352. IEEE (2013)
Shatnawi, A., et al.: Static code analysis of multilanguage software systems. arXiv preprint arXiv:1906.00815 (2019)
Shen, B., et al.: Cross-language code coupling detection: a preliminary study on android applications. In: 2021 IEEE International Conference on Software Maintenance and Evolution (ICSME), pp. 378–388. IEEE (2021)
Soto-Valero, C., Harrand, N., Monperrus, M., Baudry, B.: A comprehensive study of bloated dependencies in the maven ecosystem. Empir. Softw. Eng. 26(3), 45 (2021)
Vanciu, R., Rajlich, V.: Hidden dependencies in software systems. In: 2010 IEEE International Conference on Software Maintenance, pp. 1–10. IEEE (2010)
Yu, Z., Rajlich, V.: Hidden dependencies in program comprehension and change propagation. In: Proceedings 9th International Workshop on Program Comprehension. IWPC 2001, pp. 293–299. IEEE (2001)
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2023 The Author(s), under exclusive license to Springer Nature Switzerland AG
About this paper
Cite this paper
Hosry, A., Anquetil, N. (2023). External Dependencies in Software Development. In: Fernandes, J.M., Travassos, G.H., Lenarduzzi, V., Li, X. (eds) Quality of Information and Communications Technology. QUATIC 2023. Communications in Computer and Information Science, vol 1871. Springer, Cham. https://doi.org/10.1007/978-3-031-43703-8_16
Download citation
DOI: https://doi.org/10.1007/978-3-031-43703-8_16
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-031-43702-1
Online ISBN: 978-3-031-43703-8
eBook Packages: Computer ScienceComputer Science (R0)