ABSTRACT
Design is often raised in the literature as important to attaining various properties and characteristics in a software system. At least for open-source projects, it can be hard to find evidence of ongoing design work in the technical artifacts produced as part of the development. Although developers usually do not produce specific design documents, they do communicate about design in different ways. In this paper, we provide quantitative evidence that developers address design through discussions in commits, issues, and pull requests. To achieve this, we built a discussions' classifier and automatically labeled 102,122 discussions from 77 projects. Based on this data, we make four observations about the projects: i) on average, 25% of the discussions in a project are about design; ii) on average, 26% of developers contribute to at least one design discussion; iii) only 1% of the developers contribute to more than 15% of the discussions in a project; and iv) these few developers who contribute to a broad range of design discussions are also the top committers in a project.
- David Budgen. Software design. Pearson Education, 2003. Google ScholarDigital Library
- Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides. Design patterns: elements of reusable object-oriented software. Pearson Education, 1994. Google ScholarDigital Library
- Craig Larman. Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development,. Pearson Education India, 2012. Google ScholarDigital Library
- Georgios Gousios. The GHTorrent dataset and tool suite. In Proc. of Working Conference on Mining Soft. Repositories, MSR’13, pages 233–236, 2013. Google ScholarDigital Library
- Christine Hofmeister, Robert L Nord, and Dilip Soni. Describing software architecture with uml. In Soft. Architecture, pages 145–159. Springer, 1999. Google ScholarDigital Library
- Johannes Fürnkranz. A study using n-gram features for text categorization. Austrian Research Institute for Artifical Intelligence, pages 1–10, 1998.Google Scholar
- William B Cavnar, John M Trenkle, et al. N-gram-based text categorization. Ann Arbor MI, pages 161–175, 1994.Google Scholar
- Hataichanok Unphon and Yvonne Dittrich. Software architecture awareness in long-term software product evolution. Journal of Systems and Soft., pages 2211–2226, 2010. Google ScholarDigital Library
- Frederick P Brooks. The mythical man-month. Addison-Wesley Reading, 1975. Google ScholarDigital Library
- C.F.J. Lange, M. R V Chaudron, and J. Muskens. In practice: Uml software architecture and design description. IEEE Soft., pages 40–46, 2006. Google ScholarDigital Library
- Mauro Cherubini, Gina Venolia, Rob DeLine, and Andrew J Ko. Let’s go to the whiteboard: how and why software developers use drawings. In Proc. of SIGCHI conference on Human factors in computing systems, pages 557–566, 2007. Google ScholarDigital Library
- Anja Guzzi, Alberto Bacchelli, Michele Lanza, Martin Pinzger, and Arie van Deursen. Communication in open source software development mailing lists. In Proc. of International Workshop on Mining Software Repositories, pages 277–286, 2013. Google ScholarDigital Library
Index Terms
- Do developers discuss design?
Recommendations
Group development and group maturity when building agile teams
Overlap between what is meant by an agile team and a mature group in psychology.Group developmental issues are dealt with in practice in agile groups.Quantitative survey data support the connections.Focusing on group development is a key success factor ...
The design thinking of co-located vs. distributed software developers: distance strikes again!
ICGSE '20: Proceedings of the 15th International Conference on Global Software EngineeringContext: Designing software is an activity in which software developers think and make design decisions that ultimately shape the structure and behavior of software products. Currently, designing software is one of the least understood activities in ...
Realizing quality improvement through test driven development: results and experiences of four industrial teams
Test-driven development (TDD) is a software development practice that has been used sporadically for decades. With this practice, a software engineer cycles minute-by-minute between writing failing unit tests and writing implementation code to pass ...
Comments