Architectural Decay in Software Systems: Symptoms, Causes, and Remedies

Nenad Medvidović - University of Southern California

Nov. 1, 2013, 1 p.m. - Nov. 1, 2013, 2 p.m.


Engineers frequently neglect to carefully consider the impact of their changes to a software system. As a result, the software system's architectural design eventually deviates from the original designers' intent and degrades through unplanned introduction of new and/or invalidation of existing design decisions. Architectural decay increases the cost of making new modifications and decreases a system's reliability, until engineers are no longer able to effectively evolve the system. At that point, the system's actual architecture may have to be recovered from the implementation artifacts, but this is a time-consuming and error-prone process, and leaves critical issues unresolved: the problems caused by architectural decay will likely be obfuscated by the system's many elements and their interrelationships, thus risking further decay. In this talk I will focus on pinpointing locations in a software system's architecture that reflect architectural decay. I will discuss the reasons why that decay occurs. Specifically, I will present an emerging catalog of commonly occurring symptoms of decay -- architectural "smells". I will illustrate the occurrence of smells identified in the process of recovering the architectures of several real-world systems. Finally, I will provide a comparative analysis of a number of automated techniques that aim to recover a system's architectural design from the system's implementation. Nenad Medvidović is a Professor and Associate Chair for Ph.D. Affairs in the Computer Science Department at the University of Southern California. Between 2009 and 2013 Medvidović served as Director of the USC Center for Systems and Software Engineering (CSSE). He was the Program Co-Chair of the 2011 International Conference on Software Engineering (ICSE 2011). Medvidović received his Ph.D. in 1999 from the Department of Information and Computer Science at UC Irvine. He is a recipient of the National Science Foundation CAREER (2000) award, the Okawa Foundation Research Grant (2005), the IBM Real-Time Innovation Award (2007), and the USC Mellon Mentoring Award (2010). He is a co-author of the ICSE 1998 paper titled "Architecture-Based Runtime Software Evolution", which was recognized as that conference's Most Influential Paper. Medvidović's research interests are in the area of architecture-based software development. His work focuses on software architecture modeling and analysis; middleware facilities for architectural implementation; domain-specific architectures; architectural styles; and architecture-level support for software development in highly distributed, mobile, resource constrained, and embedded computing environments. He is a co-author of a textbook on software architectures. Medvidović is a member of ACM, ACM SIGSOFT, IEEE, and IEEE Computer Society.