Social Debt Analytics for Improving the Management of Software Evolution Tasks

Post on 28-Jan-2018

123 views 2 download

Transcript of Social Debt Analytics for Improving the Management of Software Evolution Tasks

Social Debt Analytics for Improving the Management of Software Evolution TasksFabio Palomba*#, Alexander Serebrenik#, Andy Zaidman**Delft University of Technology, #Eindhoven University of Technology, The Netherlands

“Software and systems complexity is not solely of

technological nature but also defined by people

and processes”

Netherlands Knowledge and Innovation AgendaICT 2016-2019

Social and Organizational factors are highly relevant for the success of a software project

M. Conway, “How do committees invent”, 1968.

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

Unfortunately, the software evolution community mainly focused on technical aspects of software systems, like software quality management

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

What about the intersection between social and technical aspects of software systems?

We cannot separate the technical side of a product from the surrounding environment

Our GoalStudying how community-related factors influence

technical aspects of software products, with the aim of producing community-aware software evolution tools

Our GoalThe relationship between social debt

and technical tasks

Social vs Technical Debt

Social vs Technical DebtSocial 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]

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.

Community vs Code SmellsOrganizational Silo Effect

Tamburri et al., “The architect’s role in community shepherding”, IEEE Software, 33(6):70–79, 2016.

Community vs Code SmellsOrganizational Silo Effect

Tamburri et al., “The architect’s role in community shepherding”, IEEE Software, 33(6):70–79, 2016.

GOD CLASS

Community vs Code Smells

Community vs Code Smells

Are they connected?

Community vs Code SmellsSub-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

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

Community vs Bugs

!The presence of community smells might lead to communication overhead causing delays in

bug triaging and resolution activities

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

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

Community vs Code Review

!The presence of community smells might lead to communication overhead causing delays in

review triaging and review time

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

Poor communication between developers might cause higher rework or even misunderstanding of the requirements, causing higher effort for

developers

Community vs Effort

!

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

!

Social Debt Analytics for Improving the Management of Software Evolution Tasks

HOW TO

A complex problem Measuring the Impact of Social Debt ?

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

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

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

The case of code smells

Technical Factors Social Factors

LOCCBOTotal number of commits on a classCode ChurnsCommit and Project TenureCode Smell PersistenceFault-proneness

Socio-technical congruenceTruck-factorCore-Periphery RatioTurnoverSmelly Quitters

The case of code smellsBasic Model Basic + Community

SmellsBasic + Community

Smells + Social Factors

Technical Factors Technical Factors Technical Factors

Community Smells Community Smells

Social Factors

The case of code smellsBasic Model Basic + Community

SmellsBasic + 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

The case of code smellsWe complemented the quantitative analyses by asking to 5 project managers to reason about possible scenarios occurring in a real context

The case of code smellsWe 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

The case of code smellsWe 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

A complex problem

?NO CLEAR ANSWERS!

NO SILVER BULLETS!

Social Debt Analytics for Improving the Management of Software Evolution TasksFabio Palomba*#, Alexander Serebrenik#, Andy Zaidman**Delft University of Technology, #Eindhoven University of Technology, The Netherlands

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