{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,1,15]],"date-time":"2026-01-15T14:43:24Z","timestamp":1768488204536,"version":"3.49.0"},"reference-count":33,"publisher":"Association for Computing Machinery (ACM)","issue":"3","license":[{"start":{"date-parts":[[2010,5,1]],"date-time":"2010-05-01T00:00:00Z","timestamp":1272672000000},"content-version":"tdm","delay-in-days":0,"URL":"http:\/\/www.springer.com\/tdm"}],"content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Form. Asp. Comput."],"published-print":{"date-parts":[[2010,5]]},"abstract":"<jats:title>Abstract<\/jats:title>\n          <jats:p>\n            Code and design smells are recurring design problems in software systems that must be identified to avoid their possible negative consequences on development and maintenance. Consequently, several smell detection approaches and tools have been proposed in the literature. However, so far, they allow the detection of predefined smells but the detection of new smells or smells adapted to the context of the analysed systems is possible only by implementing new detection algorithms manually. Moreover, previous approaches do not explain the transition from specifications of smells to their detection. Finally, the validation of the existing approaches and tools has been limited on few proprietary systems and on a reduced number of smells. In this paper, we introduce an approach to automate the generation of detection algorithms from specifications written using a domain-specific language. This language is defined from a thorough domain analysis. It allows the specification of smells using high-level domain-related abstractions. It allows the adaptation of the specifications of smells to the context of the analysed systems. We specify 10 smells, generate automatically their detection algorithms using templates, and validate the algorithms in terms of precision and recall on\n            <jats:sc>Xerces<\/jats:sc>\n            v2.7.0 and\n            <jats:sc>GanttProject<\/jats:sc>\n            v1.10.2, two open-source object-oriented systems. We also compare the detection results with those of a previous approach,\n            <jats:sc>iPlasma<\/jats:sc>\n            .\n          <\/jats:p>","DOI":"10.1007\/s00165-009-0115-x","type":"journal-article","created":{"date-parts":[[2009,5,18]],"date-time":"2009-05-18T11:52:43Z","timestamp":1242647563000},"page":"345-361","source":"Crossref","is-referenced-by-count":38,"title":["From a domain analysis to the specification and detection of code and design smells"],"prefix":"10.1145","volume":"22","author":[{"given":"Naouel","family":"Moha","sequence":"first","affiliation":[{"name":"Ptidej Team, GEODES, DIRO, Universit\u00e9 de Montr\u00e9al, Montreal, QC, Canada"},{"name":"Adam Team, INRIA Lille Nord Europe, LIFL CNRS UMR 8022, Universit\u00e9 des Sciences et Technologies de Lille, Villeneuve-d\u2032 Ascq cedex, France"},{"name":"IRISA, Triskell Team, INRIA Rennes-Bretagne Atlantique, Campus de Beaulieu, 35042, Rennes cedex, France"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Yann-Ga\u00ebl","family":"Gu\u00e9h\u00e9neuc","sequence":"additional","affiliation":[{"name":"Ptidej Team, DGIGL, \u00c9cole Polytechnique de Montr\u00e9al, Montreal, QC, Canada"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Anne-Fran\u00e7oise Le","family":"Meur","sequence":"additional","affiliation":[{"name":"Adam Team, INRIA Lille Nord Europe, LIFL CNRS UMR 8022, Universit\u00e9 des Sciences et Technologies de Lille, Villeneuve-d\u2032 Ascq cedex, France"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Laurence","family":"Duchien","sequence":"additional","affiliation":[{"name":"Adam Team, INRIA Lille Nord Europe, LIFL CNRS UMR 8022, Universit\u00e9 des Sciences et Technologies de Lille, Villeneuve-d\u2032 Ascq cedex, France"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Alban","family":"Tiberghien","sequence":"additional","affiliation":[{"name":"Adam Team, INRIA Lille Nord Europe, LIFL CNRS UMR 8022, Universit\u00e9 des Sciences et Technologies de Lille, Villeneuve-d\u2032 Ascq cedex, France"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","reference":[{"key":"e_1_2_1_2_1_2","unstructured":"Alikacem El H Sahraoui H (2006) D\u00e9tection d\u2019anomalies utilisant un langage de description de r\u00e8gle de qualit\u00e9. In: actes du 12 e colloque LMO pp 185\u2013200"},{"key":"e_1_2_1_2_2_2","volume-title":"Anti patterns: refactoring software, architectures, and projects in crisis","author":"Brown WJ","year":"1998","edition":"1"},{"key":"e_1_2_1_2_3_2","doi-asserted-by":"publisher","DOI":"10.1109\/TSE.2005.23"},{"key":"e_1_2_1_2_4_2","unstructured":"Chambers JM Clevelmd WS Kleiner B Tukey PA (1983) Graphical methods for data analysis. Wadsworth International"},{"key":"e_1_2_1_2_5_2","unstructured":"CheckStyle (2004) http:\/\/checkstyle.sourceforge.net"},{"key":"e_1_2_1_2_6_2","doi-asserted-by":"publisher","DOI":"10.1109\/32.295895"},{"key":"e_1_2_1_2_7_2","doi-asserted-by":"crossref","unstructured":"Consel C Marlet R (1998) Architecturing software using: A methodology for language development. Lecture Notes in Computer Science vol 1490 pp 170\u2013194","DOI":"10.1007\/BFb0056614"},{"key":"e_1_2_1_2_8_2","volume-title":"Information retrieval: data structures and algorithms","author":"Frakes WB","year":"1992"},{"key":"e_1_2_1_2_9_2","unstructured":"Florijn G (2002) Revjava\u2014design critiques and architectural conformance checking for java software. White Paper. SERC the Netherlands"},{"key":"e_1_2_1_2_10_2","volume-title":"Refactoring\u2014improving the design of existing code","author":"Fowler M","year":"1999","edition":"1"},{"key":"e_1_2_1_2_11_2","unstructured":"FXCop (2006) http:\/\/www.gotdotnet.com\/team\/fxcop\/"},{"key":"e_1_2_1_2_12_2","doi-asserted-by":"crossref","unstructured":"Gu\u00e9h\u00e9neuc Y-G Albin-Amiot H (2004) Recovering binary class relationships: Putting icing on the UML cake. In: Proceedings of the 19th OOSPLA conference pp 301\u2013314","DOI":"10.1145\/1028976.1029002"},{"key":"e_1_2_1_2_13_2","unstructured":"Geraci A (1991) IEEE standard computer dictionary: compilation of IEEE standard computer glossaries. Institute of Electrical and Electronics Engineers Inc."},{"key":"e_1_2_1_2_14_2","volume-title":"Design patterns\u2014elements of reusable object-oriented software","author":"Gamma E","year":"1994","edition":"1"},{"key":"e_1_2_1_2_15_2","unstructured":"Gu\u00e9h\u00e9neuc Y-G Sahraoui H Zaidi F (2004) Fingerprinting design patterns. In: Proceedings of the 11th WCRE conference pp 172\u2013181"},{"key":"e_1_2_1_2_16_2","unstructured":"Hammurapi October 2007. http:\/\/www.hammurapi.biz\/"},{"key":"e_1_2_1_2_17_2","doi-asserted-by":"publisher","DOI":"10.1145\/1052883.1052895"},{"key":"e_1_2_1_2_18_2","doi-asserted-by":"crossref","unstructured":"Lincke R Lundberg J L\u00f6we W (2008) Comparing software metrics tools. In: Proceedings of the ISSTA Symposium NY USA 2008. ACM New York pp 131\u2013142","DOI":"10.1145\/1390630.1390648"},{"key":"e_1_2_1_2_19_2","doi-asserted-by":"crossref","unstructured":"Marinescu R (2004) Detection strategies: metrics-based rules for detecting design flaws. In: Proceedings of the 20th ICSM conference pp 350\u2013359","DOI":"10.1109\/ICSM.2004.1357820"},{"key":"e_1_2_1_2_20_2","doi-asserted-by":"crossref","unstructured":"Moha N Gu\u00e9h\u00e9neuc Y-G Leduc P (2006) Automatic generation of detection algorithms for design defects. In: Proceedings of the 21st ASE conference","DOI":"10.1109\/ASE.2006.22"},{"key":"e_1_2_1_2_21_2","doi-asserted-by":"crossref","unstructured":"Moha N Gu\u00e9h\u00e9neuc Y-G Le Meur A-F Duchien L (2008) A domain analysis to specify design defects and generate detection algorithms. In: Proceedings of the 11th FASE conference. Springer Heidelberg pp 276\u2013291","DOI":"10.1007\/978-3-540-78743-3_20"},{"key":"e_1_2_1_2_22_2","unstructured":"Moha N Huynh D-L Gu\u00e9h\u00e9neuc Y-G (2006) Une taxonomie et un m\u00e9tamod\u00e8le pour la d\u00e9tection des d\u00e9fauts de conception. In: actes du 12 e colloque LMO pp 201\u2013216"},{"key":"e_1_2_1_2_23_2","doi-asserted-by":"publisher","DOI":"10.1145\/1118890.1118892"},{"key":"e_1_2_1_2_24_2","unstructured":"Munro MJ (2005) Product metrics for automatic identification of \u201cbad smell\u201d design problems in java source-code. In: Proceedings of the 11th metrics symposium"},{"key":"e_1_2_1_2_25_2","doi-asserted-by":"publisher","DOI":"10.1145\/382296.382703"},{"key":"e_1_2_1_2_26_2","unstructured":"PMD (2002) http:\/\/pmd.sourceforge.net\/"},{"key":"e_1_2_1_2_27_2","unstructured":"Pressman RS (2001) Software engineering\u2014a practitioner\u2019s approach. McGraw-Hill Higher Education 5th edn. November 2001"},{"key":"e_1_2_1_2_28_2","doi-asserted-by":"publisher","DOI":"10.5555\/525171"},{"key":"e_1_2_1_2_29_2","unstructured":"SemmleCode October 2007. http:\/\/semmle.com\/"},{"key":"e_1_2_1_2_30_2","doi-asserted-by":"crossref","unstructured":"Swint GS Pu C Jung G Yan W Koh Y Wu Q Consel C Sahai A Moriyama K (2005) Clearwater: extensible flexible modular code generation. In: Proceedings of the 20th IEEE\/ACM ASE conference pp 144\u2013153","DOI":"10.1145\/1101908.1101931"},{"key":"e_1_2_1_2_31_2","doi-asserted-by":"crossref","unstructured":"Travassos G Shull F Fredericks M Basili VR (1999) Detecting defects in object-oriented designs: using reading techniques to increase software quality. In: Proceedings of the 14th OOSPLA conference pp 47\u201356","DOI":"10.1145\/320385.320389"},{"key":"e_1_2_1_2_32_2","volume-title":"Object design: roles, responsibilities and collaborations","author":"Wirfs-Brock R","year":"2002"},{"key":"e_1_2_1_2_33_2","doi-asserted-by":"publisher","DOI":"10.5555\/181706"}],"container-title":["Formal Aspects of Computing"],"original-title":[],"language":"en","link":[{"URL":"http:\/\/link.springer.com\/content\/pdf\/10.1007\/s00165-009-0115-x.pdf","content-type":"application\/pdf","content-version":"vor","intended-application":"text-mining"},{"URL":"http:\/\/link.springer.com\/article\/10.1007\/s00165-009-0115-x\/fulltext.html","content-type":"text\/html","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1007\/s00165-009-0115-x","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,1,6]],"date-time":"2022-01-06T15:51:10Z","timestamp":1641484270000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1007\/s00165-009-0115-x"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2010,5]]},"references-count":33,"journal-issue":{"issue":"3","published-print":{"date-parts":[[2010,5]]}},"alternative-id":["10.1007\/s00165-009-0115-x"],"URL":"https:\/\/doi.org\/10.1007\/s00165-009-0115-x","relation":{},"ISSN":["0934-5043","1433-299X"],"issn-type":[{"value":"0934-5043","type":"print"},{"value":"1433-299X","type":"electronic"}],"subject":[],"published":{"date-parts":[[2010,5]]}}}