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 Introduction Software Dependencies ◦ Syntactic Dependencies ◦ Logical Dependencies ◦ Work Dependencies Data Collection Measuring Failure Results Conclusion Pro’s and Con’s 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 Software Dependencies could be: ◦ Syntactic ◦ Logical 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 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 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 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 ◦ 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 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 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 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 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 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 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 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 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 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 All dependencies increases fault proneness Logical Dependencies has the highest impact, followed by Workflow dependencies and then Syntactic Dependencies 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 Need to provided a method to solve the errors for the dependencies Discussion about other dependencies General concepts should be introduced