6
$\begingroup$

I'm from programming background. I'm now learning Analytics. I'm learning concepts from basic statistics to model building like linear regression, logistic regression, time-series analysis, etc.,

As my previous experience is completely on programming, I would like to do some analysis on the data which programmer has.

Say, Lets have the details below(I'm using SVN repository)

personname, code check-in date, file checked-in, number of times checkedin, branch, check-in date and time, build version, Number of defects, defect date, file that has defect, build version, defect fix date, defect fix hours, (please feel free to add/remove how many ever variables needed)

I Just need a trigger/ starting point on what can be done with these data. can I bring any insights with this data.

or can you provide any links that has information about similar type of work done.

$\endgroup$
  • 1
    $\begingroup$ This is too broad as a question here, as you're asking what your question is. Please refine it with detail about what you are trying to accomplish. $\endgroup$ – Sean Owen Nov 27 '14 at 20:09
  • $\begingroup$ Hi Sean, I'm just trying to explore the possible options with the data available $\endgroup$ – user4290511 Dec 7 '14 at 4:45
3
$\begingroup$

Definately - Yes. Good question. Was thinking about it myself.

(1) Collect the data. The first problem you have: gather enough data. All the attributes you mentioned (date, name, check-in title/comment, N of deffects etc) are potentially useful - gather as much as possible. As soon as you have a big project, a number of developers, many branches, frequent commits and you have started collecting all the data, you a ready to go further.

(2) Ask good questions. The next question you should ask yourself: what effect are you going to measure, estimate and maybe predict. Frequency of possible bugs? Tracking inaccurate "committers"? Risky branches? Want to see some groups of users/bugs/commits according to some metrics?

(3) Select the model. As soon as you have the questions formulated, you should follow the general approach in data science - extract needed features in your data, select appropriate model, train you model and test it, apply it. This is too broad process to discuss it this thread, so please use this site to get right answers.

$\endgroup$
3
$\begingroup$

Without a doubt you can. The key is to have a set of hypotheses (i.e. assumptions \ scenarios that you want to evaluate) and wrangle the data together to prove \ disprove what you thought is true.

Here are a few things to watch-out for:

  • Be ready for Disappointments: Often times, once you have invested time and energy in building these models, analysts tend to get biased towards publishing results (publication bias). Treat this as an exploration that with a lot of dead-ends and the goal should be to find the ones that are not.

  • Know your Data: You cannot will your data into doing things magically without truly understanding it. Ensure that you know the different attributes (predictors and dependents) very well. Knowing your data well will allow you to cleanse it and think about appropriate models. All models don't work equally well on all data - data that has a lot of categorical variables might require creative solutions like Dimension reduction before it can be modeled.

  • Know the "Operational" Processes: Knowing how things operate within your firm will help you refine the set of hypothesis that you want to test. For e.g. in your scenario above, knowing how developers work with your change management software and what types of administrative setups have been done will help you figure out why the data is coming in the way it is. Some developers might only be focused on certain modules that are more mature than others, might work only on certain shifts and that might limit how many lines of code are checked in, how many bugs are found etc.

Having said that here are some scenarios you might want to test:

  • Developer Effectiveness : How different developers working on same modules overtime has resulted into increase or decrease in bugs. Does more line of code results in more bugs? Maybe this might be an indicator that the programs need to be split further into smaller components Folks might be more productive during certain times of day than others - does time of day affect bug introductions?

  • Module Maturity: Which Modules have the most number of issues? Are they worked upon by more developers or less? Do defects keep aging for a long time before they are fixed?

Of course, these questions will change depending on what you are working on.

Hope this helps.

$\endgroup$
2
$\begingroup$

Here are two ideas that I was thinking about.

  1. Bug Prediction

Based on the previous activity future bugs can be predicted. There are a number of papers available on the net. I remember there was a paper about bug prediction from SVN data. ( Just google for software bug prediction )

  1. Error position from software traces

Errors may be like rare events or anomalies in the trace output. May be you can classify the error and pinpoint the procedure that caused the error. I am currently thinking about a system like that now ( Not sure about its success though ). I asked a question here: https://stats.stackexchange.com/questions/140232/error-position-in-software-trace-file

$\endgroup$
1
$\begingroup$

As you are also looking for examples, then github is a good place to check out.

I took a random repository and went to "Graphs" on the right hand side, which opens up contribution frequency graph. There's several tabs next to it that display other aspects of a repository and commit history graphically - commits, code frequency, punch card, etc.

$\endgroup$
1
$\begingroup$

Data analysis is always driven by the request. It could be: "I want to find out this, so I need to collect those data first. Then I would use this model to analyze". If you just want to practice, by reviewing your data set, there is one:

Task: Which issue affects the "number of check in " most?

Data set: what you have

Model: Correlation (e.g. Spearman, which is nonparametric measure of statistical dependence between two variables)

$\endgroup$

Not the answer you're looking for? Browse other questions tagged or ask your own question.