When, Where, and Why Software Systems Decay and What We Can Do About It(slides-.pptx, 16.2M)
3:00 pm - 4:00 pm
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 techniques that aim to recover a system's architectural design from the system's implementation.
ABOUT THE SPEAKER
Nenad Medvidovic 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 Medvidovic served as Director of the USC Center for Systems and Software Engineering (CSSE). He is a faculty associate of the Institute for Software Research (ISR) at the University of California, Irvine. Medvidovic was the Program Co-Chair of the 2011 International Conference on Software Engineering (ICSE 2011). Medvidovic received his Ph.D. in 1999 from the Department of Information and Computer Science at UC Irvine. He also received an M.S. in Information and Computer Science in 1995 from UC Irvine, and a B.S. in Computer Science summa cum laude in 1992 from the Computer Science and Engineering Department at Arizona State University. Medvidovic 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. His paper "A Classification and Comparison Framework for Software Architecture Description Languages". Medvidovic was recognized by the Elsevier Information and Software Technology Journal as the most cited journal article in software engineering published in 2000. Medvidovic'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. Medvidovic is a member of ACM, ACM SIGSOFT, IEEE, and IEEE Computer Society.