  Context: Software Architecture (SA) and Source Code (SC) are two intertwined
artefacts that represent the interdependent design decisions made at different
levels of abstractions - High-Level (HL) and Low-Level (LL). An understanding
of the relationships between SA and SC is expected to bridge the gap between SA
and SC for supporting maintenance and evolution of software systems. Objective:
We aimed at exploring practitioners' understanding about the relationships
between SA and SC. Method: We used a mixed-method that combines an online
survey with 87 respondents and an interview with 8 participants to collect the
views of practitioners from 37 countries about the relationships between SA and
SC. Results: Our results reveal that: practitioners mainly discuss five
features of relationships between SA and SC; a few practitioners have adopted
dedicated approaches and tools in the literature for identifying and analyzing
the relationships between SA and SC despite recognizing the importance of such
information for improving a system's quality attributes, especially
maintainability and reliability. It is felt that cost and effort are the major
impediments that prevent practitioners from identifying, analyzing, and using
the relationships between SA and SC. Conclusions: The results have empirically
identified five features of relationships between SA and SC reported in the
literature from the perspective of practitioners and a systematic framework to
manage the five features of relationships should be developed with dedicated
approaches and tools considering the cost and benefit of maintaining the
relationships.
