A procedure to detect problems of processes in software development projects using Bayesian networks Mirko Perkusich a,⇑ , Gustavo Soares a , Hyggo Almeida a , Angelo Perkusich b a Department of Computing and Systems, Federal University of Campina Grande, Rua Aprigio Veloso, 882, Bodocongo, 58109 900 Campina Grande, PB, Brazil b Department of Electrical Engineering, Federal University of Campina Grande, Rua Aprigio Veloso, 882, Bodocongo, 58109 900 Campina Grande, PB, Brazil article info Article history: Available online 20 August 2014 Keywords: Software process simulation modeling Bayesian networks Software process management Software development project abstract There are several software process models and methodologies such as waterfall, spiral and agile. Even so, the rate of successful software development projects is low. Since software is the major output of soft- ware processes, increasing software process management quality should increase the project’s chances of success. Organizations have invested to adapt software processes to their environments and the char- acteristics of projects to improve the productivity and quality of the products. In this paper, we present a procedure to detect problems of processes in software development projects using Bayesian networks. The procedure was successfully applied to Scrum-based software development projects. The research results should encourage the usage of Bayesian networks to manage software processes and increase the rate of successful software development projects. Ó 2014 Elsevier Ltd. All rights reserved. 1. Introduction Over the years, software processes have evolved to take advan- tage of the organizations’ structure and capabilities of human resources as well as the specific characteristics of the systems that they develop. There are several software processes models and methodologies such as waterfall, spiral and agile that are best sui- ted depending on the project’s and organizations’ characteristics. For example, some would recommend waterfall for organizations with defined processes and large software development projects for a system with high criticality such as an online banking system. On the other hand, others would recommend agile for a project with a complex user interface and low criticality such as a social network application. Even though software processes have evolved, there is still a low rate of successful software projects. According to a study performed in 2008 (Emam & Koru, 2008), only between 46 and 55 percent of IT projects succeed. For an applied discipline, this is a low success rate. Since software is the major output of software processes and soft- ware development projects, they are both correlated. Increasing the software processes management quality should increase the software development project’s chances of success. One approach to assess and manage software processes is through software process simulation modeling (Kellner, Madachy, & Raffo, 1999). In these approach, researchers construct models that represent software processes to assist management and increase the project’s chances of success. With this purpose, model developers use techniques such as system dynamics, discrete events simulation and Bayesian networks (Zhang, Kitchenham, & Pfahl, 2008). Even though this approach has the potential to encompass key factors of software process models such as specifi- cation, quality and development (Sommerville, 2010), in most cases, researchers have used it for a limited scope of processes. For instance, Abouelela and Benedicenti (2010) and Jeet, Bhatia, and Minhas (2011a) applied this approach only for quality man- agement. Furthermore, most studies do not present a procedure to use the model. A procedure to construct and use models to assist on software process management is essential to give model devel- opers a common knowledge and instructions to optimize the chances of constructing a model that best suits the project that it will be applied to. By modelling software development processes key factors, it is possible to assist on continuous improvement by detecting their problems. In this paper, as shown in Section 3, we present a proce- dure to construct and use Bayesian networks for this purpose. The proposed procedure can be applied to detect problems in any soft- ware development methodology or framework. We used Bayesian networks due to their capability to handle uncertainty and also because of their ease of understanding and http://dx.doi.org/10.1016/j.eswa.2014.08.015 0957-4174/Ó 2014 Elsevier Ltd. All rights reserved. ⇑ Corresponding author. E-mail addresses: mirko.perkusich@copin.ufcg.edu.br (M. Perkusich), gsoares@ computacao.ufcg.edu.br (G. Soares), hyggo@dsc.ufcg.edu.br (H. Almeida), perkusic@ dee.ufcg.edu.br (A. Perkusich). Expert Systems with Applications 42 (2015) 437–450 Contents lists available at ScienceDirect Expert Systems with Applications journal homepage: www.elsevier.com/locate/eswa