{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,5,24]],"date-time":"2025-05-24T07:26:46Z","timestamp":1748071606906,"version":"3.32.0"},"reference-count":35,"publisher":"Wiley","issue":"5","license":[{"start":{"date-parts":[[2006,10,30]],"date-time":"2006-10-30T00:00:00Z","timestamp":1162166400000},"content-version":"vor","delay-in-days":5661,"URL":"http:\/\/onlinelibrary.wiley.com\/termsAndConditions#vor"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Softw Pract Exp"],"published-print":{"date-parts":[[1991,5]]},"abstract":"<jats:title>Abstract<\/jats:title><jats:p>The paper proposes an algebraic representation of program modules, called<jats:italic>F(p)<\/jats:italic>, and illustrates the algorithms that use<jats:italic>F(p)<\/jats:italic>to generate program graph models for measurement, documentation and testing activities. The representation refers to procedural languages, D\u2010structured programs and one\u2010in\/one\u2010out modules but its definition can be extended to programs structured in terms of an arbitrary set of one\u2010in\/one\u2010out legal control structures. Since it is possible to produce<jats:italic>F(p)<\/jats:italic>directly from the program code using reverse engineering techniques, the algorithms proposed are of considerable interest for the setting up of tools supporting the program comprehension phase, which is a fundamental first step in any maintenance operation.<\/jats:p>","DOI":"10.1002\/spe.4380210507","type":"journal-article","created":{"date-parts":[[2006,11,17]],"date-time":"2006-11-17T20:02:09Z","timestamp":1163793729000},"page":"519-537","source":"Crossref","is-referenced-by-count":21,"title":["Reverse engineering: Algorithms for program graph production"],"prefix":"10.1002","volume":"21","author":[{"given":"Aniello","family":"Cimitile","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Ugo","family":"de Carlini","sequence":"additional","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"311","published-online":{"date-parts":[[2006,10,30]]},"reference":[{"doi-asserted-by":"publisher","key":"e_1_2_1_2_2","DOI":"10.1109\/TSE.1983.235114"},{"unstructured":"IEEE Software 1988 5 3 Special issue on CASE","key":"e_1_2_1_3_2"},{"doi-asserted-by":"publisher","key":"e_1_2_1_4_2","DOI":"10.1109\/32.7624"},{"doi-asserted-by":"publisher","key":"e_1_2_1_5_2","DOI":"10.1109\/TSE.1981.226473"},{"volume-title":"The Art of Computer Programming","year":"1968","author":"Knuth D. E.","key":"e_1_2_1_6_2"},{"volume-title":"Compiler Construction for Digital Computers","year":"1971","author":"Gries D.","key":"e_1_2_1_7_2"},{"volume-title":"The Theory of Parsing, Translation and Compiling","year":"1973","author":"Aho A. V.","key":"e_1_2_1_8_2"},{"doi-asserted-by":"publisher","key":"e_1_2_1_9_2","DOI":"10.1109\/TSE.1986.6312978"},{"doi-asserted-by":"publisher","key":"e_1_2_1_10_2","DOI":"10.1016\/0164-1212(88)90041-6"},{"volume-title":"Elements of Software Science","year":"1977","author":"Halstead M. H.","key":"e_1_2_1_11_2"},{"issue":"12","key":"e_1_2_1_12_2","doi-asserted-by":"crossref","first-page":"308","DOI":"10.1109\/TSE.1976.233837","article-title":"A complexity measure","volume":"2","author":"McCabe T. J.","year":"1976","journal-title":"IEEE Trans. Software Eng."},{"doi-asserted-by":"publisher","key":"e_1_2_1_13_2","DOI":"10.1109\/TSE.1981.231113"},{"doi-asserted-by":"publisher","key":"e_1_2_1_14_2","DOI":"10.1016\/S0022-0000(74)80043-7"},{"doi-asserted-by":"publisher","key":"e_1_2_1_15_2","DOI":"10.1016\/0165-6074(86)90060-8"},{"key":"e_1_2_1_16_2","first-page":"377","volume-title":"Proc. of Italian National Congress AICA88","author":"Cimitile A.","year":"1988"},{"unstructured":"A.Cimitile U.De CarliniandP.Maresca Education in software testing: an algebraic approach Proc. 2nd Meeting on Community of Mediterranean Universities on Education and Application of Computer Technology Malta Laterza Bari Italy 1988 pp.375\u2013390.","key":"e_1_2_1_17_2"},{"doi-asserted-by":"publisher","key":"e_1_2_1_18_2","DOI":"10.1016\/0165-6074(87)90065-2"},{"unstructured":"P.Antonini P.Benedusi G.CantoneandA.Cimitile Maintenance and reverse engineering: low\u2010level design documents production and improvement Proc. Conf. on Software Maintenance CSM87 Austin 1987 IEEE Comp. Soc. Press pp.91\u2013100.","key":"e_1_2_1_19_2"},{"doi-asserted-by":"crossref","unstructured":"P.Benedusi A.CimitileandU.De Carlini A reverse engineering methodology to reconstruct hierarchical data flow diagrams for software maintenance Proc. Conf. on Software Maintenance CSM89 Miami 1989 IEEE Comp. Soc. Press pp.180\u2013189.","key":"e_1_2_1_20_2","DOI":"10.1109\/ICSM.1989.65208"},{"doi-asserted-by":"crossref","unstructured":"P.Benedusi A.CimitileandU.De Carlini Post\u2010maintenance testing based on path changes analysis Proc. Conf. on Software Maintenance CSM88 Phoenix 1938 IEEE Comp Soc Press352\u2013361.","key":"e_1_2_1_21_2","DOI":"10.1109\/ICSM.1988.10187"},{"doi-asserted-by":"publisher","key":"e_1_2_1_22_2","DOI":"10.1109\/TSE.1982.235255"},{"volume-title":"Software Testing Techniques","year":"1983","author":"Beizer B.","key":"e_1_2_1_23_2"},{"doi-asserted-by":"publisher","key":"e_1_2_1_24_2","DOI":"10.1093\/comjnl\/29.4.330"},{"doi-asserted-by":"publisher","key":"e_1_2_1_25_2","DOI":"10.1016\/0950-5849(87)90029-2"},{"doi-asserted-by":"publisher","key":"e_1_2_1_26_2","DOI":"10.1145\/988209.988211"},{"volume-title":"Tutorial: Software Testing and Validation Techniques","year":"1981","author":"Miller E.","key":"e_1_2_1_27_2"},{"doi-asserted-by":"publisher","key":"e_1_2_1_28_2","DOI":"10.1109\/TSE.1982.235575"},{"doi-asserted-by":"publisher","key":"e_1_2_1_29_2","DOI":"10.1145\/356044.356048"},{"doi-asserted-by":"publisher","key":"e_1_2_1_30_2","DOI":"10.1109\/TSE.1986.6313016"},{"key":"e_1_2_1_31_2","first-page":"259","volume-title":"Proc. 8th Int. Conf. on Software Eng.","author":"Hedley D.","year":"1985"},{"doi-asserted-by":"publisher","key":"e_1_2_1_32_2","DOI":"10.1109\/TSE.1986.6313008"},{"unstructured":"B.Roy Algebre modern et th\u00e9orie des graphes Premi\u00e8re tome Dunod Editeur Paris France1969.","key":"e_1_2_1_33_2"},{"doi-asserted-by":"publisher","key":"e_1_2_1_34_2","DOI":"10.1109\/T-C.1975.224259"},{"doi-asserted-by":"publisher","key":"e_1_2_1_35_2","DOI":"10.1016\/0950-5849(88)90040-7"},{"issue":"7","key":"e_1_2_1_36_2","doi-asserted-by":"crossref","DOI":"10.1145\/947864.947869","article-title":"Regular expressions in a program complexity metric","volume":"17","author":"Magel K.","year":"1981","journal-title":"ACM SIGPLAN Notices"}],"container-title":["Software: Practice and Experience"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/api.wiley.com\/onlinelibrary\/tdm\/v1\/articles\/10.1002%2Fspe.4380210507","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/pdf\/10.1002\/spe.4380210507","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,1,11]],"date-time":"2025-01-11T23:56:37Z","timestamp":1736639797000},"score":1,"resource":{"primary":{"URL":"https:\/\/onlinelibrary.wiley.com\/doi\/10.1002\/spe.4380210507"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[1991,5]]},"references-count":35,"journal-issue":{"issue":"5","published-print":{"date-parts":[[1991,5]]}},"alternative-id":["10.1002\/spe.4380210507"],"URL":"https:\/\/doi.org\/10.1002\/spe.4380210507","archive":["Portico"],"relation":{},"ISSN":["0038-0644","1097-024X"],"issn-type":[{"type":"print","value":"0038-0644"},{"type":"electronic","value":"1097-024X"}],"subject":[],"published":{"date-parts":[[1991,5]]}}}