{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,3,28]],"date-time":"2025-03-28T03:05:58Z","timestamp":1743131158746,"version":"3.40.3"},"publisher-location":"Cham","reference-count":29,"publisher":"Springer International Publishing","isbn-type":[{"type":"print","value":"9783030860615"},{"type":"electronic","value":"9783030860622"}],"license":[{"start":{"date-parts":[[2021,1,1]],"date-time":"2021-01-01T00:00:00Z","timestamp":1609459200000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"},{"start":{"date-parts":[[2021,9,21]],"date-time":"2021-09-21T00:00:00Z","timestamp":1632182400000},"content-version":"vor","delay-in-days":263,"URL":"https:\/\/creativecommons.org\/licenses\/by\/4.0"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":[],"published-print":{"date-parts":[[2021]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>Graphical actor-based models provide an abstract overview of the flow of data in a system. They are well-established for the model-driven engineering<jats:sc>(MDE)<\/jats:sc>of complex software systems and are supported by numerous commercial and academic tools, such as Simulink, LabVIEW or Ptolemy. In<jats:sc>MDE<\/jats:sc>, engineers concentrate on constructing and simulating such models, before application code (or at least a large fraction thereof) is synthesized automatically. However, a significant fraction of today\u2019s legacy system has been coded directly, often using the C language. High-level models that give a quick, accurate overview of how components interact are often out of date or do not exist. This makes it challenging to maintain or extend legacy software, in particular for new team members.<\/jats:p><jats:p>To address this problem, we here propose to reverse the classic synthesis path of<jats:sc>MDE<\/jats:sc>and to synthesize actor-based dataflow models automatically from source code. Here functions in the code get synthesized into nodes that represent actors manipulating data. Second, we propose to harness the<jats:italic>modeling-pragmatic<\/jats:italic>approach, which considers visual models not as static artefacts, but allows interactive, flexible views that also link back to textual descriptions. Thus we propose to synthesize actor models that can vary in level of detail and that allow navigation in the source code. To validate and evaluate our proposals, we implemented these concepts for C analysis in the open source, Eclipse-based<jats:sc>KIELER<\/jats:sc>project and conducted a small survey.<\/jats:p>","DOI":"10.1007\/978-3-030-86062-2_37","type":"book-chapter","created":{"date-parts":[[2021,9,21]],"date-time":"2021-09-21T02:17:10Z","timestamp":1632190630000},"page":"361-377","update-policy":"https:\/\/doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":1,"title":["Extracting Interactive Actor-Based Dataflow Models from Legacy C Code"],"prefix":"10.1007","author":[{"ORCID":"https:\/\/orcid.org\/0000-0001-6351-5413","authenticated-orcid":false,"given":"Niklas","family":"Rentz","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0003-2470-0880","authenticated-orcid":false,"given":"Steven","family":"Smyth","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Lewe","family":"Andersen","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"ORCID":"https:\/\/orcid.org\/0000-0001-5691-1215","authenticated-orcid":false,"given":"Reinhard","family":"von Hanxleden","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2021,9,21]]},"reference":[{"key":"37_CR1","doi-asserted-by":"crossref","unstructured":"Amellal, S., Kaminska, B.: Scheduling of a control and data flow graph. In: 1993 IEEE International Symposium on Circuits and Systems, vol. 3, pp. 1666\u20131669. IEEE (1993)","DOI":"10.1109\/ISCAS.1993.394061"},{"key":"37_CR2","unstructured":"Andersen, L.: Dataflow and Statemachine Extraction from C\/C++ Code. Master thesis, Kiel University, Department of Computer Science (December 2019). https:\/\/rtsys.informatik.uni-kiel.de\/~biblio\/downloads\/theses\/lan-mt.pdf"},{"issue":"2","key":"37_CR3","doi-asserted-by":"publisher","first-page":"118","DOI":"10.1016\/0743-7315(91)90016-3","volume":"12","author":"M Beck","year":"1991","unstructured":"Beck, M., Johnson, R., Pingali, K.: From control flow to dataflow. J. Parallel Distrib. Comput. 12(2), 118\u2013129 (1991)","journal-title":"J. Parallel Distrib. Comput."},{"issue":"11","key":"37_CR4","first-page":"26","volume":"7","author":"C Cook","year":"1994","unstructured":"Cook, C., Visconti, M.: Documentation is important. CrossTalk 7(11), 26\u201330 (1994)","journal-title":"CrossTalk"},{"issue":"1","key":"37_CR5","doi-asserted-by":"publisher","first-page":"127","DOI":"10.1109\/JPROC.2002.805829","volume":"91","author":"J Eker","year":"2003","unstructured":"Eker, J., et al.: Taming heterogeneity-the Ptolemy approach. Proc. IEEE 91(1), 127\u2013144 (2003)","journal-title":"Proc. IEEE"},{"key":"37_CR6","doi-asserted-by":"crossref","unstructured":"Forward, A., Lethbridge, T.C.: The relevance of software documentation, tools and technologies: a survey. In: Proceedings of the 2002 ACM Symposium on Document Engineering, DocEng 2002, pp. 26\u201333. Association for Computing Machinery, New York (2002)","DOI":"10.1145\/585058.585065"},{"key":"37_CR7","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"116","DOI":"10.1007\/978-3-642-12566-9_7","volume-title":"Foundations of Computer Software. Future Trends and Techniques for Development","author":"H Fuhrmann","year":"2010","unstructured":"Fuhrmann, H., von Hanxleden, R.: On the pragmatics of model-based design. In: Choppy, C., Sokolsky, O. (eds.) Monterey Workshop 2008. LNCS, vol. 6028, pp. 116\u2013140. Springer, Heidelberg (2010). https:\/\/doi.org\/10.1007\/978-3-642-12566-9_7"},{"key":"37_CR8","unstructured":"G\u00e9vay, G.E., Rabl, T., Bre\u00df, S., Madai-Tahy, L., Markl, V.: Labyrinth: compiling imperative control flow to parallel dataflows. CoRR (2018). http:\/\/arxiv.org\/abs\/1809.06845"},{"key":"37_CR9","doi-asserted-by":"crossref","unstructured":"von Hanxleden, R., et al.: SCCharts: Sequentially Constructive Statecharts for safety-critical applications. In: Proceedings of ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2014), pp. 372\u2013383. ACM, Edinburgh (June 2014)","DOI":"10.1145\/2594291.2594310"},{"key":"37_CR10","volume-title":"Flow Analysis of Computer Programs","author":"MS Hecht","year":"1977","unstructured":"Hecht, M.S.: Flow Analysis of Computer Programs. Elsevier Science Inc., New York (1977)"},{"key":"37_CR11","doi-asserted-by":"crossref","unstructured":"Ishio, T., Etsuda, S., Inoue, K.: A lightweight visualization of interprocedural data-flow paths for source code reading. In: Beyer, D., van Deursen, A., Godfrey, M.W. (eds.) IEEE 20th International Conference on Program Comprehension (ICPC), pp. 37\u201346. IEEE, Passau (June 2012)","DOI":"10.1109\/ICPC.2012.6240506"},{"key":"37_CR12","doi-asserted-by":"crossref","unstructured":"Korshunova, E., Petkovi\u0107, M., van den Brand, M.G.J., Mousavi, M.R.: CPP2XMI: reverse engineering of UML class, sequence, and activity diagrams from C++ source code. In: 13th Working Conference on Reverse Engineering (WCRE 2006), pp. 297\u2013298. IEEE Computer Society, Benevento (October 2006)","DOI":"10.1109\/WCRE.2006.21"},{"issue":"3","key":"37_CR13","doi-asserted-by":"publisher","first-page":"231","DOI":"10.1142\/S0218126603000751","volume":"12","author":"EA Lee","year":"2003","unstructured":"Lee, E.A., Neuendorffer, S., Wirthlin, M.J.: Actor-oriented design of embedded hardware and software systems. J. Circuits Syst. Comput. (JCSC) 12(3), 231\u2013260 (2003)","journal-title":"J. Circuits Syst. Comput. (JCSC)"},{"issue":"6","key":"37_CR14","doi-asserted-by":"publisher","first-page":"35","DOI":"10.1109\/MS.2003.1241364","volume":"20","author":"TC Lethbridge","year":"2003","unstructured":"Lethbridge, T.C., Singer, J., Forward, A.: How software engineers use documentation: the state of the practice. IEEE Softw. 20(6), 35\u201339 (2003)","journal-title":"IEEE Softw."},{"key":"37_CR15","doi-asserted-by":"crossref","unstructured":"Meyerovich, L.A., Rabkin, A.S.: Empirical analysis of programming language adoption. In: Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages & Applications (OOPSLA 2013), pp. 1\u201318. Association for Computing Machinery, New York (2013)","DOI":"10.1145\/2509136.2509515"},{"key":"37_CR16","doi-asserted-by":"crossref","unstructured":"Mihancea, P.F.: Towards a reverse engineering dataflow analysis framework for Java and C++. In: Negru, V., Jebelean, T., Petcu, D., Zaharie, D. (eds.) 2008 10th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing (SYNASC), pp. 285\u2013288. IEEE Computer Society, Timisoara (September 2008)","DOI":"10.1109\/SYNASC.2008.7"},{"key":"37_CR17","volume-title":"Program Flow Analysis: Theory and Applications","author":"SS Muchnick","year":"1981","unstructured":"Muchnick, S.S., Jones, N.D.: Program Flow Analysis: Theory and Applications. Prentice-Hall Inc., Englewood Cliffs (1981)"},{"key":"37_CR18","doi-asserted-by":"crossref","unstructured":"Namballa, R., Ranganathan, N., Ejnioui, A.: Control and data flow graph extraction for high-level synthesis. In: IEEE Computer Society Annual Symposium on VLSI, pp. 187\u2013192. IEEE (2004)","DOI":"10.1109\/ISVLSI.2004.1339528"},{"key":"37_CR19","doi-asserted-by":"publisher","unstructured":"Parnas, D.L.: Precise documentation: the key to better software. In: Nanz, S. (ed.) The Future of Software Engineering. Springer, Heidelberg (2011). https:\/\/doi.org\/10.1007\/978-3-642-15187-3_8","DOI":"10.1007\/978-3-642-15187-3_8"},{"issue":"6","key":"37_CR20","doi-asserted-by":"publisher","first-page":"33","DOI":"10.1145\/203241.203251","volume":"38","author":"M Petre","year":"1995","unstructured":"Petre, M.: Why looking isn\u2019t always seeing: readership skills and graphical programming. Commun. ACM 38(6), 33\u201344 (1995)","journal-title":"Commun. ACM"},{"issue":"20","key":"37_CR21","first-page":"341","volume":"35","author":"S Rugaber","year":"1995","unstructured":"Rugaber, S.: Program comprehension. Encycl. Comput. Sci. Technol. 35(20), 341\u2013368 (1995)","journal-title":"Encycl. Comput. Sci. Technol."},{"key":"37_CR22","doi-asserted-by":"crossref","unstructured":"Schneider, C., Sp\u00f6nemann, M., von Hanxleden, R.: Just model! - Putting automatic synthesis of node-link-diagrams into practice. In: Proceedings of the IEEE Symposium on Visual Languages and Human-Centric Computing (VL\/HCC 2013), pp. 75\u201382. IEEE, San Jose (September 2013)","DOI":"10.1109\/VLHCC.2013.6645246"},{"issue":"2","key":"37_CR23","doi-asserted-by":"publisher","first-page":"89","DOI":"10.1016\/j.jvlc.2013.11.005","volume":"25","author":"CD Schulze","year":"2014","unstructured":"Schulze, C.D., Sp\u00f6nemann, M., von Hanxleden, R.: Drawing layered graphs with port constraints. J. Vis. Lang. Comput. 25(2), 89\u2013106 (2014). Special Issue on Diagram Aesthetics and Layout","journal-title":"J. Vis. Lang. Comput."},{"key":"37_CR24","unstructured":"Singer, J.: Practices of software maintenance. In: Proceedings of the International Conference on Software Maintenance (Cat. No. 98CB36272), pp. 139\u2013145. IEEE (1998)"},{"key":"37_CR25","unstructured":"Smyth, S., Lenga, S., von Hanxleden, R.: Model extraction for legacy C programs with SCCharts. In: Proceedings of the 7th International Symposium on Leveraging Applications of Formal Methods, Verification and Validation (ISoLA 2016), Doctoral Symposium. Electronic Communications of the EASST, vol.\u00a074. Corfu, Greece (October 2016). poster"},{"key":"37_CR26","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"246","DOI":"10.1007\/978-3-030-03418-4_15","volume-title":"Leveraging Applications of Formal Methods, Verification and Validation. Modeling","author":"S Smyth","year":"2018","unstructured":"Smyth, S., Schulz-Rosengarten, A., von Hanxleden, R.: Towards interactive compilation models. In: Margaria, T., Steffen, B. (eds.) ISoLA 2018, Part I. LNCS, vol. 11244, pp. 246\u2013260. Springer, Cham (2018). https:\/\/doi.org\/10.1007\/978-3-030-03418-4_15"},{"key":"37_CR27","unstructured":"Sutton, A., Maletic, J.I.: Mappings for accurately reverse engineering UML class models from C++. In: 12th Working Conference on Reverse Engineering (WCRE 2005), pp. 175\u2013184. IEEE Computer Society, Pittsburgh (2005)"},{"key":"37_CR28","doi-asserted-by":"publisher","DOI":"10.1007\/b102522","volume-title":"Reverse Engineering of Object Oriented Code","author":"P Tonella","year":"2005","unstructured":"Tonella, P., Potrich, A.: Reverse Engineering of Object Oriented Code. Springer Science+Business Media Inc., New York (2005). https:\/\/doi.org\/10.1007\/b102522"},{"key":"37_CR29","series-title":"Lecture Notes in Computer Science","doi-asserted-by":"publisher","first-page":"504","DOI":"10.1007\/978-3-319-95246-8_28","volume-title":"Principles of Modeling","author":"N Wechselberg","year":"2018","unstructured":"Wechselberg, N., Schulz-Rosengarten, A., Smyth, S., von Hanxleden, R.: Augmenting state models with data flow. In: Lohstroh, M., Derler, P., Sirjani, M. (eds.) Principles of Modeling. LNCS, vol. 10760, pp. 504\u2013523. Springer, Cham (2018). https:\/\/doi.org\/10.1007\/978-3-319-95246-8_28"}],"container-title":["Lecture Notes in Computer Science","Diagrammatic Representation and Inference"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/978-3-030-86062-2_37","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,9,8]],"date-time":"2024-09-08T16:28:43Z","timestamp":1725812923000},"score":1,"resource":{"primary":{"URL":"https:\/\/link.springer.com\/10.1007\/978-3-030-86062-2_37"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021]]},"ISBN":["9783030860615","9783030860622"],"references-count":29,"URL":"https:\/\/doi.org\/10.1007\/978-3-030-86062-2_37","relation":{},"ISSN":["0302-9743","1611-3349"],"issn-type":[{"type":"print","value":"0302-9743"},{"type":"electronic","value":"1611-3349"}],"subject":[],"published":{"date-parts":[[2021]]},"assertion":[{"value":"21 September 2021","order":1,"name":"first_online","label":"First Online","group":{"name":"ChapterHistory","label":"Chapter History"}},{"value":"Diagrams","order":1,"name":"conference_acronym","label":"Conference Acronym","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"International Conference on Theory and Application of Diagrams","order":2,"name":"conference_name","label":"Conference Name","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"2021","order":5,"name":"conference_year","label":"Conference Year","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"28 September 2021","order":7,"name":"conference_start_date","label":"Conference Start Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"30 September 2021","order":8,"name":"conference_end_date","label":"Conference End Date","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"12","order":9,"name":"conference_number","label":"Conference Number","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"diagrams2021","order":10,"name":"conference_id","label":"Conference ID","group":{"name":"ConferenceInfo","label":"Conference Information"}},{"value":"http:\/\/www.diagrams-conference.org\/2021\/","order":11,"name":"conference_url","label":"Conference URL","group":{"name":"ConferenceInfo","label":"Conference Information"}}]}}