On the identification of design problems in stinky code: experiences and tool support View Full Text


Ontology type: schema:ScholarlyArticle      Open Access: True


Article Info

DATE

2018-12

AUTHORS

Willian Oizumi, Leonardo Sousa, Anderson Oliveira, Alessandro Garcia, Anne Benedicte Agbachi, Roberto Oliveira, Carlos Lucena

ABSTRACT

Developers often have to locate design problems in the source code. Several types of design problems may manifest as code smells in the program. A code smell is a source code structure that may reveal a partial hint about the manifestation of a design problem. Recent studies suggest that developers should ignore smells occurring in isolation in a program location. Instead, they should focus on analyzing stinkier code, i.e., program locations—e.g., a class or a hierarchy—affected by multiple smells. There is evidence that the stinkier a program location is, the more likely it contains a design problem. However, there is no empirical evidence on whether developers can effectively identify a design problem in stinkier code. Developers may struggle to make an analysis of inter-related smells affecting the same program location. Besides that, the analysis of stinkier code may require proper tool support due to its analysis complexity. However, there is little knowledge on what are the requirements for a tool that helps developers in revealing stinkier program locations. As a result, developers may not be able to identify design problems due to tool issues. To address this matter, we aimed at achieving three goals. In the first case, we proposed Organic—a tool supporting the analysis of stinky code. In the second case, we applied a mixed-method approach to analyze if and how developers can effectively find design problems when reflecting upon stinky code—i.e., a program location affected by multiple smells. We conducted a study with 11 software professionals. Finally, in the third case, we aimed at understanding if Organic could be used by developers to identify design problems. To achieve this goal, we used a method from the Semiotic Engineering theory. This method enabled us to evaluate what are the tool issues that may hinder the identification of design problems in stinky code. Our study revealed that only 36.36% of the developers found more design problems when explicitly reasoning about multiple smells as compared to single smells. Moreover, 63.63% of the developers reported much lesser false positives when using the first approach as compared to the latter. The second study, in its turn, showed that most developers may be unable to identify design problems in stinky code without proper tool support. Our experiences, in particular the second study, helped us to refine the features of Organic for better supporting developers in reflecting upon stinkier code. For example, analyses of stinky code scattered in class hierarchies or packages is often difficult, time-consuming, and requires proper visualization support. Moreover, without effective support, it remains time-consuming to discard stinky program locations that do not represent design problems. More... »

PAGES

13

References to SciGraph publications

  • 2016-09. An approach to prioritize code smells for refactoring in AUTOMATED SOFTWARE ENGINEERING
  • 2015-12. On the relationship of code-anomaly agglomerations and architectural problems in JOURNAL OF SOFTWARE ENGINEERING RESEARCH AND DEVELOPMENT
  • Identifiers

    URI

    http://scigraph.springernature.com/pub.10.1186/s13173-018-0078-y

    DOI

    http://dx.doi.org/10.1186/s13173-018-0078-y

    DIMENSIONS

    https://app.dimensions.ai/details/publication/pub.1107776041


    Indexing Status Check whether this publication has been indexed by Scopus and Web Of Science using the SN Indexing Status Tool
    Incoming Citations Browse incoming citations for this publication using opencitations.net

    JSON-LD is the canonical representation for SciGraph data.

    TIP: You can open this SciGraph record using an external JSON-LD service: JSON-LD Playground Google SDTT

    [
      {
        "@context": "https://springernature.github.io/scigraph/jsonld/sgcontext.json", 
        "about": [
          {
            "id": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/0803", 
            "inDefinedTermSet": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/", 
            "name": "Computer Software", 
            "type": "DefinedTerm"
          }, 
          {
            "id": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/08", 
            "inDefinedTermSet": "http://purl.org/au-research/vocabulary/anzsrc-for/2008/", 
            "name": "Information and Computing Sciences", 
            "type": "DefinedTerm"
          }
        ], 
        "author": [
          {
            "affiliation": {
              "alternateName": "Pontifical Catholic University of Rio de Janeiro", 
              "id": "https://www.grid.ac/institutes/grid.4839.6", 
              "name": [
                "Opus Research Group, Informatics Department, PUC-Rio, Rio de Janeiro, RJ, Brazil", 
                "IFPR, Campus Paranavai, Paranavai, PR, Brazil"
              ], 
              "type": "Organization"
            }, 
            "familyName": "Oizumi", 
            "givenName": "Willian", 
            "id": "sg:person.015204043237.30", 
            "sameAs": [
              "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.015204043237.30"
            ], 
            "type": "Person"
          }, 
          {
            "affiliation": {
              "alternateName": "Pontifical Catholic University of Rio de Janeiro", 
              "id": "https://www.grid.ac/institutes/grid.4839.6", 
              "name": [
                "Opus Research Group, Informatics Department, PUC-Rio, Rio de Janeiro, RJ, Brazil"
              ], 
              "type": "Organization"
            }, 
            "familyName": "Sousa", 
            "givenName": "Leonardo", 
            "id": "sg:person.011570156450.67", 
            "sameAs": [
              "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.011570156450.67"
            ], 
            "type": "Person"
          }, 
          {
            "affiliation": {
              "alternateName": "Pontifical Catholic University of Rio de Janeiro", 
              "id": "https://www.grid.ac/institutes/grid.4839.6", 
              "name": [
                "Opus Research Group, Informatics Department, PUC-Rio, Rio de Janeiro, RJ, Brazil"
              ], 
              "type": "Organization"
            }, 
            "familyName": "Oliveira", 
            "givenName": "Anderson", 
            "id": "sg:person.013037215560.02", 
            "sameAs": [
              "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.013037215560.02"
            ], 
            "type": "Person"
          }, 
          {
            "affiliation": {
              "alternateName": "Pontifical Catholic University of Rio de Janeiro", 
              "id": "https://www.grid.ac/institutes/grid.4839.6", 
              "name": [
                "Opus Research Group, Informatics Department, PUC-Rio, Rio de Janeiro, RJ, Brazil"
              ], 
              "type": "Organization"
            }, 
            "familyName": "Garcia", 
            "givenName": "Alessandro", 
            "id": "sg:person.012565740573.94", 
            "sameAs": [
              "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.012565740573.94"
            ], 
            "type": "Person"
          }, 
          {
            "affiliation": {
              "alternateName": "Pontifical Catholic University of Rio de Janeiro", 
              "id": "https://www.grid.ac/institutes/grid.4839.6", 
              "name": [
                "Opus Research Group, Informatics Department, PUC-Rio, Rio de Janeiro, RJ, Brazil"
              ], 
              "type": "Organization"
            }, 
            "familyName": "Agbachi", 
            "givenName": "Anne Benedicte", 
            "type": "Person"
          }, 
          {
            "affiliation": {
              "alternateName": "Pontifical Catholic University of Rio de Janeiro", 
              "id": "https://www.grid.ac/institutes/grid.4839.6", 
              "name": [
                "Opus Research Group, Informatics Department, PUC-Rio, Rio de Janeiro, RJ, Brazil", 
                "UEG, Campus Posse, Posse, GO, Brazil"
              ], 
              "type": "Organization"
            }, 
            "familyName": "Oliveira", 
            "givenName": "Roberto", 
            "id": "sg:person.015770656026.84", 
            "sameAs": [
              "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.015770656026.84"
            ], 
            "type": "Person"
          }, 
          {
            "affiliation": {
              "alternateName": "Pontifical Catholic University of Rio de Janeiro", 
              "id": "https://www.grid.ac/institutes/grid.4839.6", 
              "name": [
                "Opus Research Group, Informatics Department, PUC-Rio, Rio de Janeiro, RJ, Brazil"
              ], 
              "type": "Organization"
            }, 
            "familyName": "Lucena", 
            "givenName": "Carlos", 
            "id": "sg:person.016066470237.87", 
            "sameAs": [
              "https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.016066470237.87"
            ], 
            "type": "Person"
          }
        ], 
        "citation": [
          {
            "id": "https://doi.org/10.1145/328595.328608", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1004209136"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "sg:pub.10.1186/s40411-015-0025-y", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1004612020", 
              "https://doi.org/10.1186/s40411-015-0025-y"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "sg:pub.10.1186/s40411-015-0025-y", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1004612020", 
              "https://doi.org/10.1186/s40411-015-0025-y"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1145/1409720.1409745", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1015133192"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1145/2973839.2973848", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1018486211"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1145/2884781.2884822", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1022283583"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "sg:pub.10.1007/s10515-014-0175-x", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1023766570", 
              "https://doi.org/10.1007/s10515-014-0175-x"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1145/1134285.1134400", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1029428648"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1145/2884781.2884868", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1035945244"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1145/2162049.2162069", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1040906805"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1145/2597073.2597076", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1044824536"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1145/1879211.1879216", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1046596637"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1109/2945.841119", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1061146328"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1145/1082983.1083155", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1063150670"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.2200/s00173ed1v01y200901hci002", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1069288056"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1109/wicsa.2015.12", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1093315003"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1109/ase.2013.6693106", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1093321602"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1109/icse.2013.6606614", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1093593720"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1109/csmr.2011.24", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1093865253"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1109/wcre.2002.1173068", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1094080879"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1109/sbcars.2016.11", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1094793267"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1109/csmr.2012.35", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1094871492"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1109/icsm.2015.7332458", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1094890058"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1109/icsm.2012.6405348", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1094899677"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1109/wcre.2005.15", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1095103877"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1109/csmr.2009.59", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1095104799"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1109/tools.1999.787532", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1095107448"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1109/sbes.2013.14", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1095118840"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1109/sbes.2014.18", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1095452046"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1109/wcre.2013.6671299", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1095660240"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1109/icsm.2004.1357820", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1095783622"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1109/vlhcc.2017.8103470", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1095842308"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1145/3131151.3131168", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1095979644"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1145/3131151.3131168", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1095979644"
            ], 
            "type": "CreativeWork"
          }, 
          {
            "id": "https://doi.org/10.1016/j.infsof.2018.02.004", 
            "sameAs": [
              "https://app.dimensions.ai/details/publication/pub.1101147018"
            ], 
            "type": "CreativeWork"
          }
        ], 
        "datePublished": "2018-12", 
        "datePublishedReg": "2018-12-01", 
        "description": "Developers often have to locate design problems in the source code. Several types of design problems may manifest as code smells in the program. A code smell is a source code structure that may reveal a partial hint about the manifestation of a design problem. Recent studies suggest that developers should ignore smells occurring in isolation in a program location. Instead, they should focus on analyzing stinkier code, i.e., program locations\u2014e.g., a class or a hierarchy\u2014affected by multiple smells. There is evidence that the stinkier a program location is, the more likely it contains a design problem. However, there is no empirical evidence on whether developers can effectively identify a design problem in stinkier code. Developers may struggle to make an analysis of inter-related smells affecting the same program location. Besides that, the analysis of stinkier code may require proper tool support due to its analysis complexity. However, there is little knowledge on what are the requirements for a tool that helps developers in revealing stinkier program locations. As a result, developers may not be able to identify design problems due to tool issues. To address this matter, we aimed at achieving three goals. In the first case, we proposed Organic\u2014a tool supporting the analysis of stinky code. In the second case, we applied a mixed-method approach to analyze if and how developers can effectively find design problems when reflecting upon stinky code\u2014i.e., a program location affected by multiple smells. We conducted a study with 11 software professionals. Finally, in the third case, we aimed at understanding if Organic could be used by developers to identify design problems. To achieve this goal, we used a method from the Semiotic Engineering theory. This method enabled us to evaluate what are the tool issues that may hinder the identification of design problems in stinky code. Our study revealed that only 36.36% of the developers found more design problems when explicitly reasoning about multiple smells as compared to single smells. Moreover, 63.63% of the developers reported much lesser false positives when using the first approach as compared to the latter. The second study, in its turn, showed that most developers may be unable to identify design problems in stinky code without proper tool support. Our experiences, in particular the second study, helped us to refine the features of Organic for better supporting developers in reflecting upon stinkier code. For example, analyses of stinky code scattered in class hierarchies or packages is often difficult, time-consuming, and requires proper visualization support. Moreover, without effective support, it remains time-consuming to discard stinky program locations that do not represent design problems.", 
        "genre": "research_article", 
        "id": "sg:pub.10.1186/s13173-018-0078-y", 
        "inLanguage": [
          "en"
        ], 
        "isAccessibleForFree": true, 
        "isPartOf": [
          {
            "id": "sg:journal.1136200", 
            "issn": [
              "0104-6500", 
              "1678-4804"
            ], 
            "name": "Journal of the Brazilian Computer Society", 
            "type": "Periodical"
          }, 
          {
            "issueNumber": "1", 
            "type": "PublicationIssue"
          }, 
          {
            "type": "PublicationVolume", 
            "volumeNumber": "24"
          }
        ], 
        "name": "On the identification of design problems in stinky code: experiences and tool support", 
        "pagination": "13", 
        "productId": [
          {
            "name": "readcube_id", 
            "type": "PropertyValue", 
            "value": [
              "42e5d0d003ec4fc78a7b74843b479a9c9c16fbf5b6074b01f95b4207a1e7e970"
            ]
          }, 
          {
            "name": "doi", 
            "type": "PropertyValue", 
            "value": [
              "10.1186/s13173-018-0078-y"
            ]
          }, 
          {
            "name": "dimensions_id", 
            "type": "PropertyValue", 
            "value": [
              "pub.1107776041"
            ]
          }
        ], 
        "sameAs": [
          "https://doi.org/10.1186/s13173-018-0078-y", 
          "https://app.dimensions.ai/details/publication/pub.1107776041"
        ], 
        "sdDataset": "articles", 
        "sdDatePublished": "2019-04-10T22:42", 
        "sdLicense": "https://scigraph.springernature.com/explorer/license/", 
        "sdPublisher": {
          "name": "Springer Nature - SN SciGraph project", 
          "type": "Organization"
        }, 
        "sdSource": "s3://com-uberresearch-data-dimensions-target-20181106-alternative/cleanup/v134/2549eaecd7973599484d7c17b260dba0a4ecb94b/merge/v9/a6c9fde33151104705d4d7ff012ea9563521a3ce/jats-lookup/v90/0000000001_0000000264/records_8690_00000568.jsonl", 
        "type": "ScholarlyArticle", 
        "url": "https://link.springer.com/10.1186%2Fs13173-018-0078-y"
      }
    ]
     

    Download the RDF metadata as:  json-ld nt turtle xml License info

    HOW TO GET THIS DATA PROGRAMMATICALLY:

    JSON-LD is a popular format for linked data which is fully compatible with JSON.

    curl -H 'Accept: application/ld+json' 'https://scigraph.springernature.com/pub.10.1186/s13173-018-0078-y'

    N-Triples is a line-based linked data format ideal for batch operations.

    curl -H 'Accept: application/n-triples' 'https://scigraph.springernature.com/pub.10.1186/s13173-018-0078-y'

    Turtle is a human-readable linked data format.

    curl -H 'Accept: text/turtle' 'https://scigraph.springernature.com/pub.10.1186/s13173-018-0078-y'

    RDF/XML is a standard XML format for linked data.

    curl -H 'Accept: application/rdf+xml' 'https://scigraph.springernature.com/pub.10.1186/s13173-018-0078-y'


     

    This table displays all metadata directly associated to this object as RDF triples.

    205 TRIPLES      21 PREDICATES      60 URIs      19 LITERALS      7 BLANK NODES

    Subject Predicate Object
    1 sg:pub.10.1186/s13173-018-0078-y schema:about anzsrc-for:08
    2 anzsrc-for:0803
    3 schema:author N4a0d4be9d4ac40bc9485215bcc51d6ca
    4 schema:citation sg:pub.10.1007/s10515-014-0175-x
    5 sg:pub.10.1186/s40411-015-0025-y
    6 https://doi.org/10.1016/j.infsof.2018.02.004
    7 https://doi.org/10.1109/2945.841119
    8 https://doi.org/10.1109/ase.2013.6693106
    9 https://doi.org/10.1109/csmr.2009.59
    10 https://doi.org/10.1109/csmr.2011.24
    11 https://doi.org/10.1109/csmr.2012.35
    12 https://doi.org/10.1109/icse.2013.6606614
    13 https://doi.org/10.1109/icsm.2004.1357820
    14 https://doi.org/10.1109/icsm.2012.6405348
    15 https://doi.org/10.1109/icsm.2015.7332458
    16 https://doi.org/10.1109/sbcars.2016.11
    17 https://doi.org/10.1109/sbes.2013.14
    18 https://doi.org/10.1109/sbes.2014.18
    19 https://doi.org/10.1109/tools.1999.787532
    20 https://doi.org/10.1109/vlhcc.2017.8103470
    21 https://doi.org/10.1109/wcre.2002.1173068
    22 https://doi.org/10.1109/wcre.2005.15
    23 https://doi.org/10.1109/wcre.2013.6671299
    24 https://doi.org/10.1109/wicsa.2015.12
    25 https://doi.org/10.1145/1082983.1083155
    26 https://doi.org/10.1145/1134285.1134400
    27 https://doi.org/10.1145/1409720.1409745
    28 https://doi.org/10.1145/1879211.1879216
    29 https://doi.org/10.1145/2162049.2162069
    30 https://doi.org/10.1145/2597073.2597076
    31 https://doi.org/10.1145/2884781.2884822
    32 https://doi.org/10.1145/2884781.2884868
    33 https://doi.org/10.1145/2973839.2973848
    34 https://doi.org/10.1145/3131151.3131168
    35 https://doi.org/10.1145/328595.328608
    36 https://doi.org/10.2200/s00173ed1v01y200901hci002
    37 schema:datePublished 2018-12
    38 schema:datePublishedReg 2018-12-01
    39 schema:description Developers often have to locate design problems in the source code. Several types of design problems may manifest as code smells in the program. A code smell is a source code structure that may reveal a partial hint about the manifestation of a design problem. Recent studies suggest that developers should ignore smells occurring in isolation in a program location. Instead, they should focus on analyzing stinkier code, i.e., program locations—e.g., a class or a hierarchy—affected by multiple smells. There is evidence that the stinkier a program location is, the more likely it contains a design problem. However, there is no empirical evidence on whether developers can effectively identify a design problem in stinkier code. Developers may struggle to make an analysis of inter-related smells affecting the same program location. Besides that, the analysis of stinkier code may require proper tool support due to its analysis complexity. However, there is little knowledge on what are the requirements for a tool that helps developers in revealing stinkier program locations. As a result, developers may not be able to identify design problems due to tool issues. To address this matter, we aimed at achieving three goals. In the first case, we proposed Organic—a tool supporting the analysis of stinky code. In the second case, we applied a mixed-method approach to analyze if and how developers can effectively find design problems when reflecting upon stinky code—i.e., a program location affected by multiple smells. We conducted a study with 11 software professionals. Finally, in the third case, we aimed at understanding if Organic could be used by developers to identify design problems. To achieve this goal, we used a method from the Semiotic Engineering theory. This method enabled us to evaluate what are the tool issues that may hinder the identification of design problems in stinky code. Our study revealed that only 36.36% of the developers found more design problems when explicitly reasoning about multiple smells as compared to single smells. Moreover, 63.63% of the developers reported much lesser false positives when using the first approach as compared to the latter. The second study, in its turn, showed that most developers may be unable to identify design problems in stinky code without proper tool support. Our experiences, in particular the second study, helped us to refine the features of Organic for better supporting developers in reflecting upon stinkier code. For example, analyses of stinky code scattered in class hierarchies or packages is often difficult, time-consuming, and requires proper visualization support. Moreover, without effective support, it remains time-consuming to discard stinky program locations that do not represent design problems.
    40 schema:genre research_article
    41 schema:inLanguage en
    42 schema:isAccessibleForFree true
    43 schema:isPartOf Na7ab9e2a920346c79f1509d9532be696
    44 Ncd4c707a12ab45fca378f2d0f807e130
    45 sg:journal.1136200
    46 schema:name On the identification of design problems in stinky code: experiences and tool support
    47 schema:pagination 13
    48 schema:productId N682340787cfc441eb062f24aec15001f
    49 N78238cb4e399457a8e178c05801f5f05
    50 N7f06a8dcd89c4eeb9410ec4c3fcce8a8
    51 schema:sameAs https://app.dimensions.ai/details/publication/pub.1107776041
    52 https://doi.org/10.1186/s13173-018-0078-y
    53 schema:sdDatePublished 2019-04-10T22:42
    54 schema:sdLicense https://scigraph.springernature.com/explorer/license/
    55 schema:sdPublisher N585d4ee710bf467fa73544c20fe46f3a
    56 schema:url https://link.springer.com/10.1186%2Fs13173-018-0078-y
    57 sgo:license sg:explorer/license/
    58 sgo:sdDataset articles
    59 rdf:type schema:ScholarlyArticle
    60 N08e6e1a862dd411c90f73216a2bc5719 schema:affiliation https://www.grid.ac/institutes/grid.4839.6
    61 schema:familyName Agbachi
    62 schema:givenName Anne Benedicte
    63 rdf:type schema:Person
    64 N0e76d51773bd4fdb88c1726e908fb730 rdf:first sg:person.013037215560.02
    65 rdf:rest Nf6fd8040a8984f909813fb800fa90f44
    66 N33aa564d8797448cb51f5dfe01fe8b85 rdf:first sg:person.016066470237.87
    67 rdf:rest rdf:nil
    68 N4a0d4be9d4ac40bc9485215bcc51d6ca rdf:first sg:person.015204043237.30
    69 rdf:rest Na42700093a84475cb2373b898be548b2
    70 N585d4ee710bf467fa73544c20fe46f3a schema:name Springer Nature - SN SciGraph project
    71 rdf:type schema:Organization
    72 N682340787cfc441eb062f24aec15001f schema:name doi
    73 schema:value 10.1186/s13173-018-0078-y
    74 rdf:type schema:PropertyValue
    75 N78238cb4e399457a8e178c05801f5f05 schema:name readcube_id
    76 schema:value 42e5d0d003ec4fc78a7b74843b479a9c9c16fbf5b6074b01f95b4207a1e7e970
    77 rdf:type schema:PropertyValue
    78 N7f06a8dcd89c4eeb9410ec4c3fcce8a8 schema:name dimensions_id
    79 schema:value pub.1107776041
    80 rdf:type schema:PropertyValue
    81 Na42700093a84475cb2373b898be548b2 rdf:first sg:person.011570156450.67
    82 rdf:rest N0e76d51773bd4fdb88c1726e908fb730
    83 Na7ab9e2a920346c79f1509d9532be696 schema:issueNumber 1
    84 rdf:type schema:PublicationIssue
    85 Nb59b179f2fba4866b10c82e073023516 rdf:first N08e6e1a862dd411c90f73216a2bc5719
    86 rdf:rest Nbf0d5308da9743ac9b21daeec518dc86
    87 Nbf0d5308da9743ac9b21daeec518dc86 rdf:first sg:person.015770656026.84
    88 rdf:rest N33aa564d8797448cb51f5dfe01fe8b85
    89 Ncd4c707a12ab45fca378f2d0f807e130 schema:volumeNumber 24
    90 rdf:type schema:PublicationVolume
    91 Nf6fd8040a8984f909813fb800fa90f44 rdf:first sg:person.012565740573.94
    92 rdf:rest Nb59b179f2fba4866b10c82e073023516
    93 anzsrc-for:08 schema:inDefinedTermSet anzsrc-for:
    94 schema:name Information and Computing Sciences
    95 rdf:type schema:DefinedTerm
    96 anzsrc-for:0803 schema:inDefinedTermSet anzsrc-for:
    97 schema:name Computer Software
    98 rdf:type schema:DefinedTerm
    99 sg:journal.1136200 schema:issn 0104-6500
    100 1678-4804
    101 schema:name Journal of the Brazilian Computer Society
    102 rdf:type schema:Periodical
    103 sg:person.011570156450.67 schema:affiliation https://www.grid.ac/institutes/grid.4839.6
    104 schema:familyName Sousa
    105 schema:givenName Leonardo
    106 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.011570156450.67
    107 rdf:type schema:Person
    108 sg:person.012565740573.94 schema:affiliation https://www.grid.ac/institutes/grid.4839.6
    109 schema:familyName Garcia
    110 schema:givenName Alessandro
    111 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.012565740573.94
    112 rdf:type schema:Person
    113 sg:person.013037215560.02 schema:affiliation https://www.grid.ac/institutes/grid.4839.6
    114 schema:familyName Oliveira
    115 schema:givenName Anderson
    116 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.013037215560.02
    117 rdf:type schema:Person
    118 sg:person.015204043237.30 schema:affiliation https://www.grid.ac/institutes/grid.4839.6
    119 schema:familyName Oizumi
    120 schema:givenName Willian
    121 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.015204043237.30
    122 rdf:type schema:Person
    123 sg:person.015770656026.84 schema:affiliation https://www.grid.ac/institutes/grid.4839.6
    124 schema:familyName Oliveira
    125 schema:givenName Roberto
    126 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.015770656026.84
    127 rdf:type schema:Person
    128 sg:person.016066470237.87 schema:affiliation https://www.grid.ac/institutes/grid.4839.6
    129 schema:familyName Lucena
    130 schema:givenName Carlos
    131 schema:sameAs https://app.dimensions.ai/discover/publication?and_facet_researcher=ur.016066470237.87
    132 rdf:type schema:Person
    133 sg:pub.10.1007/s10515-014-0175-x schema:sameAs https://app.dimensions.ai/details/publication/pub.1023766570
    134 https://doi.org/10.1007/s10515-014-0175-x
    135 rdf:type schema:CreativeWork
    136 sg:pub.10.1186/s40411-015-0025-y schema:sameAs https://app.dimensions.ai/details/publication/pub.1004612020
    137 https://doi.org/10.1186/s40411-015-0025-y
    138 rdf:type schema:CreativeWork
    139 https://doi.org/10.1016/j.infsof.2018.02.004 schema:sameAs https://app.dimensions.ai/details/publication/pub.1101147018
    140 rdf:type schema:CreativeWork
    141 https://doi.org/10.1109/2945.841119 schema:sameAs https://app.dimensions.ai/details/publication/pub.1061146328
    142 rdf:type schema:CreativeWork
    143 https://doi.org/10.1109/ase.2013.6693106 schema:sameAs https://app.dimensions.ai/details/publication/pub.1093321602
    144 rdf:type schema:CreativeWork
    145 https://doi.org/10.1109/csmr.2009.59 schema:sameAs https://app.dimensions.ai/details/publication/pub.1095104799
    146 rdf:type schema:CreativeWork
    147 https://doi.org/10.1109/csmr.2011.24 schema:sameAs https://app.dimensions.ai/details/publication/pub.1093865253
    148 rdf:type schema:CreativeWork
    149 https://doi.org/10.1109/csmr.2012.35 schema:sameAs https://app.dimensions.ai/details/publication/pub.1094871492
    150 rdf:type schema:CreativeWork
    151 https://doi.org/10.1109/icse.2013.6606614 schema:sameAs https://app.dimensions.ai/details/publication/pub.1093593720
    152 rdf:type schema:CreativeWork
    153 https://doi.org/10.1109/icsm.2004.1357820 schema:sameAs https://app.dimensions.ai/details/publication/pub.1095783622
    154 rdf:type schema:CreativeWork
    155 https://doi.org/10.1109/icsm.2012.6405348 schema:sameAs https://app.dimensions.ai/details/publication/pub.1094899677
    156 rdf:type schema:CreativeWork
    157 https://doi.org/10.1109/icsm.2015.7332458 schema:sameAs https://app.dimensions.ai/details/publication/pub.1094890058
    158 rdf:type schema:CreativeWork
    159 https://doi.org/10.1109/sbcars.2016.11 schema:sameAs https://app.dimensions.ai/details/publication/pub.1094793267
    160 rdf:type schema:CreativeWork
    161 https://doi.org/10.1109/sbes.2013.14 schema:sameAs https://app.dimensions.ai/details/publication/pub.1095118840
    162 rdf:type schema:CreativeWork
    163 https://doi.org/10.1109/sbes.2014.18 schema:sameAs https://app.dimensions.ai/details/publication/pub.1095452046
    164 rdf:type schema:CreativeWork
    165 https://doi.org/10.1109/tools.1999.787532 schema:sameAs https://app.dimensions.ai/details/publication/pub.1095107448
    166 rdf:type schema:CreativeWork
    167 https://doi.org/10.1109/vlhcc.2017.8103470 schema:sameAs https://app.dimensions.ai/details/publication/pub.1095842308
    168 rdf:type schema:CreativeWork
    169 https://doi.org/10.1109/wcre.2002.1173068 schema:sameAs https://app.dimensions.ai/details/publication/pub.1094080879
    170 rdf:type schema:CreativeWork
    171 https://doi.org/10.1109/wcre.2005.15 schema:sameAs https://app.dimensions.ai/details/publication/pub.1095103877
    172 rdf:type schema:CreativeWork
    173 https://doi.org/10.1109/wcre.2013.6671299 schema:sameAs https://app.dimensions.ai/details/publication/pub.1095660240
    174 rdf:type schema:CreativeWork
    175 https://doi.org/10.1109/wicsa.2015.12 schema:sameAs https://app.dimensions.ai/details/publication/pub.1093315003
    176 rdf:type schema:CreativeWork
    177 https://doi.org/10.1145/1082983.1083155 schema:sameAs https://app.dimensions.ai/details/publication/pub.1063150670
    178 rdf:type schema:CreativeWork
    179 https://doi.org/10.1145/1134285.1134400 schema:sameAs https://app.dimensions.ai/details/publication/pub.1029428648
    180 rdf:type schema:CreativeWork
    181 https://doi.org/10.1145/1409720.1409745 schema:sameAs https://app.dimensions.ai/details/publication/pub.1015133192
    182 rdf:type schema:CreativeWork
    183 https://doi.org/10.1145/1879211.1879216 schema:sameAs https://app.dimensions.ai/details/publication/pub.1046596637
    184 rdf:type schema:CreativeWork
    185 https://doi.org/10.1145/2162049.2162069 schema:sameAs https://app.dimensions.ai/details/publication/pub.1040906805
    186 rdf:type schema:CreativeWork
    187 https://doi.org/10.1145/2597073.2597076 schema:sameAs https://app.dimensions.ai/details/publication/pub.1044824536
    188 rdf:type schema:CreativeWork
    189 https://doi.org/10.1145/2884781.2884822 schema:sameAs https://app.dimensions.ai/details/publication/pub.1022283583
    190 rdf:type schema:CreativeWork
    191 https://doi.org/10.1145/2884781.2884868 schema:sameAs https://app.dimensions.ai/details/publication/pub.1035945244
    192 rdf:type schema:CreativeWork
    193 https://doi.org/10.1145/2973839.2973848 schema:sameAs https://app.dimensions.ai/details/publication/pub.1018486211
    194 rdf:type schema:CreativeWork
    195 https://doi.org/10.1145/3131151.3131168 schema:sameAs https://app.dimensions.ai/details/publication/pub.1095979644
    196 rdf:type schema:CreativeWork
    197 https://doi.org/10.1145/328595.328608 schema:sameAs https://app.dimensions.ai/details/publication/pub.1004209136
    198 rdf:type schema:CreativeWork
    199 https://doi.org/10.2200/s00173ed1v01y200901hci002 schema:sameAs https://app.dimensions.ai/details/publication/pub.1069288056
    200 rdf:type schema:CreativeWork
    201 https://www.grid.ac/institutes/grid.4839.6 schema:alternateName Pontifical Catholic University of Rio de Janeiro
    202 schema:name IFPR, Campus Paranavai, Paranavai, PR, Brazil
    203 Opus Research Group, Informatics Department, PUC-Rio, Rio de Janeiro, RJ, Brazil
    204 UEG, Campus Posse, Posse, GO, Brazil
    205 rdf:type schema:Organization
     




    Preview window. Press ESC to close (or click here)


    ...