This document discusses using social debt analytics to improve management of software evolution tasks. It defines social debt as patterns in an organization's structure that can lead to unexpected costs, while technical debt refers to poor coding practices that increase costs. The goal is to study how community factors influence software products to create community-aware tools. It proposes using statistical modeling and machine learning to relate socio-technical factors to variables like code smells, bugs, and effort. For code smells, it would use factors like lines of code, commits, and social metrics to build models and control for community smells. Interviews with managers would provide context on scenarios. Overall, the complex relationship between social and technical aspects requires quantitative and qualitative analysis without simple answers.
Social Debt Analytics for Improving Software Evolution
1. Social Debt Analytics for Improving the
Management of Software Evolution Tasks
Fabio Palomba*#, Alexander Serebrenik#, Andy Zaidman*
*Delft University of Technology, #Eindhoven University of Technology, The Netherlands
2. “Software and systems
complexity is not solely of
technological nature but
also defined by people
and processes”
Netherlands Knowledge
and Innovation Agenda
ICT 2016-2019
3. Social and Organizational factors are highly
relevant for the success of a software project
M. Conway, “How do committees invent”, 1968.
4. Social and Organizational factors are highly
relevant for the success of a software project
M. Conway, “How do committees invent”, 1968.
There is alignment between coordination requirements extracted from
technical dependencies among tasks and the actual coordination
activities performed by the developers
5. Unfortunately, the software evolution community
mainly focused on technical aspects of software
systems, like software quality management
6. While software communities have mainly been
studied from an evolutionary point of view,
whereas some work investigated the impact of
socio-technical congruence on developers’
productivity or software build success
7. What about the intersection between social and
technical aspects of software systems?
8. We cannot separate the technical side of a
product from the surrounding environment
9. Our Goal
Studying how community-related factors influence
technical aspects of software products, with the aim of
producing community-aware software evolution tools
12. Social vs Technical Debt
Social debt is represented by patterns
across the organizational structure of
a system that may lead to additional
unforeseen project costs.
[Tamburri et al. “What is Social Debt in Software Engineering?”
ICSE 2013, pp. 40-49]
13. Social vs Technical Debt
Technical debt is represented by
bad practices applied by
developers that may lead to
additional project costs.
Social debt is represented by patterns
across the organizational structure of
a system that may lead to additional
unforeseen project costs.
[Tamburri et al. “What is Social Debt in Software Engineering?”
ICSE 2013, pp. 40-49]
W. Cunningham. “The wycash portfolio management
system”. SIGPLAN OOPS Mess., 4(2):29–30.
14. Community vs Code Smells
Organizational Silo Effect
Tamburri et al., “The architect’s role in community
shepherding”, IEEE Software, 33(6):70–79, 2016.
15. Community vs Code Smells
Organizational Silo Effect
Tamburri et al., “The architect’s role in community
shepherding”, IEEE Software, 33(6):70–79, 2016.
18. Community vs Code Smells
Sub-communities that do not
communicate with each other
might be not able to come up
with a correct way to
modularize the different
modules of the systems.
Thus, they might
introduce architectural
or code smells
19. Community vs Code Smells
“The creation of extremely complex and poorly
cohesive classes in presence of non-
communicating sub-teams is quite common
because in such a scenario developers do not share
information with each other about the ideal structure
to implement, therefore creating classes that perform a
lot of different things”.
[A developer surveyed in the context of our research]
The Importance of Social Aspects
20. Community vs Bugs
!
The presence of community smells might lead
to communication overhead causing delays in
bug triaging and resolution activities
21. Community vs Bugs
!
The presence of community smells might lead
to communication overhead causing delays in
bug triaging and resolution activities
Missing some information, developers might
introduce new bugs
22. Community vs Bugs
!
The presence of community smells might lead
to communication overhead causing delays in
bug triaging and resolution activities
Missing some information, developers might
introduce new bugs
Missing some information, developers might
not be able to solve bugs, causing higher
bug tossing
23. Community vs Code Review
!
The presence of community smells might lead
to communication overhead causing delays in
review triaging and review time
24. Community vs Code Review
!
The presence of community smells might lead
to communication overhead causing delays in
review triaging and review time
Missing some information, developers might
not properly perform good code reviews
25. Poor communication between developers might
cause higher rework or even misunderstanding
of the requirements, causing higher effort for
developers
Community vs Effort
!
26. The presence of community smells might be
used as additional information to improve the
estimation of costs of maintenance tasks
Poor communication between developers might
cause higher rework or even misunderstanding
of the requirements, causing higher effort for
developers
Community vs Effort
!
27.
28. Social Debt Analytics for Improving the Management
of Software Evolution Tasks
HOW TO
30. A complex problem
Measuring the Impact of Social Debt
?Statistical Modeling and Machine Learning
Methods relating a set of socio-technical factors
to the considered variable
31. A complex problem
Measuring the Impact of Social Debt
?Statistical Modeling and Machine Learning
Methods relating a set of socio-technical factors
to the considered variable
Establishing Causality
32. A complex problem
Measuring the Impact of Social Debt
?Statistical Modeling and Machine Learning
Methods relating a set of socio-technical factors
to the considered variable
Establishing Causality
The key is taking into account the possible socio-
technical factors possibly biasing the
observations. More importantly, involving
developers and companies is fundamental to
understand the results
33. The case of code smells
Technical Factors Social Factors
LOC
CBO
Total number of commits on a class
Code Churns
Commit and Project Tenure
Code Smell Persistence
Fault-proneness
Socio-technical congruence
Truck-factor
Core-Periphery Ratio
Turnover
Smelly Quitters
34. The case of code smells
Basic Model Basic + Community
Smells
Basic + Community
Smells + Social
Factors
Technical Factors Technical Factors Technical Factors
Community Smells Community Smells
Social Factors
35. The case of code smells
Basic Model Basic + Community
Smells
Basic + Community
Smells + Social
Factors
Technical Factors Technical Factors Technical Factors
Community Smells Community Smells
Social Factors
We controlled the extent to which community smells
can explain the phenomenon
36. The case of code smells
We complemented the quantitative analyses by
asking to 5 project managers to reason about
possible scenarios occurring in a real context
37. The case of code smells
We complemented the quantitative analyses by
asking to 5 project managers to reason about
possible scenarios occurring in a real context
Given a scenario where a
community smell exists
38. The case of code smells
We complemented the quantitative analyses by
asking to 5 project managers to reason about
possible scenarios occurring in a real context
Given a scenario where a
community smell exists
Consequences
40. Social Debt Analytics for Improving the
Management of Software Evolution Tasks
Fabio Palomba*#, Alexander Serebrenik#, Andy Zaidman*
*Delft University of Technology, #Eindhoven University of Technology, The Netherlands
41. The 2nd International Workshop on Machine
Learning Techniques for Software Quality Evaluation
Abstract Deadline:
Full Paper Submission:
January 12nd, 2018
January 19th, 2018
https://maltesque.github.io