Skip to main content

Towards Detecting MVC Architectural Smells

  • Conference paper
  • First Online:

Part of the book series: Advances in Intelligent Systems and Computing ((AISC,volume 688))

Abstract

The term “bad smell” denotes a symptom of poor design or implementation that negatively impacts a software system’s properties. The research community has been actively identifying the characteristics of bad smells bad smells as well as developing approaches for detecting and fixing them. However, most of these efforts focus on smells that occur at code level: little consideration is given to smells that occur at higher levels of abstraction. This paper presents an initial effort to fill this gap by contributing to (i) the characterization of bad smells that are relevant to the Model-View-Controller architectural style and (ii) assessing the feasibility of their automatic detection using text analysis techniques in five systems, implemented with the Yii Framework. The obtained results show that the defined smells exist in practice and give some insight into which of them tend to occur more frequently. Regarding the automatic detection method, results show that it exhibits good performance and accuracy.

This is a preview of subscription content, log in via an institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD   129.00
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD   169.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Fowler, M., Beck, K., Brant, J., Opdyke, W., Roberts, D.: Refactoring: Improving the Design of Existing Code. Addison-Wesley (1999).

    Google Scholar 

  2. Source Makings, Code Smells, https://sourcemaking.com/refactoring/smells

  3. Garcia, J., Popescu, D., Edwards, G., Medvidovic, N.: Toward a catalogue of architectural bad smells. In 5th International Conference on the Quality of Software Architectures, pp. 146—162. Springer-Verlag, Berlin, Heidelberg (2009).

    Google Scholar 

  4. Brown, N., Cai, Y., Guo, Y., Kazman, R., Kim, M., Kruchten, P., Lim, E., MacCormack, A., Nord, R. L., Ozkaya, I., Sangwan, R. S., Seaman, C.B., Sullivan, K.J., Zazworka, N.: Managing technical debt in software reliant systems. In Workshop on Future of Software Engineering Research, at the 18th ACM SIGSOFT International Symposium on Foundations of Software Engineering, pp. 47–52. ACM (2010).

    Google Scholar 

  5. Ganesh, S.G., Sharma, T., Suryanarayana, G.: Towards a Principle-based Classification of Structural Design Smells. Journal of Object Technology, 12 (2), 1-29 (2013).

    Google Scholar 

  6. Fernandes, E., Oliveira, J., Vale, G. Paiva, T., Figueiredo, E.: A review-based comparative study of bad smell detection tools. In 20th International Conference on Evaluation and Assessment in Software Engineering, pp. 109–120. ACM, New York (2016).

    Google Scholar 

  7. Best MVC Practices, http://www.yiiframework.com/doc/guide/1.1/en/basics.best-practices

  8. yiiFramework, http://www.yiiframework.com

  9. Bass, L., Clements, P., Kazman, R.: Software Architecture in Practice. Addison-Wesley Professional (2012).

    Google Scholar 

  10. Spring, https://spring.io

  11. Django, https://www.djangoproject.com

  12. Rails, http://rubyonrails.org

  13. Laravel, https://laravel.com

  14. Lippert, M., Roock, S.: Refactoring in Large Software Projects: Performing Complex Restructurings Successfully. Wiley (2006).

    Google Scholar 

  15. PHP_CodeSniffer, https://pear.php.net/package/PHP_CodeSniffer

  16. Vale, G., Figueiredo, E., Abílio, R., Costa, H.: Bad Smells in Software Product Lines: A Systematic Review. In Eighth Brazilian Symposium on Software Components, Architectures and Reuse, pp. 84–94. IEEE Computer Society, Washington, DC (2014).

    Google Scholar 

  17. Bavota, G., De Lucia, A., Di Penta, M., Oliveto, R., Palomba, F.: An Experimental Investigation on the Innate Relationship between Quality and Refactoring. Journal of Systems and Software, 107, 1–14 (2015).

    Google Scholar 

  18. Khomh, F., Vaucher, S., Guéhéneuc, Y., Sahraoui, H.: BDTEX: A GQM-based Bayesian Approach for the Detection of Antipatterns. Journal of Systems and Software, 84, 559–572 (2011).

    Google Scholar 

  19. Maiga, A., Ali, N., Bhattacharya, N., Sabané, A., Guéhéneuc, Y. G., Antoniol, G., Aimeur, E.: Support Vector Machines for Anti-pattern Detection. In 27th International Conference on Automated Software Engineering, pp. 278–281. IEEE Press, New York (2012).

    Google Scholar 

  20. Vidal, S., Marcos, C., Díaz-Pace, J.: An Approach to Prioritize Code Smells for Refactoring. Automated Software Engineering, 23, 501–532 (2014).

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Perla Velasco-Elizondo .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2018 Springer International Publishing AG

About this paper

Cite this paper

Velasco-Elizondo, P., Castañeda-Calvillo, L., García-Fernandez, A., Vazquez-Reyes, S. (2018). Towards Detecting MVC Architectural Smells. In: Mejia, J., Muñoz, M., Rocha, Á., Quiñonez, Y., Calvo-Manzano, J. (eds) Trends and Applications in Software Engineering. CIMPS 2017. Advances in Intelligent Systems and Computing, vol 688. Springer, Cham. https://doi.org/10.1007/978-3-319-69341-5_23

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-69341-5_23

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-69340-8

  • Online ISBN: 978-3-319-69341-5

  • eBook Packages: EngineeringEngineering (R0)

Publish with us

Policies and ethics