{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,3,26]],"date-time":"2025-03-26T20:04:33Z","timestamp":1743019473333,"version":"3.40.3"},"publisher-location":"Cham","reference-count":41,"publisher":"Springer International Publishing","isbn-type":[{"type":"print","value":"9783030700058"},{"type":"electronic","value":"9783030700065"}],"license":[{"start":{"date-parts":[[2021,1,1]],"date-time":"2021-01-01T00:00:00Z","timestamp":1609459200000},"content-version":"tdm","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"},{"start":{"date-parts":[[2021,1,1]],"date-time":"2021-01-01T00:00:00Z","timestamp":1609459200000},"content-version":"vor","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2021]]},"DOI":"10.1007\/978-3-030-70006-5_7","type":"book-chapter","created":{"date-parts":[[2021,2,26]],"date-time":"2021-02-26T07:03:02Z","timestamp":1614322982000},"page":"154-181","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":0,"title":["Reflections on the Design of Parallel Programming Frameworks"],"prefix":"10.1007","author":[{"given":"Virginia","family":"Niculescu","sequence":"first","affiliation":[]},{"given":"Adrian","family":"Sterca","sequence":"additional","affiliation":[]},{"given":"Fr\u00e9d\u00e9ric","family":"Loulergue","sequence":"additional","affiliation":[]}],"member":"297","published-online":{"date-parts":[[2021,2,27]]},"reference":[{"issue":"5","key":"7_CR1","doi-asserted-by":"publisher","first-page":"611","DOI":"10.1016\/S0167-739X(02)00172-3","volume":"19","author":"M Aldinucci","year":"2003","unstructured":"Aldinucci, M., Danelutto, M., Teti, P.: An advanced environment supporting structured parallel programming in Java. Future Gener. Comput. Syst. 19(5), 611\u2013626 (2003)","journal-title":"Future Gener. Comput. Syst."},{"key":"7_CR2","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"72","DOI":"10.1007\/978-3-540-74466-5_9","volume-title":"Euro-Par 2007 Parallel Processing","author":"D Caromel","year":"2007","unstructured":"Caromel, D., Leyton, M.: Fine tuning algorithmic skeletons. In: Kermarrec, A.-M., Boug\u00e9, L., Priol, T. (eds.) Euro-Par 2007. LNCS, vol. 4641, pp. 72\u201381. Springer, Heidelberg (2007). https:\/\/doi.org\/10.1007\/978-3-540-74466-5_9"},{"key":"7_CR3","volume-title":"Algorithmic Skeletons: Structured Management of Parallel Computation","author":"M Cole","year":"1991","unstructured":"Cole, M.: Algorithmic Skeletons: Structured Management of Parallel Computation. MIT Press, Cambridge (1991)"},{"issue":"90","key":"7_CR4","doi-asserted-by":"publisher","first-page":"297","DOI":"10.1090\/S0025-5718-1965-0178586-1","volume":"19","author":"J Cooley","year":"1965","unstructured":"Cooley, J., Tukey, J.: An algorithm for the machine calculation of complex fourier series. Math. Comput. 19(90), 297\u2013301 (1965)","journal-title":"Math. Comput."},{"issue":"1","key":"7_CR5","doi-asserted-by":"publisher","first-page":"149","DOI":"10.1142\/S0129626408003284","volume":"18","author":"RD Cosmo","year":"2008","unstructured":"Cosmo, R.D., Li, Z., Pelagatti, S., Weis, P.: Skeletal parallel programming with OcamlP3l 2.0. Par. Proc. Lett. 18(1), 149\u2013164 (2008)","journal-title":"Par. Proc. Lett."},{"key":"7_CR6","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"29","DOI":"10.1007\/978-3-319-15940-9_2","volume-title":"Central European Functional Programming School","author":"M Danelutto","year":"2015","unstructured":"Danelutto, M., Torquati, M.: Structured parallel programming with \u201ccore\u201d FastFlow. In: Zs\u00f3k, V., Horv\u00e1th, Z., Csat\u00f3, L. (eds.) CEFP 2013. LNCS, vol. 8606, pp. 29\u201375. Springer, Cham (2015). https:\/\/doi.org\/10.1007\/978-3-319-15940-9_2"},{"key":"7_CR7","doi-asserted-by":"crossref","unstructured":"Di Cosmo, R., Danelutto, M.: A \u201cminimal disruption\u201d skeleton experiment: seamless map & reduce embedding in OCaml. In: Proceedings of the International Conference on Computational Science, vol. 9, pp. 1837\u20131846. Elsevier (2012)","DOI":"10.1016\/j.procs.2012.04.202"},{"key":"7_CR8","doi-asserted-by":"publisher","first-page":"604","DOI":"10.1016\/j.parco.2006.06.001","volume":"32","author":"J Falcou","year":"2006","unstructured":"Falcou, J., S\u00e9rot, J., Chateau, T., Laprest\u00e9, J.T.: QUAFF: efficient C++ design for parallel skeletons. Parallel Comput. 32, 604\u2013615 (2006)","journal-title":"Parallel Comput."},{"key":"7_CR9","volume-title":"Designing and Building Parallel Programs: Concepts and Tools for Parallel Software Engineering","author":"I Foster","year":"1995","unstructured":"Foster, I.: Designing and Building Parallel Programs: Concepts and Tools for Parallel Software Engineering. Addison-Wesley Longman Publishing Co., Inc., Boston (1995)"},{"key":"7_CR10","volume-title":"Design Patterns: Elements of Reusable Object-oriented Software","author":"E Gamma","year":"1995","unstructured":"Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-oriented Software. Addison-Wesley Longman Publishing Co., Inc., Boston (1995)"},{"issue":"9\u201310","key":"7_CR11","doi-asserted-by":"publisher","first-page":"761","DOI":"10.1007\/s002360050174","volume":"36","author":"S Gorlatch","year":"2000","unstructured":"Gorlatch, S., Lengauer, C.: Abstraction and performance in the design of parallel programs: an overview of the sat approach. Acta Inf. 36(9\u201310), 761\u2013803 (2000)","journal-title":"Acta Inf."},{"key":"7_CR12","volume-title":"Introduction to Parallel Computing","author":"A Grama","year":"2003","unstructured":"Grama, A., Gupta, A., Karypis, G., Kumar, V.: Introduction to Parallel Computing. Addison Wesley, Boston (2003)"},{"key":"7_CR13","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"181","DOI":"10.1007\/10722298_11","volume-title":"Implementation of Functional Languages","author":"K Hammond","year":"2000","unstructured":"Hammond, K., Reb\u00f3n Portillo, \u00c1.J.: HaskSkel: algorithmic skeletons in haskell. In: Koopman, P., Clack, C. (eds.) IFL 1999. LNCS, vol. 1868, pp. 181\u2013198. Springer, Heidelberg (2000). https:\/\/doi.org\/10.1007\/10722298_11"},{"issue":"6","key":"7_CR14","doi-asserted-by":"publisher","first-page":"1142","DOI":"10.1007\/s10766-015-0375-4","volume":"44","author":"A Javed","year":"2016","unstructured":"Javed, A., Qamar, B., Jameel, M., Shafi, A., Carpenter, B.: Towards scalable Java HPC with hybrid and native communication devices in MPJ Express. Int. J. Parallel Prog. 44(6), 1142\u20131172 (2016). https:\/\/doi.org\/10.1007\/s10766-015-0375-4","journal-title":"Int. J. Parallel Prog."},{"issue":"7","key":"7_CR15","doi-asserted-by":"publisher","first-page":"381","DOI":"10.1016\/0950-5849(94)90060-4","volume":"36","author":"I Jelly","year":"1994","unstructured":"Jelly, I., Gorton, I.: Software engineering for parallel systems. Inf. Softw. Technol. 36(7), 381\u2013396 (1994). Software Engineering for Parallel Systems","journal-title":"Inf. Softw. Technol."},{"key":"7_CR16","doi-asserted-by":"crossref","unstructured":"Kiefer, M.A., Warzel, D., Tichy, W.: An empirical study on parallelism in modern open-source projects. In: SEPS 2015 (2015)","DOI":"10.1145\/2837476.2837481"},{"key":"7_CR17","unstructured":"Kornerup, J.: Data structures for parallel recursion. Ph.D. dissertation, University of Texas (1997)"},{"key":"7_CR18","doi-asserted-by":"crossref","unstructured":"L\u00e9gaux, J., Loulergue, F., Jubertie, S.: OSL: an algorithmic skeleton library with exceptions. In: Proceedings of the International Conference on Computational Science, pp. 260\u2013269. Elsevier, Barcelona (2013)","DOI":"10.1016\/j.procs.2013.05.189"},{"key":"7_CR19","doi-asserted-by":"crossref","unstructured":"Leyton, M., Piquer, J.M.: Skandium: multi-core programming with algorithmic skeletons. In: 18th Euromicro Conference on Parallel, Distributed and Network-based Processing (PDP), pp. 289\u2013296. IEEE Computer Society (2010)","DOI":"10.1109\/PDP.2010.26"},{"key":"7_CR20","doi-asserted-by":"crossref","unstructured":"Lopes, S.F., Afonso, F., Tavares, A., Monteiro, J.: Framework characteristics - a starting point for addressing reuse difficulties. In: 2009 Fourth International Conference on Software Engineering Advances, pp. 256\u2013264 (2009)","DOI":"10.1109\/ICSEA.2009.46"},{"key":"7_CR21","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"183","DOI":"10.1007\/978-3-030-38991-8_13","volume-title":"Algorithms and Architectures for Parallel Processing","author":"F Loulergue","year":"2020","unstructured":"Loulergue, F., Philippe, J.: Automatic optimization of python skeletal parallel programs. In: Wen, S., Zomaya, A., Yang, L.T. (eds.) ICA3PP 2019. LNCS, vol. 11944, pp. 183\u2013197. Springer, Cham (2020). https:\/\/doi.org\/10.1007\/978-3-030-38991-8_13"},{"key":"7_CR22","unstructured":"Marlow, S. (ed.): Haskell 2010 language report (2010). https:\/\/www.haskell.org\/definition\/haskell2010.pdf"},{"key":"7_CR23","series-title":"Software Patterns Series","volume-title":"A Pattern Language for Parallel Programming","author":"BL Massingill","year":"2004","unstructured":"Massingill, B.L., Mattson, T.G., Sanders, B.A.: A Pattern Language for Parallel Programming. Software Patterns Series. Addison Wesley, Boston (2004)"},{"issue":"11","key":"7_CR24","doi-asserted-by":"publisher","first-page":"53","DOI":"10.1145\/2018396.2018413","volume":"54","author":"Y Minsky","year":"2011","unstructured":"Minsky, Y.: OCaml for the masses. Commun. ACM 54(11), 53\u201358 (2011)","journal-title":"Commun. ACM"},{"issue":"6","key":"7_CR25","doi-asserted-by":"publisher","first-page":"1737","DOI":"10.1145\/197320.197356","volume":"16","author":"J Misra","year":"1994","unstructured":"Misra, J.: Powerlist: a structure for parallel recursion. ACM Trans. Program. Lang. Syst. 16(6), 1737\u20131767 (1994)","journal-title":"ACM Trans. Program. Lang. Syst."},{"key":"7_CR26","first-page":"159","volume":"14","author":"V Niculescu","year":"2012","unstructured":"Niculescu, V.: Pares - a model for parallel recursive programs. Roman. J. Inf. Sci. Technol. (ROMJIST) 14, 159\u2013182 (2012)","journal-title":"Roman. J. Inf. Sci. Technol. (ROMJIST)"},{"key":"7_CR27","doi-asserted-by":"crossref","unstructured":"Niculescu, V., Bufnea, D., Sterca, A.: MPI scaling up for powerlist based parallel programs. In: 27th Euromicro International Conference on Parallel, Distributed and Network-Based Processing, PDP 2019, Pavia, Italy, 13\u201315 February 2019, pp. 199\u2013204. IEEE (2019)","DOI":"10.1109\/EMPDP.2019.8671597"},{"key":"7_CR28","doi-asserted-by":"crossref","unstructured":"Niculescu., V., Loulergue., F., Bufnea., D., Sterca., A.: Pattern-driven design of a multiparadigm parallel programming framework. In: Proceedings of the 15th International Conference on Evaluation of Novel Approaches to Software Engineering - Volume 1: ENASE, pp. 50\u201361. INSTICC, SciTePress (2020)","DOI":"10.5220\/0009344100500061"},{"key":"7_CR29","doi-asserted-by":"crossref","unstructured":"Niculescu, V., Loulergue., F.: Transforming powerlist based divide&conquer programs for an improved execution model. J. Supercomput. 76 (2020)","DOI":"10.1007\/s11227-019-02820-x"},{"key":"7_CR30","doi-asserted-by":"crossref","unstructured":"Niculescu, V., Loulergue, F., Bufnea, D., Sterca, A.: A Java framework for high level parallel programming using powerlists. In: 18th International Conference on Parallel and Distributed Computing, Applications and Technologies, PDCAT 2017, Taipei, Taiwan, 18\u201320 December 2017, pp. 255\u2013262. IEEE (2017)","DOI":"10.1109\/PDCAT.2017.00049"},{"key":"7_CR31","unstructured":"Pankratius, V.: Software engineering in the era of parallelism. In: KIT-Nachwuchswissenschaftler-Symposium (2010)"},{"key":"7_CR32","unstructured":"Pelagatti, S.: Structured Development of Parallel Programs. Taylor & Francis (1998)"},{"key":"7_CR33","doi-asserted-by":"crossref","unstructured":"Philippe, J., Loulergue, F.: PySke: algorithmic skeletons for Python. In: International Conference on High Performance Computing and Simulation (HPCS), pp. 40\u201347. IEEE (2019)","DOI":"10.1109\/HPCS48598.2019.9188151"},{"key":"7_CR34","volume-title":"Software Engineering: A Practitioner\u2019s Approach","author":"R Pressman","year":"2009","unstructured":"Pressman, R.: Software Engineering: A Practitioner\u2019s Approach, 7th edn. McGraw-Hill Science, New York (2009)","edition":"7"},{"key":"7_CR35","doi-asserted-by":"crossref","unstructured":"Qamar, B., Javed, A., Jameel, M., Shafi, A., Carpenter, B.: Design and implementation of hybrid and native communication devices for Java HPC. In: Proceedings of ICCS 2014, Cairns, Queensland, Australia, 10\u201312 June 2014, pp. 184\u2013197 (2014)","DOI":"10.1016\/j.procs.2014.05.017"},{"issue":"2","key":"7_CR36","doi-asserted-by":"publisher","first-page":"123","DOI":"10.1145\/280277.280278","volume":"30","author":"DB Skillicorn","year":"1998","unstructured":"Skillicorn, D.B., Talia, D.: Models and languages for parallel computation. ACM Comput. Surv. 30(2), 123\u2013169 (1998)","journal-title":"ACM Comput. Surv."},{"key":"7_CR37","doi-asserted-by":"publisher","first-page":"1","DOI":"10.1016\/j.parco.2016.08.004","volume":"59","author":"O Vega-Gisbert","year":"2016","unstructured":"Vega-Gisbert, O., Rom\u00e1n, J.E., Squyres, J.M.: Design and implementation of Java bindings in Open MPI. Parallel Comput. 59, 1\u201320 (2016)","journal-title":"Parallel Comput."},{"key":"7_CR38","unstructured":"Veldhuizen, T.: Techniques for scientific C++. Computer science technical report 542, Indiana University (2000)"},{"key":"7_CR39","unstructured":"X***: MPI: A message-passing interface standard. https:\/\/www.mpi-forum.org\/docs\/mpi-3.1\/mpi31-report.pdf. Accessed 20 Nov 2019"},{"key":"7_CR40","unstructured":"X***: Oracle: The Java tutorials: ForkJoinPool. https:\/\/docs.oracle.com\/javase\/tutorial\/essential\/concurrency\/forkjoin.html. Accessed 20 Nov 2019"},{"key":"7_CR41","unstructured":"X***: Intel MPI library developer reference for Linux OS: Java bindings for MPI-2 routines (2019). https:\/\/software.intel.com\/en-us\/mpi-developer-reference-linux-java-bindings-for-mpi-2-routines. Accessed 20 Nov 2019"}],"container-title":["Communications in Computer and Information Science","Evaluation of Novel Approaches to Software Engineering"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-70006-5_7","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2021,4,25]],"date-time":"2021-04-25T00:28:08Z","timestamp":1619310488000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/978-3-030-70006-5_7"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021]]},"ISBN":["9783030700058","9783030700065"],"references-count":41,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-70006-5_7","relation":{},"ISSN":["1865-0929","1865-0937"],"issn-type":[{"type":"print","value":"1865-0929"},{"type":"electronic","value":"1865-0937"}],"subject":[],"published":{"date-parts":[[2021]]},"assertion":[{"value":"27 February 2021","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"ENASE","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"International Conference on Evaluation of Novel Approaches to Software Engineering","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Prague","order":3,"name":"conference_city","label":"Conference City","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Czech Republic","order":4,"name":"conference_country","label":"Conference Country","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2020","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"4 May 2020","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"5 May 2020","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"15","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"enase2020","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"http:\/\/www.enase.org\/?y=2020","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"Double-blind","order":1,"name":"type","label":"Type","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"PRIMORIS","order":2,"name":"conference_management_system","label":"Conference Management System","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"96","order":3,"name":"number_of_submissions_sent_for_review","label":"Number of Submissions Sent for Review","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"19","order":4,"name":"number_of_full_papers_accepted","label":"Number of Full Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"0","order":5,"name":"number_of_short_papers_accepted","label":"Number of Short Papers Accepted","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"20% - The value is computed by the equation \"Number of Full Papers Accepted \/ Number of Submissions Sent for Review * 100\" and then rounded to a whole number.","order":6,"name":"acceptance_rate_of_full_papers","label":"Acceptance Rate of Full Papers","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"3","order":7,"name":"average_number_of_reviews_per_paper","label":"Average Number of Reviews per Paper","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"3","order":8,"name":"average_number_of_papers_per_reviewer","label":"Average Number of Papers per Reviewer","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"No","order":9,"name":"external_reviewers_involved","label":"External Reviewers Involved","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}},{"value":"Due to the COVID-19 pandemic the conference was held online.","order":10,"name":"additional_info_on_review_process","label":"Additional Info on Review Process","group":{"name":"ConfEventPeerReviewInformation","label":"Peer Review Information (provided by the conference organizers)"}}]}}