Abstract
Programming question and answer (Q&A) websites, such as Stack Overflow, leverage the knowledge and expertise of users to provide answers to technical questions. Over time, these websites turn into repositories of software engineering knowledge. Such knowledge repositories can be invaluable for gaining insight into the use of specific technologies and the trends of developer discussions. Previous work has focused on analyzing the user activities or the social interactions in Q&A websites. However, analyzing the actual textual content of these websites can help the software engineering community to better understand the thoughts and needs of developers. In the article, we present a methodology to analyze the textual content of Stack Overflow discussions. We use latent Dirichlet allocation (LDA), a statistical topic modeling technique, to automatically discover the main topics present in developer discussions. We analyze these discovered topics, as well as their relationships and trends over time, to gain insights into the development community. Our analysis allows us to make a number of interesting observations, including: the topics of interest to developers range widely from jobs to version control systems to C# syntax; questions in some topics lead to discussions in other topics; and the topics gaining the most popularity over time are web development (especially jQuery), mobile applications (especially Android), Git, and MySQL.








Similar content being viewed by others
References
Adamic LA, Zhang J, Bakshy E, Ackerman MS (2008) Knowledge sharing and Yahoo answers: everyone knows something. In: Proceedings of the 17th international conference on World Wide Web, pp 665–674
Apache Subversion (2012) http://subversion.apache.org/. Accessed 29 Sept 2012
Bajracharya S, Lopes C (2012) Analyzing and mining a code search engine usage log. Empir Software Eng 17:424–466
Barnard K, Duygulu P, Forsyth D, De Freitas N, Blei DM, Jordan MI (2003) Matching words and pictures. J Mach Learn Res 3:1107–1135
Barua A, Thomas SW, Hassan AE (2012) Replication package. http://sailhome.cs.queensu.ca/replication/stackoverflow. Accessed 29 Sept 2012
Becher M, Freiling FC, Hoffmann J, Holz T, Uellenbeck S, Wolf C (2011) Mobile security catching up? Revealing the nuts and bolts of the security of mobile devices. In: IEEE symposium on security and privacy, pp 96–111
Blei DM, Lafferty J (2009) Topic models. Text mining: theory and applications. Taylor and Francis, London
Blei DM, Ng AY, Jordan MI (2003) Latent Dirichlet allocation. J Mach Learn Res 3:993–1022
Cox D, Stuart A (1955) Some quick sign tests for trend in location and dispersion. Biometrika 42(1–2):80–95
Díaz-Herrera JL (2005) Computing & information sciences: the discipline, careers, and future directions. In: ACM southeast regional conference
Dugan RF (2004) Performance lies my professor told me: the case for teaching software performance engineering to undergraduates. In: Proceedings of the 4th international workshop on software and performance, pp 37–48
Evans Data Corporation (2011) Software development platforms—2011 rankings. http://www.evansdata.com/reports/viewRelease_download.php?reportID=19. Accessed 29 Sept 2012
Gamma E, Helm R, Johnson R, Vlissides J (1995) Design patterns: elements of reusable object-oriented software. Addison-Wesley, Boston
Geman S, Geman D (1984) Stochastic relaxation, Gibbs distributions, and the Bayesian restoration of images. IEEE Trans Pattern Anal Mach Intelli PAMI-6(6):721–741
Git SCM (2012) http://git-scm.com/. Accessed 29 Sept 2012
Google Play (2012) https://play.google.com/about/features. Accessed 29 Sept 2012
Grant S, Cordy JR (2010) Estimating the optimal number of latent concepts in source code analysis. In: Proceedings of the 10th international working conference on source code analysis and manipulation, pp 65–74
Griffiths TL, Steyvers M (2004) Finding scientific topics. Proc Natl Acad Sci 101:5228–5235
Griffiths TL, Steyvers M, Tenenbaum JB (2007) Topics in semantic representation. Psychol Rev 114(2):211–244
Gyöngyi Z, Koutrika G, Pedersen J, Garcia-Molina H (2008) Questioning Yahoo! Answers. In: Proceedings of the 1st workshop on question answering on the Web
Hall D, Jurafsky D, Manning CD (2008) Studying the history of ideas using topic models. In: Proceedings of the conference on empirical methods in natural language processing, pp 363–371
Hassan AE (2008) The road ahead for mining software repositories. In: Frontiers of software maintenance, pp 48–57
Heymann P, Garcia-Molina H (2006) Collaborative creation of communal hierarchical taxonomies in social tagging systems. Technical Report 2006-10, Stanford InfoLab. http://ilpubs.stanford.edu:8090/775/. Accessed 29 Sept 2012
Hindle A, Godfrey MW, Holt RC (2009) What’s hot and what’s not: windowed developer topic analysis. In: Proceedings of the 25th international conference on software maintenance, pp 339–348
jQuery (2012) http://docs.jquery.com/How_jQuery_Works. Accessed 29 Sept 2012
Kuhn A, Ducasse S, Girba T (2007) Semantic clustering: identifying topics in source code. Inf Softw Technol 49(3):230–243
Linstead E, Lopes C, Baldi P (2008) An application of latent Dirichlet allocation to analyzing software evolution. In: Proceedings of the 7th international conference on machine learning and applications, pp 813–818
Mamykina L, Manoim B, Mittal M, Hripcsak G, Hartmann B (2011) Design lessons from the fastest Q&A site in the west. In: Proceedings of the conference on human factors in computing systems, pp 2857–2866
Manning CD, Raghavan P, Schtze H (2008) Introduction to information retrieval. Cambridge University Press, New York
McCallum A (2002) MALLET: a machine learning for language toolkit. http://mallet.cs.umass.edu. Accessed 29 Sept 2012
McGraw G (2002) Building secure software: better than protecting bad software. IEEE Softw 19(6):57–58
McIntosh S, Adams B, Nguyen TH, Kamei Y, Hassan AE (2011) An empirical study of build maintenance effort. In: Proceedings of the 33rd international conference on software engineering, pp 141–150
Mei Q, Shen X, Zhai C (2007) Automatic labeling of multinomial topic models. In: Proceedings of the 13th international conference on knowledge discovery and data mining, pp 490–499
Microsoft Developer Network (2012) http://msdn.microsoft.com/en-us/. Accessed 29 Sept 2012
Microsoft SQL Server (2012) http://www.microsoft.com/sqlserver/en/us/default.aspx. Accessed 29 Sept 2012
Microsoft Visual Studio (2012) http://msdn.microsoft.com/en-us/vstudio. Accessed 29 Sept 2012
MySQL (2012) http://www.mysql.com/. Accessed 29 Sept 2012
Neuhaus S, Zimmermann T (2010) Security trend analysis with CVE topic models. In: Proceedings of the 21st international symposium on software reliability engineering, pp 111–120
Nielsen Company (2012) The mobile media report: state of the media. http://www.nielsen.com/content/dam/corporate/us/en/reports-downloads/2011-Reports/state-of-mobile-Q3-2011.pdf. Accessed 29 Sept 2012
Oracle Java (2012) http://www.java.com/en/. Accessed 29 Sept 2012
OSS Watch (2012) Essential tools for running a community-led project. http://www.oss-watch.ac.uk/resources/communitytools.xml. Accessed 29 Sept 2012
Pagano D, Maalej W (2012) How do open source communities blog? Empirical Software Engineering, Springer Netherlands, pp 1–35
Perforce (2012) http://www.perforce.com/. Accessed 29 Sept 2012
Porter MF (1997) An algorithm for suffix stripping. In: Readings in information retrieval. Morgan Kaufmann, San Francisco, pp 313–316
Pressman RS (2005) Software engineering: a practitioner’s approach. McGraw-Hill
Shah C, Pomerantz J (2010) Evaluating and predicting answer quality in community QA. In: Proceedings of the 33rd international conference on research and development in information retrieval, pp 411–418
Stack Overflow (2012a) http://www.stackoverflow.com
Stack Overflow (2012b) Stack overflow creative commons license data dump. http://blog.stackoverflow.com/2009/06/stack-overflow-creative-commons-data-dump/. Accessed 29 Sept 2012
Tan C, Wang Y, Lee C (2002) The use of bigrams to enhance text categorization. Inf Process Manag 38:529–546
Thomas SW (2012) Mining software repositories with topic models. Tech. Rep. 2012-586, School of Computing, Queen’s University
Thomas SW, Adams B, Hassan AE, Blostein D (2010) Validating the use of topic models for software evolution. In: Proceedings of the 10th international working conference on source code analysis and manipulation, pp 55–64
Thomas SW, Adams B, Hassan AE, Blostein D (2011) Modeling the evolution of topics in source code histories. In: Proceedings of the 8th working conference on mining software repositories, pp 173–182
Thomas SW, Adams B, Hassan AE, Blostein D (2012) Studying software evolution using topic models. Sci. Comput. Programming. doi:10.1016/j.scico.2012.08.003
Treude C, Barzilay O, Storey M (2011) How do programmers ask and answer questions on the web? In: Proceedings of the 33rd international conference on software engineering, pp 804–807
Wallach HM, Murray I, Salakhutdinov R, Mimno D (2009) Evaluation methods for topic models. In: Proceedings of the 26th international conference on machine learning, pp 1105–1112
Yahoo! Answers (2012) http://answers.yahoo.com. Accessed 29 Sept 2012
Acknowledgements
We would like the thank the anonymous reviewers for their valuable feedback.
Author information
Authors and Affiliations
Corresponding authors
Appendix: Topic Listings
Appendix: Topic Listings
Rights and permissions
About this article
Cite this article
Barua, A., Thomas, S.W. & Hassan, A.E. What are developers talking about? An analysis of topics and trends in Stack Overflow. Empir Software Eng 19, 619–654 (2014). https://doi.org/10.1007/s10664-012-9231-y
Published:
Issue Date:
DOI: https://doi.org/10.1007/s10664-012-9231-y