Code smells for Model-View-Controller architectures
Previous studies have shown the negative effects that low-quality code can have on maintainability proxies, such as code change- and defect-proneness. One of the symptoms of low-quality code are code smells, defined as sub-optimal implementation choices. While this definition is quite general and se...
Saved in:
Published in | Empirical software engineering : an international journal Vol. 23; no. 4; pp. 2121 - 2157 |
---|---|
Main Authors | , , , , |
Format | Journal Article |
Language | English |
Published |
New York
Springer US
01.08.2018
|
Subjects | |
Online Access | Get full text |
ISSN | 1382-3256 1573-7616 |
DOI | 10.1007/s10664-017-9540-2 |
Cover
Loading…
Abstract | Previous studies have shown the negative effects that low-quality code can have on maintainability proxies, such as code change- and defect-proneness. One of the symptoms of low-quality code are code smells, defined as sub-optimal implementation choices. While this definition is quite general and seems to suggest a wide spectrum of smells that can affect software systems, the research literature mostly focuses on the set of smells defined in the catalog by Fowler and Beck, reporting design issues that can potentially affect any kind of system, regardless of their architecture (e.g., Complex Class). However, systems adopting a specific architecture (e.g., the Model-View-Controller pattern) can be affected by other types of poor practices that only manifest themselves in the chosen architecture. We present a catalog of six smells tailored to MVC applications and defined by surveying/interviewing 53 MVC developers. We validate our catalog from different perspectives. First, we assess the relationship between the defined smells and the code change- and defect-proneness. Second, we investigate when these smells are introduced and how long they survive. Third, we survey 21 developers to verify their perception of the defined smells. Fourth, since our catalog has been mainly defined together with developers adopting a specific Java framework in their MVC applications (e.g., Spring), we interview four expert developers working with different technologies for the implementation of their MVC applications to check the generalizability of our catalog. The achieved results show that the defined Web MVC smells (i) more often than not, have more chances of being subject to changes and defects, (ii) are mostly introduced when the affected file (i.e., the file containing the smell) is committed for the first time in the repository and survive for long time in the system, (iii) are perceived by developers as severe problems, and (iv) generalize to other languages/frameworks. |
---|---|
AbstractList | Previous studies have shown the negative effects that low-quality code can have on maintainability proxies, such as code change- and defect-proneness. One of the symptoms of low-quality code are code smells, defined as sub-optimal implementation choices. While this definition is quite general and seems to suggest a wide spectrum of smells that can affect software systems, the research literature mostly focuses on the set of smells defined in the catalog by Fowler and Beck, reporting design issues that can potentially affect any kind of system, regardless of their architecture (e.g., Complex Class). However, systems adopting a specific architecture (e.g., the Model-View-Controller pattern) can be affected by other types of poor practices that only manifest themselves in the chosen architecture. We present a catalog of six smells tailored to MVC applications and defined by surveying/interviewing 53 MVC developers. We validate our catalog from different perspectives. First, we assess the relationship between the defined smells and the code change- and defect-proneness. Second, we investigate when these smells are introduced and how long they survive. Third, we survey 21 developers to verify their perception of the defined smells. Fourth, since our catalog has been mainly defined together with developers adopting a specific Java framework in their MVC applications (e.g., Spring), we interview four expert developers working with different technologies for the implementation of their MVC applications to check the generalizability of our catalog. The achieved results show that the defined Web MVC smells (i) more often than not, have more chances of being subject to changes and defects, (ii) are mostly introduced when the affected file (i.e., the file containing the smell) is committed for the first time in the repository and survive for long time in the system, (iii) are perceived by developers as severe problems, and (iv) generalize to other languages/frameworks. |
Author | van Deursen, Arie Gerosa, Marco Aurélio Treude, Christoph Aniche, Maurício Bavota, Gabriele |
Author_xml | – sequence: 1 givenname: Maurício orcidid: 0000-0002-8893-2835 surname: Aniche fullname: Aniche, Maurício email: M.F.Aniche@tudelft.nl organization: Delft University of Technology – sequence: 2 givenname: Gabriele surname: Bavota fullname: Bavota, Gabriele organization: Università della Svizzera italiana (USI) – sequence: 3 givenname: Christoph surname: Treude fullname: Treude, Christoph organization: University of Adelaide – sequence: 4 givenname: Marco Aurélio surname: Gerosa fullname: Gerosa, Marco Aurélio organization: Northern Arizona University – sequence: 5 givenname: Arie surname: van Deursen fullname: van Deursen, Arie organization: Delft University of Technology |
BookMark | eNotj91KAzEUhINUsK0-gHf7AtGcZHOSXsriH1S8UW9D3JzolriRZIuv75b2amZgmOFbscWYR2LsGsQNCGFuKwjElgswfKNbweUZW4I2ihsEXMxeWcmV1HjBVrXuhBAb0-olU10O1NQfSqk2MZfmZc6Jfwz0x7s8TiWnRKXxpf8eJuqnfaF6yc6jT5WuTrpm7w_3b90T374-Pnd3W15B2okHDBYFIMjggbRWvY0YNqQVyIhSf6LW0FpSUZjQUjDBwtyjCMF76VGtmTzu1t8yjF9U3C7vyzhfOhDugO2O2G7GdgdsJ9U_8YtMcQ |
ContentType | Journal Article |
Copyright | The Author(s) 2017 |
Copyright_xml | – notice: The Author(s) 2017 |
DBID | C6C |
DOI | 10.1007/s10664-017-9540-2 |
DatabaseName | Springer Nature OA Free Journals |
DatabaseTitleList | |
Database_xml | – sequence: 1 dbid: C6C name: Springer Nature OA Free Journals url: http://www.springeropen.com/ sourceTypes: Publisher |
DeliveryMethod | fulltext_linktorsrc |
Discipline | Computer Science |
EISSN | 1573-7616 |
EndPage | 2157 |
ExternalDocumentID | 10_1007_s10664_017_9540_2 |
GrantInformation_xml | – fundername: Swiss National Science Foundation grantid: 172479 |
GroupedDBID | -4Z -59 -5G -BR -EM -Y2 -~C .86 .DC .VR 06D 0R~ 0VY 199 1N0 1SB 2.D 203 28- 29G 2J2 2JN 2JY 2KG 2LR 2P1 2VQ 2~H 30V 4.4 406 408 409 40D 40E 5GY 5QI 5VS 67Z 6NX 78A 8FE 8FG 8TC 8UJ 95- 95. 95~ 96X AABHQ AACDK AAHNG AAIAL AAJBT AAJKR AANZL AAOBN AARHV AARTL AASML AATNV AATVU AAUYE AAWCG AAYIU AAYOK AAYQN AAYTO AAYZH ABAKF ABBBX ABBXA ABDZT ABECU ABFTD ABFTV ABHLI ABHQN ABJCF ABJNI ABJOX ABKCH ABKTR ABMNI ABMQK ABNWP ABQBU ABQSL ABSXP ABTEG ABTHY ABTKH ABTMW ABULA ABWNU ABXPI ACAOD ACBXY ACDTI ACGFS ACHSB ACHXU ACIWK ACKNC ACMDZ ACMLO ACOKC ACOMO ACPIV ACSNA ACZOJ ADHHG ADHIR ADIMF ADINQ ADKNI ADKPE ADRFC ADTPH ADURQ ADYFF ADZKW AEBTG AEFIE AEFQL AEGAL AEGNC AEJHL AEJRE AEKMD AEMSY AENEX AEOHA AEPYU AESKC AETLH AEVLU AEXYK AFBBN AFEXP AFGCZ AFKRA AFLOW AFQWF AFWTZ AFZKB AGAYW AGDGC AGGDS AGJBK AGMZJ AGQEE AGQMX AGRTI AGWIL AGWZB AGYKE AHAVH AHBYD AHKAY AHSBF AHYZX AIAKS AIGIU AIIXL AILAN AITGF AJBLW AJRNO AJZVZ ALMA_UNASSIGNED_HOLDINGS ALWAN AMKLP AMXSW AMYLF AMYQR AOCGG ARAPS ARMRJ ASPBG AVWKF AXYYD AYJHY AZFZN B-. BA0 BBWZM BDATZ BENPR BGLVJ BGNMA BSONS C6C CAG CCPQU COF CS3 CSCUP DDRTE DL5 DNIVK DPUIP DU5 EBLON EBS EIOEI EJD ESBYG FEDTE FERAY FFXSO FIGPU FINBP FNLPD FRRFC FSGXE FWDCC GGCAI GGRSB GJIRD GNWQR GQ6 GQ7 GQ8 GXS H13 HCIFZ HF~ HG5 HG6 HMJXF HQYDN HRMNR HVGLF HZ~ I09 IHE IJ- IKXTQ ITM IWAJR IXC IZIGR IZQ I~X I~Z J-C J0Z JBSCW JCJTX JZLTJ KDC KOV KOW L6V LAK LLZTM M4Y M7S MA- N2Q NB0 NDZJH NPVJJ NQJWS NU0 O9- O93 O9G O9I O9J OAM P19 P62 P9O PF0 PT4 PT5 PTHSS Q2X QOK QOS R4E R89 R9I RHV RNI RNS ROL RPX RSV RZC RZE RZK S0W S16 S1Z S26 S27 S28 S3B SAP SCJ SCLPG SCO SDH SDM SHX SISQX SJYHP SNE SNPRN SNX SOHCF SOJ SPISZ SRMVM SSLCW STPWE SZN T13 T16 TSG TSK TSV TUC U2A UG4 UOJIU UTJUX UZXMN VC2 VFIZW W23 W48 WK8 YLTOR Z45 Z7R Z7S Z7V Z7X Z7Z Z81 Z83 Z86 Z88 Z8M Z8N Z8P Z8R Z8T Z8U Z8W Z92 ZMTXR ~EX |
ID | FETCH-LOGICAL-s128t-d6d8601612da1e553c8f6d9e5312f625b655148e3f07d4ed7d811e5ef1daa2a63 |
IEDL.DBID | U2A |
ISSN | 1382-3256 |
IngestDate | Fri Feb 21 02:35:45 EST 2025 |
IsDoiOpenAccess | true |
IsOpenAccess | true |
IsPeerReviewed | true |
IsScholarly | true |
Issue | 4 |
Keywords | Software maintenance Code smells Code quality Code anti-patterns Code anomalies |
Language | English |
LinkModel | DirectLink |
MergedId | FETCHMERGED-LOGICAL-s128t-d6d8601612da1e553c8f6d9e5312f625b655148e3f07d4ed7d811e5ef1daa2a63 |
ORCID | 0000-0002-8893-2835 |
OpenAccessLink | https://link.springer.com/10.1007/s10664-017-9540-2 |
PageCount | 37 |
ParticipantIDs | springer_journals_10_1007_s10664_017_9540_2 |
PublicationCentury | 2000 |
PublicationDate | 20180800 |
PublicationDateYYYYMMDD | 2018-08-01 |
PublicationDate_xml | – month: 8 year: 2018 text: 20180800 |
PublicationDecade | 2010 |
PublicationPlace | New York |
PublicationPlace_xml | – name: New York |
PublicationSubtitle | An International Journal |
PublicationTitle | Empirical software engineering : an international journal |
PublicationTitleAbbrev | Empir Software Eng |
PublicationYear | 2018 |
Publisher | Springer US |
Publisher_xml | – name: Springer US |
References | Herzig K, Zeller A (2013) The impact of tangled code changes. In: Proceedings of the 10th working conference on mining software repositories, MSR ’13. San Francisco, CA, USA, pp 121–130 Lozano A, Wermelinger M, Nuseibeh B (2007) Assessing the impact of bad smells using historical information. In: Ninth international workshop on principles of software evolution: in conjunction with the 6th ESEC/FSE joint meeting, Dubrovnik, Croatia, IWPSE ’07. ACM, New York, pp 31–34 LiWShatnawiRAn empirical study of the bad smells and class error probability in the post-release object-oriented system evolutionJ Syst Softw20078071120112810.1016/j.jss.2006.10.018 Hecht G, Rouvoy R, Moha N, Duchien L (2015) Detecting antipatterns in android apps. In: Proceedings of the second ACM international conference on mobile software engineering and systems. IEEE Press, Florence, pp 148–149 Abbes M, Khomh F, Gueheneuc Y-G, Antoniol G (2011) An empirical study of the impact of two antipatterns, blob and spaghetti code, on program comprehension. In: 15th European conference on software maintenance and reengineering (CSMR). IEEE, Oldenburg, pp 181–190 Bavota G, Qusef A, Oliveto R, De Lucia A, Binkley D (2012) An empirical analysis of the distribution of unit test smells and their impact on software maintenance. In: 28th IEEE international conference on software maintenance (ICSM). IEEE, Riva del Garda, pp 56–65 ColemanDLowtherBOmanPThe application of software maintainability models in industrial software systemsJ Syst Softwa199529131610.1016/0164-1212(94)00125-7 Tufano M, Palomba F, Bavota G, Oliveto R, Di Penta M, De Lucia A, Poshyvanyk D (2017) When and why your code starts to smell bad (and whether the smells go away). IEEE Transactions on Software Engineering Fard AM, Mesbah A (2013) Jsnose: detecting javascript code smells. In: IEEE 13th international working conference on source code analysis and manipulation (SCAM). IEEE, Eindhoven, pp 116–125 Tufano M, Palomba F, Bavota G, Di Penta M, Oliveto R, De Lucia A, Poshyvanyk D (2016) An empirical investigation into the nature of test smells. In: Proceedings of the 31st IEEE/ACM international conference on automated software engineering. ACM, Singapore, pp 4–15 Aniche M, Bavota G, Treude C, van Deursen A, Gerosa MA (2016a) Code smells for Model-View-Controller architectures: Online appendix. http://dx.doi.org/https://doi.org/10.5281/zenodo.253681 (accessed June 20, 2017) Alves TL, Correia JP, Visser J (2011) Benchmark-based aggregation of metrics to ratings. In: joint conference of the 21st int’l workshop on and 6th int’l conference on software process and product measurement (IWSM-MENSURA). IEEE, Nara Peters R, Zaidman A (2012) Evaluating the lifespan of code smells using software repository mining. In: 16th European conference on software maintenance and reengineering (CSMR). IEEE, Szeged, pp 411–416 Agrawal R, Imielinski T, Swami AN (1993) Mining association rules between sets of items in large databases. In: Proceedings of the 1993 ACM SIGMOD international conference on management of data. Washington, USA, pp 207–216 JayGHaleJESmithRKHaleDPKraftNAWardCCyclomatic complexity and lines of code: Empirical evidence of a stable linear relationshipJ Softw Eng Appl20092313714310.4236/jsea.2009.23020 Nederlof A, Mesbah A, Deursen Av (2014) Software engineering for the web: the state of the practice. In: Companion proceedings of the 36th international conference on software engineering. ACM, Hyderabad, pp 4–13 Yamashita A, Moonen L (2012) Do code smells reflect important maintainability aspects?. In: 28th IEEE international conference on software maintenance (ICSM). IEEE, Riva del Garda, pp 306–315 BavotaGDe LuciaADi PentaMOlivetoRPalombaFAn experimental investigation on the innate relationship between quality and refactoringJ Syst Softw201510711410.1016/j.jss.2015.05.024 ConoverWJPractical nonparametric statistics19983New YorkWiley Aniche M, Bavota G, Treude C, van Deursen A, Gerosa MA (2016b) A validated set of smells in Model-View-Controller architecture. In: 32nd international conference on software maintenance and evolution (ICSME). Raleigh, USA Riel AJ (1996) Object-oriented design heuristics, vol 335. Addison-Wesley Reading ChidamberSRKemererCFA metrics suite for object oriented designIEEE Trans Softw Eng199420647649310.1109/32.295895 Olbrich SM, Cruze DS, Sjøberg DI (2010) Are all code smells harmful? A study of god classes and brain classes in the evolution of three open source systems. In: IEEE international conference on software maintenance (ICSM). IEEE, Timisoara Evans E (2004) Domain-driven design: tackling complexity in the heart of software. Addison-Wesley Professional Yamashita A, Moonen L (2013) Do developers care about code smells? An exploratory survey. In: 20th working conference on reverse engineering (WCRE). IEEE, Koblenz, pp 242–251 Webster B (1995) Pitfalls of object-oriented development. M T books Arcoverde R, Garcia A, Figueiredo E (2011) Understanding the longevity of code smells: preliminary results of an explanatory survey. In: Proceedings of the 4th workshop on refactoring tools. ACM, Waikiki, pp 33–36 Aniche M (2017) Springlint. http://www.github.com/mauricioaniche/springlint (accessed June 20, 2017) Mazinanian D, Tsantalis N, Mesbah A (2014) Discovering refactoring opportunities in cascading style sheets. In: Proceedings of the 22nd ACM SIGSOFT international symposium on foundations of software engineering. ACM, Hong Kong, pp 496–506 Bird C, Rigby PC, Barr ET, Hamilton DJ, German DM, Devanbu P (2009) The promises and perils of mining git. In: 2009 6th IEEE international working conference on mining software repositories. IEEE, Vancouver, pp 1–10 Grissom RJ, Kim JJ (2005) Effect sizes for research: a broad practical approach, 2nd edn. Lawrence Earlbaum Associates Saboury A, Musavi P, Khomh F, Antoniol G (2017) An empirical study of code smells in javascript projects. In: IEEE 24th international conference on software analysis, evolution and reengineering (SANER). IEEE, Klagenfurt, pp 294–305 Martin RC (2009) Clean code: a handbook of agile software craftsmanship. Pearson Education Ratiu D, Ducasse S, Gîrba T, Marinescu R (2004) Using history information to improve design flaws detection. In: 8th European conference on software maintenance and reengineering (CSMR 2004), 24-26 March 2004. IEEE Computer Society, Tampere, pp 223–232 Yamashita A, Moonen L (2013) Exploring the impact of inter-smell relations on software maintainability: an empirical study. In: Proceedings of the 2013 international conference on software engineering. IEEE Press, San Francisco, pp 682–691 Lanza M, Marinescu R (2007) Object-oriented metrics in practice: using software metrics to characterize, evaluate, and improve the design of object-oriented systems. Springer Science & Business Media Marinescu R (2004) Detection strategies: metrics-based rules for detecting design flaws. In: 20th IEEE international conference on software maintenance. IEEE, Chicago, pp 350–359 KhomhFDi PentaMGuéhéneucY-GAntoniolGAn exploratory study of the impact of antipatterns on class change-and fault-pronenessEmpir Softw Eng201217324327510.1007/s10664-011-9171-y Silva LH, Ramos M, Valente MT, Bergel A, Anquetil N (2015) Does javascript software embrace classes?. In: IEEE 22nd international conference on software analysis, evolution and reengineering (SANER). IEEE, Montreal, pp 73–82 ShepperdMA critique of cyclomatic complexity as a software metricSoftw Eng J198832303610.1049/sej.1988.0003 Mesbah A, Mirshokraie S (2012) Automated analysis of css rules to support style maintenance. In: 34th international conference on software engineering (ICSE). IEEE, Zurich, pp 408–418 Van Deursen A, Moonen L, van den Bergh A, Kok G (2001) Refactoring test code. In: Proceedings of the 2nd international conference on extreme programming and flexible processes in software engineering (XP2001), pp 92–95 SjobergDIYamashitaAAndaBCDMockusADybaTQuantifying the effect of code smells on maintenance effortIEEE Trans Softw Eng20133981144115610.1109/TSE.2012.89 El EmamKBenlarbiSGoelNRaiSNThe confounding effect of class size on the validity of object-oriented metricsIEEE Trans Softw Eng200127763065010.1109/32.935855 Pmd (2017) https://pmd.github.io/ (accessed June 20, 2017) Chen T-H, Shang W, Jiang ZM, Hassan AE, Nasser M, Flora P (2014) Detecting performance anti-patterns for applications developed using object-relational mapping. In: Proceedings of the 36th international conference on software engineering. ACM, Hyderabad, pp 1001–1012 Brown WH, Malveau RC, Mowbray TJ (1998) Antipatterns: refactoring software, architectures, and projects in crisis. Wiley NejmehBANpath: a measure of execution path complexity and its applicationsCommun the ACM198831218820010.1145/42372.42379 Palomba F, Bavota G, Di Penta M, Oliveto R, De Lucia A, Poshyvanyk D (2013) Detecting bad smells in source code using change history information. In: IEEE/ACM 28th international conference on automated software engineering (ASE). IEEE, Palo Alto, pp 268–278 Fischer M, Pinzger M, Gall H (2003) Populating a release history database from version control and bug tracking systems. In: 11th international conference on software maintenance (ICSM). IEEE , Amsterdam Turnaround Z (2017) Top 4 java web frameworks revealed. http://bit.ly/1smVDf9 (Accessed 20 June 2017) Khomh F, Penta MD, Gueheneuc Y-G (2009) An exploratory study of the impact of code smells on software change-proneness. In: 16th working conference on reverse engineering (WCRE). IEEE, Lille , pp 75–84 Palomba F, Bavota G, Di Penta M, Oliveto R, De Lucia A (2014) Do they really smell bad? a study on developers’ perception of bad code smells. In: IEEE international conference on software maintenance and evolution (ICSME). IEEE, Victoria, pp 101–110 KrasnerGEPopeSTA description of the model-view-controller user interface paradigm in the smalltalk-80 systemJ Object Oriented Programming1988132649 McCabe TJ (1976) A complexity measure. IEEE Trans Softw Eng (4):308–320 Fontana FA, Ferme |
References_xml | – reference: Herzig K, Zeller A (2013) The impact of tangled code changes. In: Proceedings of the 10th working conference on mining software repositories, MSR ’13. San Francisco, CA, USA, pp 121–130 – reference: Alves TL, Correia JP, Visser J (2011) Benchmark-based aggregation of metrics to ratings. In: joint conference of the 21st int’l workshop on and 6th int’l conference on software process and product measurement (IWSM-MENSURA). IEEE, Nara – reference: Chatzigeorgiou A, Manakos A (2010) Investigating the evolution of bad smells in object-oriented code. In: International conference on the quality of information and communications technology (QUATIC). IEEE, Oporto, pp 106–115 – reference: Tufano M, Palomba F, Bavota G, Di Penta M, Oliveto R, De Lucia A, Poshyvanyk D (2016) An empirical investigation into the nature of test smells. In: Proceedings of the 31st IEEE/ACM international conference on automated software engineering. ACM, Singapore, pp 4–15 – reference: NejmehBANpath: a measure of execution path complexity and its applicationsCommun the ACM198831218820010.1145/42372.42379 – reference: Hecht G, Rouvoy R, Moha N, Duchien L (2015) Detecting antipatterns in android apps. In: Proceedings of the second ACM international conference on mobile software engineering and systems. IEEE Press, Florence, pp 148–149 – reference: Riel AJ (1996) Object-oriented design heuristics, vol 335. Addison-Wesley Reading – reference: BavotaGDe LuciaADi PentaMOlivetoRPalombaFAn experimental investigation on the innate relationship between quality and refactoringJ Syst Softw201510711410.1016/j.jss.2015.05.024 – reference: Oliveira P, Valente MT, Paim Lima F (2014) Extracting relative thresholds for source code metrics. In: IEEE conference on software maintenance, reengineering and reverse engineering (CSMR-WCRE). IEEE, Antwerp – reference: SjobergDIYamashitaAAndaBCDMockusADybaTQuantifying the effect of code smells on maintenance effortIEEE Trans Softw Eng20133981144115610.1109/TSE.2012.89 – reference: Palomba F, Bavota G, Di Penta M, Oliveto R, De Lucia A (2014) Do they really smell bad? a study on developers’ perception of bad code smells. In: IEEE international conference on software maintenance and evolution (ICSME). IEEE, Victoria, pp 101–110 – reference: KimSWhiteheadEJJrZhangYClassifying software changes: clean or buggy?IEEE Trans Softw Eng200834218119610.1109/TSE.2007.70773 – reference: Grissom RJ, Kim JJ (2005) Effect sizes for research: a broad practical approach, 2nd edn. Lawrence Earlbaum Associates – reference: Fowler M (1997) Refactoring: improving the design of existing code. Addison-Wesley Professional – reference: Olbrich SM, Cruze DS, Sjøberg DI (2010) Are all code smells harmful? A study of god classes and brain classes in the evolution of three open source systems. In: IEEE international conference on software maintenance (ICSM). IEEE, Timisoara – reference: Martin RC (2009) Clean code: a handbook of agile software craftsmanship. Pearson Education – reference: Chen T-H, Shang W, Jiang ZM, Hassan AE, Nasser M, Flora P (2014) Detecting performance anti-patterns for applications developed using object-relational mapping. In: Proceedings of the 36th international conference on software engineering. ACM, Hyderabad, pp 1001–1012 – reference: Bird C, Rigby PC, Barr ET, Hamilton DJ, German DM, Devanbu P (2009) The promises and perils of mining git. In: 2009 6th IEEE international working conference on mining software repositories. IEEE, Vancouver, pp 1–10 – reference: Evans E (2004) Domain-driven design: tackling complexity in the heart of software. Addison-Wesley Professional – reference: Palomba F, Bavota G, Di Penta M, Oliveto R, De Lucia A, Poshyvanyk D (2013) Detecting bad smells in source code using change history information. In: IEEE/ACM 28th international conference on automated software engineering (ASE). IEEE, Palo Alto, pp 268–278 – reference: Mesbah A, Mirshokraie S (2012) Automated analysis of css rules to support style maintenance. In: 34th international conference on software engineering (ICSE). IEEE, Zurich, pp 408–418 – reference: Peters R, Zaidman A (2012) Evaluating the lifespan of code smells using software repository mining. In: 16th European conference on software maintenance and reengineering (CSMR). IEEE, Szeged, pp 411–416 – reference: Brown WH, Malveau RC, Mowbray TJ (1998) Antipatterns: refactoring software, architectures, and projects in crisis. Wiley – reference: KhomhFDi PentaMGuéhéneucY-GAntoniolGAn exploratory study of the impact of antipatterns on class change-and fault-pronenessEmpir Softw Eng201217324327510.1007/s10664-011-9171-y – reference: ChidamberSRKemererCFA metrics suite for object oriented designIEEE Trans Softw Eng199420647649310.1109/32.295895 – reference: Arcoverde R, Garcia A, Figueiredo E (2011) Understanding the longevity of code smells: preliminary results of an explanatory survey. In: Proceedings of the 4th workshop on refactoring tools. ACM, Waikiki, pp 33–36 – reference: Dyer R, Nguyen HA, Rajan H, Nguyen TN (2013) Boa: a language and infrastructure for analyzing ultra-large-scale software repositories. In: Proceedings of the 35th international conference on software engineering. IEEE Press, San Francisco – reference: Van Deursen A, Moonen L, van den Bergh A, Kok G (2001) Refactoring test code. In: Proceedings of the 2nd international conference on extreme programming and flexible processes in software engineering (XP2001), pp 92–95 – reference: Ratiu D, Ducasse S, Gîrba T, Marinescu R (2004) Using history information to improve design flaws detection. In: 8th European conference on software maintenance and reengineering (CSMR 2004), 24-26 March 2004. IEEE Computer Society, Tampere, pp 223–232 – reference: Webster B (1995) Pitfalls of object-oriented development. M T books – reference: El EmamKBenlarbiSGoelNRaiSNThe confounding effect of class size on the validity of object-oriented metricsIEEE Trans Softw Eng200127763065010.1109/32.935855 – reference: Turnaround Z (2017) Top 4 java web frameworks revealed. http://bit.ly/1smVDf9 (Accessed 20 June 2017) – reference: Bavota G, Qusef A, Oliveto R, De Lucia A, Binkley D (2012) An empirical analysis of the distribution of unit test smells and their impact on software maintenance. In: 28th IEEE international conference on software maintenance (ICSM). IEEE, Riva del Garda, pp 56–65 – reference: Fowler M (2002) Patterns of enterprise application architecture. Addison-Wesley Longman Publishing Co. Inc. – reference: KrasnerGEPopeSTA description of the model-view-controller user interface paradigm in the smalltalk-80 systemJ Object Oriented Programming1988132649 – reference: Khomh F, Penta MD, Gueheneuc Y-G (2009) An exploratory study of the impact of code smells on software change-proneness. In: 16th working conference on reverse engineering (WCRE). IEEE, Lille , pp 75–84 – reference: Tufano M, Palomba F, Bavota G, Oliveto R, Di Penta M, De Lucia A, Poshyvanyk D (2017) When and why your code starts to smell bad (and whether the smells go away). IEEE Transactions on Software Engineering – reference: Agrawal R, Imielinski T, Swami AN (1993) Mining association rules between sets of items in large databases. In: Proceedings of the 1993 ACM SIGMOD international conference on management of data. Washington, USA, pp 207–216 – reference: Fard AM, Mesbah A (2013) Jsnose: detecting javascript code smells. In: IEEE 13th international working conference on source code analysis and manipulation (SCAM). IEEE, Eindhoven, pp 116–125 – reference: Aniche M, Bavota G, Treude C, van Deursen A, Gerosa MA (2016a) Code smells for Model-View-Controller architectures: Online appendix. http://dx.doi.org/https://doi.org/10.5281/zenodo.253681 (accessed June 20, 2017) – reference: Yamashita A, Moonen L (2013) Do developers care about code smells? An exploratory survey. In: 20th working conference on reverse engineering (WCRE). IEEE, Koblenz, pp 242–251 – reference: ColemanDLowtherBOmanPThe application of software maintainability models in industrial software systemsJ Syst Softwa199529131610.1016/0164-1212(94)00125-7 – reference: Abbes M, Khomh F, Gueheneuc Y-G, Antoniol G (2011) An empirical study of the impact of two antipatterns, blob and spaghetti code, on program comprehension. In: 15th European conference on software maintenance and reengineering (CSMR). IEEE, Oldenburg, pp 181–190 – reference: Sheskin DJ (2003) Handbook of parametric and nonparametric statistical procedures. CRC Press – reference: Nederlof A, Mesbah A, Deursen Av (2014) Software engineering for the web: the state of the practice. In: Companion proceedings of the 36th international conference on software engineering. ACM, Hyderabad, pp 4–13 – reference: Silva LH, Ramos M, Valente MT, Bergel A, Anquetil N (2015) Does javascript software embrace classes?. In: IEEE 22nd international conference on software analysis, evolution and reengineering (SANER). IEEE, Montreal, pp 73–82 – reference: Saboury A, Musavi P, Khomh F, Antoniol G (2017) An empirical study of code smells in javascript projects. In: IEEE 24th international conference on software analysis, evolution and reengineering (SANER). IEEE, Klagenfurt, pp 294–305 – reference: Fischer M, Pinzger M, Gall H (2003) Populating a release history database from version control and bug tracking systems. In: 11th international conference on software maintenance (ICSM). IEEE , Amsterdam – reference: Marinescu R (2004) Detection strategies: metrics-based rules for detecting design flaws. In: 20th IEEE international conference on software maintenance. IEEE, Chicago, pp 350–359 – reference: Fontana FA, Ferme V, Zanoni M, Yamashita A (2015) Automatic metric thresholds derivation for code smell detection. In: Proceedings of the sixth international workshop on emerging trends in software metrics. IEEE Press, Florence – reference: Mazinanian D, Tsantalis N, Mesbah A (2014) Discovering refactoring opportunities in cascading style sheets. In: Proceedings of the 22nd ACM SIGSOFT international symposium on foundations of software engineering. ACM, Hong Kong, pp 496–506 – reference: Aniche M, Bavota G, Treude C, van Deursen A, Gerosa MA (2016b) A validated set of smells in Model-View-Controller architecture. In: 32nd international conference on software maintenance and evolution (ICSME). Raleigh, USA – reference: MohaNGueheneucY-GDuchienLLe MeurA-FDecor: a method for the specification and detection of code and design smellsIEEE Trans Softw Eng2010361203610.1109/TSE.2009.501209.68142 – reference: ConoverWJPractical nonparametric statistics19983New YorkWiley – reference: LiWShatnawiRAn empirical study of the bad smells and class error probability in the post-release object-oriented system evolutionJ Syst Softw20078071120112810.1016/j.jss.2006.10.018 – reference: Yamashita A, Moonen L (2012) Do code smells reflect important maintainability aspects?. In: 28th IEEE international conference on software maintenance (ICSM). IEEE, Riva del Garda, pp 306–315 – reference: Pmd (2017) https://pmd.github.io/ (accessed June 20, 2017) – reference: Aniche M (2017) Springlint. http://www.github.com/mauricioaniche/springlint (accessed June 20, 2017) – reference: McCabe TJ (1976) A complexity measure. IEEE Trans Softw Eng (4):308–320 – reference: Lanza M, Marinescu R (2007) Object-oriented metrics in practice: using software metrics to characterize, evaluate, and improve the design of object-oriented systems. Springer Science & Business Media – reference: ShepperdMA critique of cyclomatic complexity as a software metricSoftw Eng J198832303610.1049/sej.1988.0003 – reference: Lozano A, Wermelinger M, Nuseibeh B (2007) Assessing the impact of bad smells using historical information. In: Ninth international workshop on principles of software evolution: in conjunction with the 6th ESEC/FSE joint meeting, Dubrovnik, Croatia, IWPSE ’07. ACM, New York, pp 31–34 – reference: Yamashita A, Moonen L (2013) Exploring the impact of inter-smell relations on software maintainability: an empirical study. In: Proceedings of the 2013 international conference on software engineering. IEEE Press, San Francisco, pp 682–691 – reference: Alves TL, Ypma C, Visser J (2010) Deriving metric thresholds from benchmark data. In: IEEE international conference on software maintenance (ICSM). IEEE, Timisoara – reference: JayGHaleJESmithRKHaleDPKraftNAWardCCyclomatic complexity and lines of code: Empirical evidence of a stable linear relationshipJ Softw Eng Appl20092313714310.4236/jsea.2009.23020 |
SSID | ssj0009745 |
Score | 2.3924806 |
Snippet | Previous studies have shown the negative effects that low-quality code can have on maintainability proxies, such as code change- and defect-proneness. One of... |
SourceID | springer |
SourceType | Publisher |
StartPage | 2121 |
SubjectTerms | Compilers Computer Science Interpreters Programming Languages Software Engineering/Programming and Operating Systems |
Title | Code smells for Model-View-Controller architectures |
URI | https://link.springer.com/article/10.1007/s10664-017-9540-2 |
Volume | 23 |
hasFullText | 1 |
inHoldings | 1 |
isFullTextHit | |
isPrint | |
link | http://utb.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlV1LS8NAEB60vXjxLT5LDt5kIY995VhCa1H0ZKWewiY7C0JswUT8-86mCS3oxePCsLAzOy--eQDcWi1CxzFhMjSScRtJptHRsVQYF2nhUvSJ4tOznM35w0Isuj7uuq927yHJ1lJvNbtJ6SsmPOTIQ0Z2dygodfffeh6PN5N2VbuZ2M_WYwk59B7K_OuKX_Bn61Wmh7DfhYPBeC2_I9jB5TEc9KsWgk7zTiDJVhaD-gOrqg4ozgz8DrOKvb7jN8vW1eYV0W_DAvUpzKeTl2zGun0HrCYv0TArrfbTUaLYmgiFSErtpE2R1CR2lKcU0oc3GhMXKsvRKqsjokMXWWNiI5MzGCxXSzyHoNAcY106UyrJhTLGkRRUIVONlJ8IdwF3_cPz7tPW-WaCsWdTTmzKPZvy-PJf1FewR1GFXlfJXcOg-fzCG_LcTTGC4fj-7XEygt1MZqNWbj-_upOS |
linkProvider | Springer Nature |
linkToHtml | http://utb.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlV1LSwMxEA7SHvRifeLbPXiTyD6ySfZYSmu1j1Mr9bRkNxMQ1xbcLYK_3kl3lxb10uPCsIRJJjPD9-UbQu60DF3DIKDcVZwy7XEqweBnKsBPosREYBvF0Zj3p-x5Fs6qd9x5zXavIcnVTb3x2I1zy5iwkCNzKd67TYYteNggzfbj66C71toVq9nEVl2PBpjSazDzv5_8AUBXeaXXIpN6RSWd5P1hWSQP6fcvscYtl3xA9qs602mXB-OQ7MD8iLTqGQ5OFdLHJOgsNDj5B2RZ7mAB69jhaBl9eYMv2ilp7Bnab-IN-QmZ9rqTTp9WgxRojumnoJpraWVXPF8rD8IwSKXhOgKMP99gA5RwWzdJCIwrNAMttPTQDoynlfIVD05JY76YwxlxEsnAl6lRqeAsFEoZ3F6R8EgCNj6hOSf3tSviKhryeC2NbP0Roz9i64_Yv9jK-pbs9iejYTx8Gg8uyR6WLrKk4l2RRvG5hGssD4rkpjoOP3_ksNg |
linkToPdf | http://utb.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwlV1LS8QwEA6iIF58i2978CZh-0gn6VGqy_paPLiyt5I2ExBqV2zFv-9k27ILevFYGAqZSTIzfF--YezSqNi3AiMOvgYuTABcoaXPQmKYJ7lN0DWKT2MYTcT9NJ52c07rnu3eQ5Ltmwan0lQ1gw9jB0sP3wAce8LBj8LndAevUaMSOE5fCulCdVfOpxQ7nT0eUXLvYc2_fvELCp1nmOE22-xKQ--6jeUOW8Fql231Yxe87hTusSidGfTqdyzL2qOa03PzzEr--obfPG2Z5yXZL0ME9T6bDG9f0hHvZh_wmjJGww0Y5ZRSgtDoAOM4KpQFkyAdmdBSz5KDK3UURtaXRqCRRgVkhzYwWocaogO2Ws0qPGRergSGqrC6kCBiqbWliMgcEoXUq8T2iF31C8-6DVxnCzVj56aM3JQ5N2Xh8b-sL9j6880we7wbP5ywDSo2VEueO2WrzecXnlFCb_LzedB-AM0TmDo |
openUrl | ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Code+smells+for+Model-View-Controller+architectures&rft.jtitle=Empirical+software+engineering+%3A+an+international+journal&rft.au=Aniche%2C+Maur%C3%ADcio&rft.au=Bavota%2C+Gabriele&rft.au=Treude%2C+Christoph&rft.au=Gerosa%2C+Marco+Aur%C3%A9lio&rft.date=2018-08-01&rft.pub=Springer+US&rft.issn=1382-3256&rft.eissn=1573-7616&rft.volume=23&rft.issue=4&rft.spage=2121&rft.epage=2157&rft_id=info:doi/10.1007%2Fs10664-017-9540-2&rft.externalDocID=10_1007_s10664_017_9540_2 |
thumbnail_l | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=1382-3256&client=summon |
thumbnail_m | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=1382-3256&client=summon |
thumbnail_s | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=1382-3256&client=summon |