FQL: An Extensible Feature Query Language and Toolkit on Searching Software Characteristics for HPC Applications

  • Weijian Zheng
  • Dali WangEmail author
  • Fengguang Song
Conference paper
Part of the Communications in Computer and Information Science book series (CCIS, volume 1190)


The amount of large-scale scientific computing software is dramatically increasing. In this work, we designed a new query language, named Feature Query Language (FQL), to collect and extract HPC-related software features or metadata from a quick static code analysis. We also designed and implemented an FQL-based toolkit to automatically detect and present software features using an extensible query repository. A number of large-scale, high performance computing (HPC) scientific applications have been studied in the paper with the FQL toolkit to demonstrate the HPC-related feature extraction and information/metadata collection. Different from the existing static software analysis and refactoring tools which focus on software debug, development and code transformation, the FQL toolkit is simpler, significantly lightweight and strives to collect various and diverse software metadata with ease and rapidly.


Feature Query Language Static code analysis High-performance computing 


  1. 1.
    Bader, D., et al.: Accelerated climate modeling for energy (ACME) project strategy and initial implementation plan (2014)Google Scholar
  2. 2.
    Baxter, I.D., Pidgeon, C., Mehlich, M.: DMS®: program transformations for practical scalable software evolution. In: Proceedings of the 26th International Conference on Software Engineering, pp. 625–634. IEEE Computer Society (2004)Google Scholar
  3. 3.
    Beyer, D., Lewerentz, C.: CrocoPat: efficient pattern analysis in object-oriented programs. In: 2003 11th IEEE International Workshop on Program Comprehension, pp. 294–295. IEEE (2003)Google Scholar
  4. 4.
    Borovanskỳ, P., Kirchner, C., Kirchner, H., Moreau, P.E., Vittek, M.: ELAN: a logical framework based on computational systems. Electron. Notes Theor. Comput. Sci. 4, 35–50 (1996)CrossRefGoogle Scholar
  5. 5.
    Bush, W.R., Pincus, J.D., Sielaff, D.J.: A static analyzer for finding dynamic programming errors. Softw. Pract. Exp. 30(7), 775–802 (2000)CrossRefGoogle Scholar
  6. 6.
    Cohen, T., Gil, J.Y., Maman, I.: JTL: the Java tools language. In: ACM SIGPLAN Notices, vol. 41, pp. 89–108. ACM (2006)Google Scholar
  7. 7.
    Collard, M.L., Decker, M.J., Maletic, J.I.: srcML: an infrastructure for the exploration, analysis, and manipulation of source code: a tool demonstration. In: 2013 IEEE International Conference on Software Maintenance, pp. 516–519. IEEE (2013)Google Scholar
  8. 8.
    Cook, J., Finkel, H., Junghans, C., McCorquodale, P., Pavel, R., Richards, D.: Proxy app prospectus for ECP application development projects. Technical report, Lawrence Livermore National Lab (LLNL), Livermore, CA, United States (2017)Google Scholar
  9. 9.
    Cordy, J.R., Dean, T.R., Malton, A.J., Schneider, K.A.: Software engineering by source transformation-experience with TXL. In: Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation, pp. 168–178. IEEE (2001)Google Scholar
  10. 10.
    Dagum, L., Menon, R.: OpenMP: an industry standard API for shared-memory programming. IEEE Comput. Sci. Eng. 5(1), 46–55 (1998)CrossRefGoogle Scholar
  11. 11.
    Date, C.J., Darwen, H.: A Guide to the SQL Standard: A User’s Guide to the Standard Relational Language SQL. Addison-Wesley, Reading (1989)Google Scholar
  12. 12.
    de Moor, O., et al.: QL: object-oriented queries made easy. In: Lämmel, R., Visser, J., Saraiva, J. (eds.) GTTSE 2007. LNCS, vol. 5235, pp. 78–133. Springer, Heidelberg (2008).
  13. 13.
    De Roover, C., Noguera, C., Kellens, A., Jonckers, V.: The soul tool suite for querying programs in symbiosis with eclipse. In: Proceedings of the 9th International Conference on Principles and Practice of Programming in Java, pp. 71–80. ACM (2011)Google Scholar
  14. 14.
    Dor, N., Rodeh, M., Sagiv, M.: CSSV: towards a realistic tool for statically detecting all buer overows in C. In: ACM Sigplan Notices, vol. 38, pp. 155–167. ACM (2003)Google Scholar
  15. 15.
  16. 16.
    Gobeille, R.: The FOSSology project. In: Proceedings of the 2008 International Working Conference on Mining Software Repositories, pp. 47–50. ACM (2008)Google Scholar
  17. 17.
    Kim, J., et al.: QMCPACK simulation suite (2014)Google Scholar
  18. 18.
    Klint, P., Van Der Storm, T., Vinju, J.: RASCAL: a domain specific language for source code analysis and manipulation. In: 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation, SCAM 2009, pp. 168–177. IEEE (2009)Google Scholar
  19. 19.
    Exascale Simulation for Additive Manufacturing (2017).
  20. 20.
    Maxwell, R.M., et al.: ParFlow user’s manual. International Ground Water Modeling Center Report GWMI 1(2009), p. 129 (2009)Google Scholar
  21. 21.
    Mernik, M., Heering, J., Sloane, A.M.: When and how to develop domain-specific languages. ACM Comput. Surv. (CSUR) 37(4), 316–344 (2005)CrossRefGoogle Scholar
  22. 22.
    Padioleau, Y., Lawall, J., Hansen, R.R., Muller, G.: Documenting and automating collateral evolutions in Linux device drivers. In: ACM SIGOPS Operating Systems Review, vol. 42, pp. 247–260. ACM (2008)Google Scholar
  23. 23.
    Rademaker, P.: Binary relational querying for structural source code analysis. University Utrecht, Netherlands (2008)Google Scholar
  24. 24.
  25. 25.
  26. 26.
  27. 27.
  28. 28.
  29. 29.
    Van Deursen, A., Klint, P., Visser, J.: Domain-specific languages: an annotated bibliography. ACM SIGPLAN Not. 35(6), 26–36 (2000)CrossRefGoogle Scholar
  30. 30.
    Verbaere, M., Hajiyev, E., De Moor, O.: Improve software quality with SemmleCode: an eclipse plugin for semantic code search. In: Companion to the 22nd ACM SIGPLAN Conference on Object-Oriented Programming Systems and Applications Companion, pp. 880–881. ACM (2007)Google Scholar
  31. 31.
    Visser, E.: Stratego: a language for program transformation based on rewriting strategies system description of stratego 0.5. In: Middeldorp, A. (ed.) RTA 2001. LNCS, vol. 2051, pp. 357–361. Springer, Heidelberg (2001). Scholar
  32. 32.
    Wang, D., Zheng, W., Song, F.: Application software analytics toolkit for facilitating the understanding, componentization, and refactoring of large-scale scientific models. Technical report, Oak Ridge National Lab (ORNL), Oak Ridge, TN, United States (2018)Google Scholar
  33. 33.
    Wilde, N., Huitt, R., Huitt, S.: Dependency analysis tools: reusable components for software maintenance. In: Proceedings. Conference on Software Maintenance, pp. 126–131. IEEE (1989)Google Scholar
  34. 34.
    Zheng, W., Wang, D., Song, F.: XScan: an integrated tool for understanding open source community-based scientific code. In: Rodrigues, J.M.F., et al. (eds.) ICCS 2019. LNCS, vol. 11536, pp. 226–237. Springer, Cham (2019). Scholar
  35. 35.
    Zitser, M.: Securing software: an evaluation of static source code analyzers. Ph.D. thesis, Massachusetts Institute of Technology (2003)Google Scholar

Copyright information

© This is a U.S. government work and not under copyright protection in the U.S.; foreign copyright protection may apply 2020

Authors and Affiliations

  1. 1.Indiana University-Purdue UniversityIndianapolisUSA
  2. 2.Oak Ridge National LaboratoryOak RidgeUSA

Personalised recommendations