Empirical research in software architecture: opportunities, challenges, and approaches
Muhammad Ali Babar, Patricia Lago, Arie van Deursen · Empirical Software Engineering · 2011
Software architecture has become an important area of research and practice since the late 1980s (Shaw and Clements 2006 ). The term “software architecture” started gaining acceptance by the software engineering community in early 1990s but the foundations of this field were laid by the seminal work of Edsger Dijkstra, David Parnas, and others between 1960s and 1980s (Clements 2000 ). The increasing size and complexity of software systems and demand for high quality are some of the most important factors that have driven the increased interest in this sub-discipline of software engineering. It has generally been realized that a high-level design description can play an important role in successfully understanding and managing large and complex software systems (Clements et al. 2002 ; Lung and Kalaichelvan 2000 ). The high-level design decisions regarding the software architecture of a system are not only the hardest and most expensive to change but also play a fundamental role in setting the boundaries for the required quality attributes such as maintainability, reliability, usability, performance, and flexibility of a system (Bass et al. 2003 ; Clement and Northorp 1996 ).