Skip to main content

External Dependencies in Software Development

  • Conference paper
  • First Online:
Quality of Information and Communications Technology (QUATIC 2023)

Part of the book series: Communications in Computer and Information Science ((CCIS,volume 1871))

  • 193 Accesses

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 84.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 109.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 1.

    Google Web Toolkit gwtproject.org.

  2. 2.

    Java 2 Platform, Enterprise Edition oracle.com/java/technologies/appmodel.html.

  3. 3.

    Open Database Connectivity wikipedia.org/wiki/Open_Database_Connectivity.

  4. 4.

    For completion, we include Yu et al. in the table although, as already said, they consider a different type of dependency.

  5. 5.

    They call them “key”.

  6. 6.

    Object Relational Mapping wikipedia.org/wiki/Object-relational_mapping.

  7. 7.

    Remote Method Invocation.

  8. 8.

    https://github.com/traccar/traccar-web/tree/legacy.

  9. 9.

    https://github.com/redhawk96/UniScore.

References

  1. 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

    Chapter  Google Scholar 

  2. Cao, Y., et al.: EdgeMiner: automatically detecting implicit control flow transitions through the android framework. In: NDSS (2015)

    Google Scholar 

  3. 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)

    Google Scholar 

  4. 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)

    Article  Google Scholar 

  5. 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)

    Google Scholar 

  6. 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)

    Google Scholar 

  7. 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)

    Google Scholar 

  8. 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)

    Google Scholar 

  9. 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

    Chapter  Google Scholar 

  10. Mushtaq, Z., Rasool, G., Shehzad, B.: Multilingual source code analysis: a systematic literature review. IEEE Access 5, 11307–11336 (2017)

    Article  Google Scholar 

  11. 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)

    Google Scholar 

  12. 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)

    Google Scholar 

  13. 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

    Chapter  Google Scholar 

  14. 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

    Chapter  Google Scholar 

  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)

    Google Scholar 

  16. Shatnawi, A., et al.: Static code analysis of multilanguage software systems. arXiv preprint arXiv:1906.00815 (2019)

  17. 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)

    Google Scholar 

  18. 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)

    Article  Google Scholar 

  19. Vanciu, R., Rajlich, V.: Hidden dependencies in software systems. In: 2010 IEEE International Conference on Software Maintenance, pp. 1–10. IEEE (2010)

    Google Scholar 

  20. 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)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Aless Hosry .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2023 The Author(s), under exclusive license to Springer Nature Switzerland AG

About this paper

Check for updates. Verify currency and authenticity via CrossMark

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)

Publish with us

Policies and ethics