Recovering Architectural Design Decisions
by Arman Shahbazian, Youn Kyu Lee, Duc Le, Yuriy Brun, Nenad Medvidovic
Abstract:

Designing and maintaining a software system's architecture typically involve making numerous design decisions, each potentially affecting the system's functional and nonfunctional properties. Understanding these design decisions can help inform future decisions and implementation choices and can avoid introducing regressions and architectural inefficiencies later. Unfortunately, design decisions are rarely well documented and are typically a lost artifact of the architecture creation and maintenance process. The loss of this information can thus hurt development. To address this shortcoming, we develop RecovAr, a technique for automatically recovering design decisions from the project's readily available history artifacts, such as an issue tracker and version control repository. RecovAr uses state-of-the-art architectural recovery techniques on a series of version control commits and maps those commits to issues to identify decisions that affect system architecture. While some decisions can still be lost through this process, our evaluation on Hadoop and Struts, two large open-source systems with over 8 years of development each and, on average, more than 1 million lines of code, shows that RecovAr has the recall of 75% and a precision of 77%. Our work formally defines architectural design decisions and develops an approach for tracing such decisions in project histories. Additionally, the work introduces methods to classify whether decisions are architectural and to map decisions to code elements. Finally, our work contributes a methodology engineers can follow to preserve design-decision knowledge in their projects.

Citation:
Arman Shahbazian, Youn Kyu Lee, Duc Le, Yuriy Brun, and Nenad Medvidovic, Recovering Architectural Design Decisions, in Proceedings of the IEEE International Conference on Software Architecture (ICSA), 2018, pp. 95–104.
Bibtex:
@inproceedings{Shahbazian18icsa,
  author = {Arman Shahbazian and Youn Kyu Lee and Duc Le and Yuriy Brun and Nenad Medvidovic},
  title = {\href{http://people.cs.umass.edu/brun/pubs/pubs/Shahbazian18icsa.pdf}{Recovering Architectural Design Decisions}},
  booktitle = {Proceedings of the IEEE International Conference on Software Architecture (ICSA)},
  venue = {ICSA},
  address = {Seattle, WA, USA},
  month = {May},
  date = {2--4},
  year = {2018},
  pages = {95--104},
  doi = {10.1109/ICSA.2018.00019},
  note = {\href{https://doi.org/ 10.1109/ICSA.2018.00019}{DOI: 10.1109/ICSA.2018.00019}},

  accept = {$\frac{22}{86} \approx 26\%$},

  abstract = {<p>Designing and maintaining a software system's architecture typically involve
  making numerous design decisions, each potentially affecting the system's
  functional and nonfunctional properties. Understanding these design decisions
  can help inform future decisions and implementation choices and can avoid
  introducing regressions and architectural inefficiencies later.
  Unfortunately, design decisions are rarely well documented and are typically
  a lost artifact of the architecture creation and maintenance process. The
  loss of this information can thus hurt development. To address this
  shortcoming, we develop RecovAr, a technique for automatically recovering
  design decisions from the project's readily available history artifacts, such
  as an issue tracker and version control repository. RecovAr uses
  state-of-the-art architectural recovery techniques on a series of version
  control commits and maps those commits to issues to identify decisions that
  affect system architecture. While some decisions can still be lost through
  this process, our evaluation on Hadoop and Struts, two large open-source
  systems with over 8 years of development each and, on average, more than 1
  million lines of code, shows that RecovAr has the recall of 75% and a
  precision of 77%. Our work formally defines architectural design decisions
  and develops an approach for tracing such decisions in project histories.
  Additionally, the work introduces methods to classify whether decisions are
  architectural and to map decisions to code elements. Finally, our work
  contributes a methodology engineers can follow to preserve design-decision
  knowledge in their projects.</p>},

  fundedBy = {NSF CCF-1453474, NSF CCF-1564162, NSF CCF-1618231, NSF CCF-1717963, 
  U.S. Office of Naval Research N00014-17-1-2896, Huawei Technologies},  
}