Architectural Knowledge for Technology Decisions in Developer Communities: An Exploratory Study with StackOverflow

Architectural decisions have a big influence on basic properties of a software system, and are difficult to change once implemented. Technology decisions deserve special attention because they are one of the most frequently occurring types of architectural decisions. Architectural knowledge is crucial for good decisions. Current architecture knowledge management approaches try to support architects by offering a rich base of architectural solutions and design decision rules. However, they mostly depend on manually capturing and maintaining the architectural knowledge. In this paper, we utilize the most popular online software development community (StackOverflow) as a source of knowledge for technology decisions to support architecture knowledge management approaches with a more efficient methods for knowledge capturing. We conducted an exploratory study, and followed a qualitative and quantitative content analysis approach. We analysed the posts in this community to identify architecture-relevant and technology-related knowledge, and to classify the posts into different types for the purpose of knowledge structuring. In addition, we evaluated our findings through feedback from practitioners.

[1]  Rainer Weinreich,et al.  Classification of Design Decisions - An Expert Survey in Practice , 2013, ECSA.

[2]  Alberto Maria Segre,et al.  Programs for Machine Learning , 1994 .

[3]  P. Mayring Qualitative content analysis: theoretical foundation, basic procedures and software solution , 2014 .

[4]  Walid Maalej,et al.  How do open source communities blog? , 2012, Empirical Software Engineering.

[5]  Uwe Zdun,et al.  Enriching Architecture Knowledge with Technology Design Decisions , 2015, 2015 12th Working IEEE/IFIP Conference on Software Architecture.

[6]  Robert L. Nord,et al.  A general model of software architecture design derived from five industrial approaches , 2007, J. Syst. Softw..

[7]  Jacob Cohen A Coefficient of Agreement for Nominal Scales , 1960 .

[8]  Frank Buschmann,et al.  Pattern-Oriented Software Architecture, a Pattern Language for Distributed Computing , 2007 .

[9]  Jan Bosch,et al.  Software Architecture as a Set of Architectural Design Decisions , 2005, 5th Working IEEE/IFIP Conference on Software Architecture (WICSA'05).

[10]  Frank Leymann,et al.  Managing architectural decision models with dependency relations, integrity constraints, and production rules , 2009, J. Syst. Softw..

[11]  Georg von Krogh,et al.  How does social software change knowledge management? Toward a strategic research agenda , 2012, J. Strateg. Inf. Syst..

[12]  Frank Maurer,et al.  What makes a good code example?: A study of programming Q&A in StackOverflow , 2012, 2012 28th IEEE International Conference on Software Maintenance (ICSM).

[13]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[14]  Ian H. Witten,et al.  The WEKA data mining software: an update , 2009, SKDD.

[15]  Douglas C. Schmidt,et al.  A pattern language for distributed computing , 2007 .

[16]  John Klein,et al.  Architecture Knowledge for Evaluating Scalable Databases , 2015, 2015 12th Working IEEE/IFIP Conference on Software Architecture.

[17]  Robert Rosenthal,et al.  Beginning Behavioral Research: A Conceptual Primer , 1993 .