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...

Full description

Saved in:
Bibliographic Details
Published inEmpirical software engineering : an international journal Vol. 23; no. 4; pp. 2121 - 2157
Main Authors Aniche, Maurício, Bavota, Gabriele, Treude, Christoph, Gerosa, Marco Aurélio, van Deursen, Arie
Format Journal Article
LanguageEnglish
Published New York Springer US 01.08.2018
Subjects
Online AccessGet full text
ISSN1382-3256
1573-7616
DOI10.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