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.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Mens, T., Tourwe, T.: A survey of software refactoring. IEEE Transactions on Software Engineering (January 2004)
Fowler, M.: Refactoring: Improving the Design of Existing Code. Addison-Wesley Professional, Reading (1999)
Garcia, J., Daniel Popescu, G.E., Medvidovic, N.: Identifying Architectural Bad Smells. In: 13th European Conference on Software Maintenance and Reengineering (2009)
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)
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)
Taylor, R., Medvidovic, N., Dashofy, E.: Software Architecture: Foundations, Theory, and Practice. John Wiley & Sons, Chichester (2008)
Lippert, M., Roock, S.: Refactoring in Large Software Projects: Performing Complex Restructurings Successfully. Wiley, Chichester (2006)
Shaw, M., Garlan, D.: Software architecture: perspectives on an emerging discipline. Prentice-Hall, Inc., Upper Saddle River (1996)
Marinescu, R.: Detection strategies: metrics-based rules for detecting design flaws. In: Proc. of the 20th IEEE International Conference on Software Maintenance (2004)
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)
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)
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)
Gacek, C.: Detecting Architectural Mismatches During Systems Composition. PhD thesis, Univ. of Southern California (1998)
Abd-Allah, A.: Composing heterogeneous software architectures. PhD thesis, University of Southern California (1996)
Roshandel, R.: Calculating architectural reliability via modeling and analysis. In: Proc. of the 26th International Conference on Software Engineering (2004)
Leveson, N.G.: Safeware: System Safety and Computers. Addison-Wesley, Reading (1995)
Foster, I., et al.: The anatomy of the grid: Enabling scalable virtual organizations. International Journal of High Performance Computing Applications 15(3) (2001)
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)
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)
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)
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)
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)
Tran, J., Godfrey, M., Lee, E., Holt, R.: Architectural repair of open source software. In: 8th International Workshop on Program Comprehension (2000)
Shaw, M., et al.: Abstractions for software architecture and tools to support them. IEEE Transactions on Software Engineering (1995)
Mehta, N.R., Medvidovic, N., Phadke, S.: Towards a taxonomy of software connectors. In: Proc. of the 22nd International Conference on Software Engineering (2000)
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)
Kiczales, G., Hilsdale, E.: Aspect-Oriented Programming. Springer, Heidelberg (2003)
Haase, K.: Java message service tutorial (2002)
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)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights 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)