Presented By : Abirami Poonkundran
description
Transcript of Presented By : Abirami Poonkundran
Software Dependencies, Work Dependencies, and their impact on
FailuresJeffrey A.Roberts, James D.Herbsleb, Marcelo cataldo and Audris Mockus
Presented By : Abirami Poonkundran
This paper is a case study on the impact of ◦ Syntactic Dependencies, ◦ Logical Dependencies and ◦ Work Dependencies
on a software development project, and identifies which dependencies have the higher impact on fault proneness
Concept
Introduction Software Dependencies
◦ Syntactic Dependencies◦ Logical Dependencies◦ Work Dependencies
Data Collection Measuring Failure Results Conclusion Pro’s and Con’s
Overview
Research has shown that software faults are caused by violation of dependencies
Dependencies could be:◦ Software Dependencies
Technical Caused by developers
◦ Work Dependencies Organizational Caused by how work is organized
This paper examines the relative impact that each of these dependencies have on the fault proneness of the software system
Introduction
Software Dependencies could be:◦ Syntactic◦ Logical
Software Dependencies
Focuses on Control and Dataflow relationships
Dependencies are discovered by analysis of source code or from an intermediate representation like byte code or syntax trees
These dependencies could be:◦ Data Related Dependency - e.g., a particular
data structure modified by a function and used in another function
◦ Functional Dependency – e.g., Method A calls Method B
Syntactic Dependencies
Dependencies between the source code files of a system that are changed together as part of software development
Often Logical Dependencies provide more valuable information than Syntactic Dependencies (eg., in Remote Procedure Calls)
They can identify important dependencies that are not visible in Syntactic Code analysis
Logical Dependencies
Only recent research have started shedding light on the impact of human and organizational factors on the failure proneness of software systems
Caused because of lack of proper communication and coordination between developers
Research have shown that identification and management of work dependencies is a major challenge
Work Dependencies
Examined two large software development projects:◦ Project A
Complex distributed system Data are covered for 3 years of development activity The company had 114 developers grouped into 8
development team and has 3 development locations ≃ 5 million lines of code distributed in 7,737 source
code files in C language
Data Collection (1)
◦ Project B: Embedded software system 40 developers in the project over a period of 5 years 1.2 million lines of code were used in both C and C+
+ language
Data Collection (2)
In both projects, every change to source code was controlled by Modification Requests (MR)
Every change made to Source code has to be committed to Version Control System
Information Used for this Analysis:◦ Collected a total of 8,257 and 3,372 MRs for
Project A and Project B◦ Version control system from both projects◦ The source code itself from both projects
Data Collection (3)
Goal is to investigate failure proneness at the file level
File Buggyness – indicates whether a file has been modified in the course of resolving a defect
Measuring Failure
Used C-REX tool to identify programming language tokens and references in each entity of each source-code file
Source code snap shot was taken every quarter
Syntactic dependency analysis was done for each source code snapshot
Syntactic dependencies between source code file was identified by data, function and method references
Syntactic Dependencies
Relate source-code files that are modified together as part of an MR
If only one file was changed for an MR, then there is no dependencies
Using the Commit information from the Version control system, a logical dependency matrix (LDM) was created
LDM is a symmetric matrix of source-code files where Cij represents the sum, across all releases, of the number of times files i and j were changed together as part of an MR
Logical Dependencies
Used two measures:◦ Workflow Dependencies
Captures the temporal aspects of the development effort
Two developers i and j are said to be interdependent if the MR was transferred from one developer i to developer j some point during that MR
◦ Coordination Requirements Captures the intradeveloper coordination
requirements Uses two matrix:
Task Assignment Matrix – Developer to file matrix Task Dependency Matrix – File to file matrix
Work Dependencies
Analysis consists of two stages:◦ First Stage: Focus on examining the relative
impact of each dependency type on failure proneness of source-code files
◦ Second Stage: Verified the consistency of the initial results by conduction a number of confirmatory analysis
Constructed several logistic regression models
Results
Results
Results
If Odds Ratio is larger than 1, then positive relationship between the independent and dependent variables
If Odds ratio less than 1, then negative relationship
Model 1:◦ Based on LOC and Average Lines Changed◦ LOC is positively associated with failure proneness◦ Average lines changed is also positively
associated with defects
Results
Model II:◦ Introduces Syntactic Dependency measures by:
Inflow Data Has significant impact on error proneness
Inflow Functional This type of syntactic dependency has less impact on
failure pronenesss Model III:
◦ Higher number of logical dependencies related to an increase in the likelihood of failure
Results
Model IV:◦ Workflow dependencies do increase the likelihood
of defects Model V:
◦ Coordination requirement has an higher impact in Project A and lesser impact in Project B
Results
All dependencies increases fault proneness
Logical Dependencies has the highest impact, followed by Workflow dependencies and then Syntactic Dependencies
Conclusion
Analysis is based on data collection from 2 projects
Logical Dependencies has the highest impact when compared to other 2 dependencies
Weakness: Data collection from only 2 projects They have not mentioned about other
dependencies except software and work dependencies
Not provided a method to solve the errors for the dependencies
Strength:
Need to provided a method to solve the errors for the dependencies
Discussion about other dependencies General concepts should be introduced
Suggestions