Skip to main content

Toward a Catalogue of Architectural Bad Smells

  • Conference paper
Architectures for Adaptive Software Systems (QoSA 2009)

Part of the book series: Lecture Notes in Computer Science ((LNPSE,volume 5581))

Included in the following conference series:

Abstract

An architectural bad smell is a commonly (although not always intentionally) used set of architectural design decisions that negatively impacts system lifecycle properties, such as understandability, testability, extensibility, and reusability. In our previous short paper, we introduced the notion of architectural bad smells and outlined a few common smells. In this paper, we significantly expand upon that work. In particular, we describe in detail four representative architectural smells that emerged from reverse-engineering and re-engineering two large industrial systems and from our search through case studies in research literature. For each of the four architectural smells, we provide illustrative examples and demonstrate the smell’s impact on system lifecycle properties. Our experiences indicate the need to identify and catalog architectural smells so that software architects can discover and eliminate them from system designs.

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

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.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

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Mens, T., Tourwe, T.: A survey of software refactoring. IEEE Transactions on Software Engineering (January 2004)

    Google Scholar 

  2. Fowler, M.: Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional, Reading (1999)

    MATH  Google Scholar 

  3. Garcia, J., Daniel Popescu, G.E., Medvidovic, N.: Identifying Architectural Bad Smells. In: 13th European Conference on Software Maintenance and Reengineering (2009)

    Google Scholar 

  4. Bowman, I., Holt, R., Brewster, N.: Linux as a case study: its extracted software architecture. In: Proc. of the 21st International Conference on Software Engineering (1999)

    Google Scholar 

  5. Mattmann, C.A., Garcia, J., Krka, I., Popescu, D., Medvidovic, N.: The anatomy and physiology of the grid revisited. Technical Report USC-CSSE-2008-820, Univ. of Southern California (2008)

    Google Scholar 

  6. Taylor, R., Medvidovic, N., Dashofy, E.: Software Architecture: Foundations, Theory, and Practice. John Wiley & Sons, Chichester (2008)

    Google Scholar 

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

    Google Scholar 

  8. Shaw, M., Garlan, D.: Software architecture: perspectives on an emerging discipline. Prentice-Hall, Inc., Upper Saddle River (1996)

    MATH  Google Scholar 

  9. Marinescu, R.: Detection strategies: metrics-based rules for detecting design flaws. In: Proc. of the 20th IEEE International Conference on Software Maintenance (2004)

    Google Scholar 

  10. Lozano, A., Wermelinger, M., Nuseibeh, B.: Assessing the impact of bad smells using historical information. In: 9th International Workshop on Principles of Software Evolution (2007)

    Google Scholar 

  11. Brown, W.J., Malveau, R.C., McCormick III, H.W., Mowbray, T.J., Wiley, J., Sons, I.: AntiPatterns - Refactoring Software, Architectures, and Projects in Crisis. Wiley, New York (1998)

    Google Scholar 

  12. Garlan, D., Allen, R., Ockerbloom, J.: Architectural mismatch or why it’s hard to build systems out of existing parts. In: Proc. of the 17th International Conference on Software Engineering (1995)

    Google Scholar 

  13. Gacek, C.: Detecting Architectural Mismatches During Systems Composition. PhD thesis, Univ. of Southern California (1998)

    Google Scholar 

  14. Abd-Allah, A.: Composing heterogeneous software architectures. PhD thesis, University of Southern California (1996)

    Google Scholar 

  15. Roshandel, R.: Calculating architectural reliability via modeling and analysis. In: Proc. of the 26th International Conference on Software Engineering (2004)

    Google Scholar 

  16. Leveson, N.G.: Safeware: System Safety and Computers. Addison-Wesley, Reading (1995)

    Google Scholar 

  17. Foster, I., et al.: The anatomy of the grid: Enabling scalable virtual organizations. International Journal of High Performance Computing Applications 15(3) (2001)

    Google Scholar 

  18. Mattmann, C., Medvidovic, N., Ramirez, P., Jakobac, V.: Unlocking the Grid. In: Heineman, G.T., Crnković, I., Schmidt, H.W., Stafford, J.A., Szyperski, C., Wallnau, K. (eds.) CBSE 2005. LNCS, vol. 3489, pp. 322–336. Springer, Heidelberg (2005)

    Chapter  Google Scholar 

  19. Malek, S., Seo, C., Ravula, S., Petrus, B., Medvidovic, N.: Reconceptualizing a family of heterogeneous embedded systems via explicit architectural support. In: Proc. of the 29th International Conference on Software Engineering (2007)

    Google Scholar 

  20. Seo, C., Malek, S., Edwards, G., Popescu, D., Medvidovic, N., Petrus, B., Ravula, S.: Exploring the role of software architecture in dynamic and fault tolerant pervasive systems. In: International Workshop on Software Engineering for Pervasive Computing Applications, Systems and Environments (2007)

    Google Scholar 

  21. Godfrey, M.W., Lee, E.H.S.: Secrets from the monster: Extracting mozilla’s software architecture. In: Proc. of the Second International Symposium on Constructing Software Engineering Tools (2000)

    Google Scholar 

  22. Gröne, B., Knöpfel, A., Kugel, R.: Architecture recovery of apache 1.3 – a case study. In: Proc. of the International Conference on Software Engineering Research and Practice 2002 (2002)

    Google Scholar 

  23. Tran, J., Godfrey, M., Lee, E., Holt, R.: Architectural repair of open source software. In: 8th International Workshop on Program Comprehension (2000)

    Google Scholar 

  24. Shaw, M., et al.: Abstractions for software architecture and tools to support them. IEEE Transactions on Software Engineering (1995)

    Google Scholar 

  25. Mehta, N.R., Medvidovic, N., Phadke, S.: Towards a taxonomy of software connectors. In: Proc. of the 22nd International Conference on Software Engineering (2000)

    Google Scholar 

  26. Tatebe, O., Morita, Y., Matsuoka, S., Soda, N., Sekiguchi, S.: Grid datafarm architecture for petascale data intensive computing. In: Proc. of the 2nd IEEE/ACM International Symposium on Cluster Computing and the Grid (2002)

    Google Scholar 

  27. Kiczales, G., Hilsdale, E.: Aspect-Oriented Programming. Springer, Heidelberg (2003)

    MATH  Google Scholar 

  28. Haase, K.: Java message service tutorial (2002)

    Google Scholar 

  29. Oki, B., Pfluegl, M., Siegel, A., Skeen, D.: The Information Bus: an architecture for extensible distributed systems. In: Proc. of the 14th ACM Symposium on Operating Systems Principles (1994)

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2009 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Garcia, J., Popescu, D., Edwards, G., Medvidovic, N. (2009). Toward a Catalogue of Architectural Bad Smells. In: Mirandola, R., Gorton, I., Hofmeister, C. (eds) Architectures for Adaptive Software Systems. QoSA 2009. Lecture Notes in Computer Science, vol 5581. Springer, Berlin, Heidelberg. https://doi.org/10.1007/978-3-642-02351-4_10

Download citation

  • DOI: https://doi.org/10.1007/978-3-642-02351-4_10

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-642-02350-7

  • Online ISBN: 978-3-642-02351-4

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics