ABSTRACT
Source Code Management (SCM) systems support software evolution by providing features, such as version control, branching, and conflict detection. Despite the presence of these features, support to parallel software development is often limited. SCM systems can only address a subset of the conflicts that might be introduced by developers when concurrently working on multiple parallel branches. In fact, SCM systems can detect textual conflicts, which are generated by the concurrent modification of the same program locations, but they are unable to detect higher-order conflicts, which are generated by the concurrent modification of different program locations that generate program misbehaviors once merged. Higher-order conflicts are painful to detect and expensive to fix because they might be originated by the interference of apparently unrelated changes.
In this paper we present Behavioral Driven Conflict Identification (BDCI), a novel approach to conflict detection. BDCI moves the analysis of conflicts from the source code level to the level of program behavior by generating and comparing behavioral models. The analysis based on behavioral models can reveal interfering changes as soon as they are introduced in the SCM system, even if they do not introduce any textual conflict.
To evaluate the effectiveness and the cost of the proposed approach, we developed BDCIf, a specific instance of BDCI dedicated to the detection of higher-order conflicts related to the functional behavior of a program. The evidence collected by analyzing multiple versions of Git and Redis suggests that BDCIf can effectively detect higher-order conflicts and report how changes might interfere.
- H. Agrawal, R. A. Demillo, B. Hathaway, W. Hsu, W. Hsu, E. W. Krauser, R. J. Martin, A. P. Mathur, and E. H. Spafford. 1989. Design Of Mutant Operators For The C Programming Language. Technical Report. Department of Computer Science, Purdue University.Google Scholar
- Apache. visited in 2017. SubVersion. https://subversion.apache.org. (visited in 2017).Google Scholar
- W. Appelt. 1999. WWW Based Collaboration with the BSCW Systems. In Proceedings of the International Conference on Current Trends in Theory and Informatic (SOFSEM). Google ScholarDigital Library
- J. Y. Bang. 2015. Proactive detection of higher-order software design conflicts. Ph.D. Dissertation. Faculty of the USC Graduate School University of Southern California.Google Scholar
- J. Y. Bang and N. Medvidovic. 2015. Proactive Detection of Higher-Order Software Design Conflicts. In Proceedings of the Working IEEE/IFIP Conference on Software Architecture (WICSA). Google ScholarDigital Library
- J. Y. Bang, D. Popescu, and N. Medvidovic. 2012. Enabling Workspace Awareness for Collaborative Software Modeling. In Proceedings of the CSCW Workshop on The Future of Collaborative Software Development (FutureCSD).Google Scholar
- J. T. Biehl, M. Czerwinski, G. Smith, and G. G. Robertson. 2007. FASTDash: A Visual Dashboard for Fostering Awareness in Software Teams. In Proceedings of the SIGCHI Conference on Human Factors in Computing Systems (CHI). Google ScholarDigital Library
- C. Bird and T. Zimmermann. 2012. Assessing the Value of Branches with What-if Analysis. In Proceedings of the ACM SIGSOFT International Symposium on the Foundations of Software Engineering (FSE). Google ScholarDigital Library
- K. Brown, S .P. Berczuk, and B. Appleton. 2002. Software Configuration Management Patterns: Effective Teamwork, Practical Integration. Pearson Education. Google ScholarDigital Library
- Y. Brun, R. Holmes, M.D. Ernst, and D. Notkin. 2011. Crystal: Precise and Unobtrusive Conflict Warnings. In Proceedings of the ACM SIGSOFT Symposium and the European Conference on Foundations of Software Engineering (ESEC/FSE), Tool Demo Track. Google ScholarDigital Library
- Y. Brun, R. Holmes, M.D. Ernst, and D. Notkin. 2013. Early Detection of Collaboration Conflicts and Risks. IEEE Transactions on Software Engineering (TSE) 39, 10 (2013), 1358–1375. Google ScholarDigital Library
- Y. Brun, R. Holmes, M. D. Ernst, and D. Notkin. 2011. Proactive Detection of Collaboration Conflicts. In Proceedings of the ACM SIGSOFT Symposium and the European Conference on Foundations of Software Engineering (ESEC/FSE). Google ScholarDigital Library
- P. Dewan and R. Hegde. 2007. Semi-synchronous conflict detection and resolution in asynchronous software development. In Proceedings of the European Conference on Computer-Supported Cooperative Work (ECSCW).Google Scholar
- Michael D. Ernst, Jake Cockrell, William G. Griswold, and David Notkin. 2001. Dynamically Discovering Likely Program Invariants to Support Program Evolution. IEEE Transactions on Software Engineering (TSE) 27, 2 (2001), 99–123. Google ScholarDigital Library
- J. Estublier and S. Garcia. 2005. Process Model and Awareness in SCM. In Proceedings of the International Workshop on Software Configuration Management (SCM). Google ScholarDigital Library
- J. Estublier, D. Leblang, A. van der Hoek, R. Conradi, G. Clemm, W. Tichy, and D. Wiborg-Weber. 2005. Impact of Software Engineering Research on the Practice of Software Configuration Management. ACM Transactions on Software Engineering and Methodologies (TOSEM) 14, 4 (2005), 383–430. Google ScholarDigital Library
- G. Fitzpatrick, S. Kaplan, T. Mansfield, D. Arnold, and B. Segall. 2002. Supporting Public Availability and Accessibility with Elvin: Experiences and Reflections. In Proceedings of the International Conference on Computer Supported Cooperative Work (CSCW). Google ScholarDigital Library
- GitHub. visited in 2017. Git. https://git-scm.com. (visited in 2017).Google Scholar
- R. E. Grinter. 1995. Using a Configuration Management Tool to Coordinate Software Development. In Proceedings of Conference on Organizational Computing Systems (COCS). Google ScholarDigital Library
- M. L. Guimaraes and A. R. Silva. 2010. Towards Real-time Integration. In Proceedings of the ICSE Workshop on Cooperative and Human Aspects of Software Engineering (CHASE). Google ScholarDigital Library
- M. L. Guimaraes and A. R. Silva. 2012. Improving early detection of software merge conflicts. In Proceedings of the International Conference on Software Engineering (ICSE). Google ScholarDigital Library
- Carl Gutwin and Saul Greenberg. 1996. Workspace Awareness for Groupware. In Proceedings of the Conference Companion on Human Factors in Computing Systems (CHI). Google ScholarDigital Library
- L. Hattori and M. Lanza. 2010. Syde: A Tool for Collaborative Software Development. In Proceedings of the International Conference on Software Engineering (ICSE). Google ScholarDigital Library
- S. Horwitz, J. Prins, and T. Reps. 1989. Integrating Noninterfering Versions of Programs. ACM Transactions on Programming Languages and Systems (TOPLAS) 11, 3 (1989), 345–387. Google ScholarDigital Library
- Intel. visited in 2017. PIN - A Dynamic Binary Instrumentation Tool. https: //software.intel.com/en-us/articles/pintool. (visited in 2017).Google Scholar
- Y. Jia and M. Harman. 2008. Milu: A Customizable, Runtime-Optimized Higher Order Mutation Testing Tool for the Full C Language. In Proceedings of the Testing: Academic and Industrial Conference - Practice and Research Techniques (TAIC PART). Google ScholarDigital Library
- B. K. Kasi and A. Sarma. 2013. Cassandra: Proactive Conflict Minimization Through Optimized Task Scheduling. In Proceedings of the International Conference on Software Engineering (ICSE). Google ScholarDigital Library
- Linux. visited in 2017. Linux diff. http://linux.about.com/library/cmd/blcmdl1_ diff.htm. (visited in 2017).Google Scholar
- D. Lo, N. Nagappan, and T. Zimmermann. 2015. How Practitioners Perceive the Relevance of Software Engineering Research. In Proceedings of the 10th Joint Meeting on Foundations of Software Engineering (FSE). Google ScholarDigital Library
- D. Lorenzoli, L. Mariani, and M. Pezzè. 2008. Automatic Generation of Software Behavioral Models. In Proceedings of the International Conference on Software Engineering (ICSE). Google ScholarDigital Library
- L. Mariani, D. Micucci, and F. Pastore. 2014. Early Conflict Detection with Mined Models. In Proceedings of the International Symposium on Software Reliability Engineering (ISSRE), Fast Abstract. Google ScholarDigital Library
- M. Meyer. 2014. Continuous Integration and Its Tools. IEEE Software 31, 3 (2014), 14–16.Google ScholarCross Ref
- Microsoft. visited in 2017. Z3 Theorem Prover. https://github.com/z3prover/z3/ wiki. (visited in 2017).Google Scholar
- H. V. Nguyen, M. H. Nguyen, S. C. Dang, C. Kastner, and T. N. Nguyen. 2015. Detecting Semantic Merge Conflicts with Variability-Aware Execution. In Proceedings of the joint Meeting of the European Software Engineering Conference and the ACM SIGSOFT Symposium on the Foundations of Software Engineering (ESEC/FSE), NIER Track. Google ScholarDigital Library
- K. Noyes. visited in 2017. Git Turns 8, Sees Wide Adoption in the Enterprise. http://www.linux.com/news/enterprise/systemsmanagement/ 715287-git-turns-8-enterprise-wide-adoption/. (visited in 2017).Google Scholar
- F. Pastore, L. Mariani, and A. Goffi. 2013. RADAR: A Tool for Debugging Regression Problems in C/C++ Software. In Proceedings of the International Conference on Software Engineering (ICSE), Tool Demo. Google ScholarDigital Library
- F. Pastore, L. Mariani, A. Goffi, M. Oriol, and M. Wahler. 2012. Dynamic Analysis of Upgrades in C/C++ Software. In International Symposium on Software Reliability Engineering (ISSRE). Google ScholarDigital Library
- D. E. Perry, H. P. Siy, and L. G. Votta. 2001. Parallel Changes in Large-scale Software Development: An Observational Case Study. ACM Transactions on Software Engineering Methodologies (TOSEM) 10, 3 (2001), 308–337. Google ScholarDigital Library
- Redis Labs. visited in 2017. Redis. http://www.redis.io. (visited in 2017).Google Scholar
- A. Sarma, D. Redmiles, and A. van der Hoek. 2008. Empirical Evidence of the Benefits of Workspace Awareness in Software Configuration Management. In Proceedings of the ACM SIGSOFT International Symposium on Foundations of Software Engineering (FSE). Google ScholarDigital Library
- A. Sarma, D. Redmiles, and A. van der Hoek. 2010. Categorizing the Spectrum of Coordination Technology. IEEE Computer 43, 6 (2010), 61–67. Google ScholarDigital Library
- A. Sarma, D. Redmiles, and A. van der Hoek. 2012. Palantir: Early Detection of Development Conflicts Arising from Parallel Code Changes. IEEE Transactions on Software Engineering (TSE) 38, 4 (2012), 889–908. Google ScholarDigital Library
- T. Schümmer and J. M. Haake. 2001. Supporting distributed software development by modes of collaboration. In Proceedings of the European Conference on Computer-Supported Cooperative Work (ECSCW). Google ScholarDigital Library
- Travis. visited in 2017. Continuous Integration Service. http://www.travis-ci.com. (visited in 2017).Google Scholar
- M. Weiser. 1984. Program Slicing. IEEE Transactions on Software Engineering (TSE) 10, 4 (1984), 352–357. Google ScholarDigital Library
- J. Wloka, B. Ryder, F. Tip, and X. Ren. 2009. Safe-commit Analysis to Facilitate Team Software Development. In Proceedings of the International Conference on Software Engineering (ICSE). Google ScholarDigital Library
Index Terms
- BDCI: behavioral driven conflict identification
Recommendations
Transactional Read-Modify-Write Without Aborts
Language-level transactions are said to provide “atomicity,” implying that the order of operations within a transaction should be invisible to concurrent transactions and thus that independent operations within a transaction should be safe to execute in ...
Lazy Versus Eager Conflict Detection in Software Transactional Memory: A Real-Time Schedulability Perspective
Transactional memory is a mechanism of controlling access to shared resources in concurrent programs. Though originally implemented in hardware, software implementations of transactional memory are now available as library extensions in all major ...
On the impact of serializing contention management on STM performance
Transactional memory (TM) is an emerging concurrent programming abstraction. Numerous software-based transactional memory (STM) implementations have been developed in recent years. STM implementations must guarantee transaction atomicity and isolation. ...
Comments