{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2022,3,29]],"date-time":"2022-03-29T06:44:21Z","timestamp":1648536261537},"reference-count":29,"publisher":"Springer Science and Business Media LLC","issue":"1","license":[{"start":{"date-parts":[[2012,9,5]],"date-time":"2012-09-05T00:00:00Z","timestamp":1346803200000},"content-version":"tdm","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/2.0"},{"start":{"date-parts":[[2012,9,5]],"date-time":"2012-09-05T00:00:00Z","timestamp":1346803200000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/creativecommons.org\/licenses\/by\/2.0"}],"content-domain":{"domain":["link.springer.com"],"crossmark-restriction":false},"short-container-title":["J Braz Comput Soc"],"published-print":{"date-parts":[[2013,3]]},"abstract":"<jats:title>Abstract<\/jats:title>\n          <jats:p>Reverse engineering techniques are usually applied to extract concrete architecture models. However, these techniques usually extract models that just reveal static architectures, such as class diagrams. On the other hand, the extraction of dynamic architecture models is particularly useful for an initial understanding on how a system works or to evaluate the impact of possible maintenance tasks. This paper describes an approach to extract hierarchical object graphs (OGs) from running systems. The proposed graphs have the following distinguishing features: (a) they support the summarization of objects in domains, (b) they support the complete spectrum of relations and entities that are common in object-oriented systems, (c) they support multithreading systems, and (d) they include a language to alert about expected (or unexpected) relations between the extracted objects. We also describe the design and implementation of a tool for visualizing the proposed OGs. Finally, we provide two case studies. The first study shows how our approach can contribute to understand the running architecture of two systems (myAppointments and JHotDraw). The second study illustrates how OGs can help to locate defective software components in the JHotDraw system.<\/jats:p>","DOI":"10.1007\/s13173-012-0083-5","type":"journal-article","created":{"date-parts":[[2012,9,4]],"date-time":"2012-09-04T17:03:21Z","timestamp":1346778201000},"page":"15-27","update-policy":"http:\/\/dx.doi.org\/10.1007\/springer_crossmark_policy","source":"Crossref","is-referenced-by-count":1,"title":["On-the-fly extraction of hierarchical object graphs"],"prefix":"10.1007","volume":"19","author":[{"given":"Hugo","family":"de Brito","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Humberto Torres","family":"Marques-Neto","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Ricardo","family":"Terra","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Henrique","family":"Rocha","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Marco Tulio","family":"Valente","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"297","published-online":{"date-parts":[[2012,9,5]]},"reference":[{"key":"83_CR1","doi-asserted-by":"crossref","unstructured":"Abi-Antoun M, Aldrich J (2009) Static extraction and conformance analysis of hierarchical runtime architectural structure using annotations. In: 24th Conference on object-oriented programming, systems, languages, and applications (OOPSLA), pp 321\u2013340","DOI":"10.1145\/1639949.1640113"},{"key":"83_CR2","doi-asserted-by":"crossref","unstructured":"Abi-Antoun M, Aldrich J (2009) Static extraction of sound hierarchical runtime object graphs. In: 4th International workshop on types in language design and implementation (TLDI), pp 51\u201364","DOI":"10.1145\/1481861.1481869"},{"key":"83_CR3","doi-asserted-by":"crossref","unstructured":"Aldrich J, Chambers C, Notkin D (2002) ArchJava: connecting software architecture to implementation. In: 22nd International conference on software engineering (ICSE), pp 187\u2013197","DOI":"10.1145\/581339.581365"},{"key":"83_CR4","unstructured":"Alves H, Rocha H, Terra R, Valente MT (2010) Uma abordagem para recupera\u00e7\u00e3o da arquitetura din\u00e2mica de sistemas de software. In: IV Simp\u00f3sio Brasileiro de Componentes, Arquiteturas e Reutiliza\u00e7\u00e3o de Software (SBCARS), pp 145\u2013154"},{"key":"83_CR5","doi-asserted-by":"crossref","unstructured":"Anquetil N, Lethbridge TC (1999) Experiments with clustering as a software remodularization method. In: 5th Working conference on reverse engineering (WCRE), pp 235\u2013255","DOI":"10.1109\/WCRE.1999.806964"},{"key":"83_CR6","doi-asserted-by":"crossref","unstructured":"Anquetil N, Lethbridge TC (2009) Ten years later, experiments with clustering as a software remodularization method. In: 16th Working conference on reverse engineering (WCRE), p 7","DOI":"10.1109\/WCRE.2009.59"},{"key":"83_CR7","volume-title":"Software architecture in practice","author":"L Bass","year":"2003","unstructured":"Bass L, Clements P, Kazman R (2003) Software architecture in practice, 2nd edn. Addison-Wesley, Reading","edition":"2"},{"issue":"9","key":"83_CR8","doi-asserted-by":"publisher","first-page":"642","DOI":"10.1109\/TSE.2006.96","volume":"32","author":"LC Briand","year":"2006","unstructured":"Briand LC, Labiche Y, Leduc J (2006) Toward the reverse engineering of UML sequence diagrams for distributed Java software. IEEE Trans Softw Eng 32(9):642\u2013663","journal-title":"IEEE Trans Softw Eng"},{"issue":"4","key":"83_CR9","doi-asserted-by":"publisher","first-page":"70","DOI":"10.1109\/MS.2009.83","volume":"26","author":"P Clements","year":"2009","unstructured":"Clements P, Shaw M (2009) The golden age of software architecture revisited. IEEE Softw 26(4):70\u201372","journal-title":"IEEE Softw"},{"issue":"4","key":"83_CR10","doi-asserted-by":"publisher","first-page":"573","DOI":"10.1109\/TSE.2009.19","volume":"35","author":"S Ducasse","year":"2009","unstructured":"Ducasse S, Pollet D (2009) Software architecture reconstruction: a process-oriented taxonomy. IEEE Trans Softw Eng 35(4):573\u2013591","journal-title":"IEEE Trans Softw Eng"},{"key":"83_CR11","volume-title":"Patterns of enterprise application architecture","author":"M Fowler","year":"2002","unstructured":"Fowler M (2002) Patterns of enterprise application architecture. Addison-Wesley, Reading"},{"key":"83_CR12","volume-title":"UML distilled: a brief guide to the standard object modeling language","author":"M Fowler","year":"2003","unstructured":"Fowler M (2003) UML distilled: a brief guide to the standard object modeling language. Addison-Wesley, Reading"},{"key":"83_CR13","volume-title":"Software architecture: perspectives on an emerging discipline","author":"D Garlan","year":"1996","unstructured":"Garlan D, Shaw M (1996) Software architecture: perspectives on an emerging discipline. Prentice-Hall, Englewood Cliffs"},{"issue":"2","key":"83_CR14","doi-asserted-by":"publisher","first-page":"156","DOI":"10.1109\/32.908960","volume":"27","author":"D Jackson","year":"2001","unstructured":"Jackson D, Waingold A (2001) Lightweight extraction of object models from bytecode. IEEE Trans Softw Eng 27(2):156\u2013169","journal-title":"IEEE Trans Softw Eng"},{"key":"83_CR15","doi-asserted-by":"crossref","unstructured":"Kiczales G, Hilsdale E, Hugunin J, Kersten M, Palm J, Griswold WG (2001) An overview of AspectJ. In: 15th European conference on object-oriented programming (ECOOP). LNCS, vol 2072. Springer, Berlin, pp 327\u2013355","DOI":"10.1007\/3-540-45337-7_18"},{"key":"83_CR16","doi-asserted-by":"crossref","unstructured":"Knodel J, Muthig D, Naab M, Lindvall M (2006) Static evaluation of software architectures. In: 10th European conference on software maintenance and reengineering (CSMR), pp 279\u2013294","DOI":"10.1109\/CSMR.2006.53"},{"issue":"3","key":"83_CR17","first-page":"26","volume":"1","author":"GE Krasner","year":"1988","unstructured":"Krasner GE, Pope ST (1988) A cookbook for using the model\u2013view\u2013controller user interface paradigm in Smalltalk-80. J Object Oriented Program 1(3):26\u201349","journal-title":"J Object Oriented Program"},{"issue":"1","key":"83_CR18","doi-asserted-by":"publisher","first-page":"70","DOI":"10.1109\/32.825767","volume":"26","author":"N Medvidovic","year":"2000","unstructured":"Medvidovic N, Taylor RN (2000) A classification and comparison framework for software architecture description languages. IEEE Trans Softw Eng 26(1):70\u201393","journal-title":"IEEE Trans Softw Eng"},{"issue":"5","key":"83_CR19","doi-asserted-by":"publisher","first-page":"82","DOI":"10.1109\/MS.2009.117","volume":"27","author":"L Passos","year":"2010","unstructured":"Passos L, Terra R, Diniz R, Valente MT, Mendonta N (2010) Static architecture-conformance checking: an illustrative overview. IEEE Softw 27(5):82\u201389","journal-title":"IEEE Softw"},{"issue":"4","key":"83_CR20","doi-asserted-by":"publisher","first-page":"40","DOI":"10.1145\/141874.141884","volume":"17","author":"DE Perry","year":"1992","unstructured":"Perry DE, Wolf AL (1992) Foundations for the study of software architecture. Softw Eng Notes 17(4):40\u201352","journal-title":"Softw Eng Notes"},{"key":"83_CR21","unstructured":"Rocha H, Valente MT (2011) How annotations are used in Java: an empirical study. In: 23rd International conference on software engineering and knowledge engineering (SEKE), pp 426\u2013431"},{"key":"83_CR22","doi-asserted-by":"crossref","unstructured":"Sangal N, Jordan E, Sinha V, Jackson D (2005) Using dependency models to manage complex software architecture. In: 20th Conference on object-oriented programming, systems, languages, and applications (OOPSLA), pp 167\u2013176","DOI":"10.1145\/1094811.1094824"},{"issue":"7","key":"83_CR23","doi-asserted-by":"publisher","first-page":"454","DOI":"10.1109\/TSE.2006.66","volume":"32","author":"BR Schmerl","year":"2006","unstructured":"Schmerl BR, Aldrich J, Garlan D, Kazman R, Yan H (2006) Discovering architectures from running systems. IEEE Trans Softw Eng 32(7):454\u2013466","journal-title":"IEEE Trans Softw Eng"},{"key":"83_CR24","doi-asserted-by":"crossref","unstructured":"Terra R, Valente MT (2008) Towards a dependency constraint language to manage software architectures. In: Second European conference on software architecture (ECSA). Lecture notes in computer science, vol 5292. Springer, Berlin, pp 256\u2013263","DOI":"10.1007\/978-3-540-88030-1_19"},{"issue":"12","key":"83_CR25","doi-asserted-by":"publisher","first-page":"1073","DOI":"10.1002\/spe.931","volume":"32","author":"R Terra","year":"2009","unstructured":"Terra R, Valente MT (2009) A dependency constraint language to manage object-oriented software architectures. Softw Pract Exp 32(12):1073\u20131094","journal-title":"Softw Pract Exp"},{"key":"83_CR26","unstructured":"Tirelo F, Bigonha R, Bigonha M, Valente MT (2004) Desenvolvimento de Software Orientado por Aspectos. In: XXIII Jornada de Atualiza\u00e7\u00e3o em Inform\u00e1tica (JAI), XXIV Congresso da Sociedade Brasileira de Computa\u00e7\u00e3o"},{"key":"83_CR27","doi-asserted-by":"crossref","unstructured":"Tonella P (2005) Reverse engineering of object oriented code (tutorial). In: 27th International conference on software engineering (ICSE), pp 724\u2013725","DOI":"10.1145\/1062455.1062637"},{"key":"83_CR28","unstructured":"Wollrath A, Riggs R, Waldo J (1996) A distributed object model for the Java system. In: 2nd Conference on object-oriented technologies and systems, pp 219\u2013232"},{"key":"83_CR29","doi-asserted-by":"crossref","unstructured":"Yan H, Garlan D, Schmerl BR, Aldrich J, Kazman R (2004) DiscoTect: a system for discovering architectures from running systems. In: 26th International conference on software engineering (ICSE), pp 470\u2013479","DOI":"10.21236\/ADA441834"}],"container-title":["Journal of the Brazilian Computer Society"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s13173-012-0083-5.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/link.springer.com\/article\/10.1007\/s13173-012-0083-5\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s13173-012-0083-5","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"},{"URL":"https:\/\/link.springer.com\/content\/pdf\/10.1007\/s13173-012-0083-5.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2021,9,1]],"date-time":"2021-09-01T19:33:11Z","timestamp":1630524791000},"score":1,"resource":{"primary":{"URL":"https:\/\/journal-bcs.springeropen.com\/articles\/10.1007\/s13173-012-0083-5"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2012,9,5]]},"references-count":29,"journal-issue":{"issue":"1","published-print":{"date-parts":[[2013,3]]}},"alternative-id":["83"],"URL":"https:\/\/doi.org\/10.1007\/s13173-012-0083-5","relation":{},"ISSN":["0104-6500","1678-4804"],"issn-type":[{"value":"0104-6500","type":"print"},{"value":"1678-4804","type":"electronic"}],"subject":[],"published":{"date-parts":[[2012,9,5]]},"assertion":[{"value":"17 November 2011","order":1,"name":"received","label":"Received","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"16 July 2012","order":2,"name":"accepted","label":"Accepted","group":{"name":"ArticleHistory","label":"Article History"}},{"value":"5 September 2012","order":3,"name":"first_online","label":"First Online","group":{"name":"ArticleHistory","label":"Article History"}}]}}