Domain Complexity in Corrective Maintenance Tasks' Complexity: An Empirical Study in a Micro Software Company

Stojanov Zeljko, Jelena Stojanov, Dalibor Dobrilovic


Corrective maintenance is very important in software engineering practice since it enables correction of problems identified in operational use of software applications. Therefore, modeling complexity of maintenance tasks is essential for estimation and planning activities in software organizations that spend majority of resources on maintenance tasks. The article presents a study aimed at developing a model for maintenance task complexity by considering specific parameters of domain complexity associated to each software application. The study was conducted in a micro software company. The model enables analysis of trends for maintenance task complexity and correlation between task complexity and time spent for completing tasks. Implication and benefits of the presented research for the selected software company, for managers in software industry and researchers are discussed. The article concludes with challenging research directions.


Task complexity, Domain complexity, Mathematical model, Corrective maintenance

Full Text:



April, Alain and Alain Abran (2008). Software Maintenance Management: Evaluation and Continuous Improvement.

John Wiley & Sons. Hoboken, NJ, USA.

April, Alain and Alain Abran (2009). A software maintenance maturity model (S3M): Measurement practices at maturity levels 3 and 4. Electronic Notes in Theoretical Computer Science 233, 73–87. Proceedings of the International Workshop on Software Quality and Maintainability (SQM 2008).

Banker, Rajiv D. and Sandra A. Slaughter (1997). A field study of scale economies in software maintenance. Management Science 43(12), 1709–1725.

Boehm, Barry and Victor R. Basili (2001). Software defect reduction top 10 list. Computer 34(1), 135–137.

Bourque, Pierre and Fairley, Richard E. (Dick), Eds. (2014). Guide to the Software Engineering Body of Knowledge (SWEBOK), Guide V3.0. IEEE Press. Piscataway, NJ, USA.

Braarud, Per Øivind (2001). Subjective task complexity and subjective workload: Criterion validity for complex team tasks. International Journal of Cognitive Ergonomics 5(3), 261–273.

Briand, L., D. Bianculli, S. Nejati, F. Pastore and M. Sabetzadeh (2017). The case for context-driven software engi- neering research: Generalizability is overrated. IEEE Software 34(5), 72–75. DOI: 10.1109/MS.2017.3571562.

Buglear, John (2001). Stats means business: a guide to business statistics. Buttworth-Heinemann. Oxford, UK.

Campbell, Donald J. (1988). Task complexity: A review and analysis. The Academy of Management Review 13(1), 40–52.

Capretz, Luiz Fernando (2014). Bringing the human factor to software engineering. IEEE Software 31(2), 104.

Chapin, Ned, Joanne E. Hale, Khaled Md. Kham, Juan F. Ramil and Wui-Gee Tan (2001). Types of software evolution and software maintenance. Journal of Software Maintenance 13(1), 3–30.

Chatfield, C. (1985). The initial examination of data. Journal of the Royal Statistical Society. Series A (General) 148(3), 214–253.

Commission, European (2015). User guide to the SME Definition. Enterprise and industry publications. Publications Office of the European Union. Luxembourg. policy/sources/conferences/state- aid/sme/smedefinitionguide en.pdf [accessed 30.6.2018.].

Cousineau, Denis and Sylvain Chartier (2010). Outliers detection and treatment: a review. International Journal of Psychological Research 3(1), 58–67.

De Lucia, Andrea, Eugenio Pompella and Silvio Stefanucci (2005). Assessing effort estimation models for corrective maintenance through empirical studies. Information and Software Technology 47(1), 3–15.

Dit, B., A. Holtzhauer, D. Poshyvanyk and H. Kagdi (2013). A dataset from change history to support evaluation of software maintenance tasks. In: Proceedings of the 10th Working Conference on Mining Software Repositories (MSR). San Francisco, CA, USA. pp. 131–134.

Dybå, Tore, Rafael Prikladnicki, Kari Ronkko, Carolyn Seaman and Jonathan Sillito (2011). Qualitative research in software engineering. Empirical Software Engineering 16(4), 425–429.

Grubb, Penny and Armstrong A. Takang (2003). Software Maintenance: Concepts and Practice. 2nd ed.. World Scientific Publishing Company. Singapore.

Hatton, Les (2007). How accurately do engineers predict software maintenance tasks?. Computer 40(2), 64–69. ISO (2006). ISO/IEC 14764:2006 and IEEE Std 14764-2006. Software Engineering - Software Life Cycle Processes - Maintenance. ISO. Geneve, Switzerland.

Jones, Capers (2010). Software Engineering Best Practices. McGraw-Hill. New York, NY, USA.

Junio, Gladston Aparecido, Marcelo Nassau Malta, Humberto de Almeida Mossri, Humberto T. Marques-Neto and Marco Tulio Valente (2011). On the benefits of planning and grouping software maintenance requests. In: Pro- ceedings of the 15th European Conference on Software Maintenance and Reengineering. Oldenburg, Germany. pp. 55–64.

Keshavarz, Ghazal, Nasser Modiri and Mirmohsen Pedram (2011). Metric for early measurement of software com- plexity. International Journal on Computer Science and Engineering 3(6), 2482–2490.

Kitchenham, Barbara A., Shari Lawrence Pfleeger, Lesley M. Pickard, Peter W. Jones, David C. Hoaglin, Khaled El Emam and Jarrett Rosenberg (2002). Preliminary guidelines for empirical research in software engineering. IEEE Transactions on Software Engineering 28(8), 721–734.

Ko, Andrew J., Brad A. Myers, Michael J. Coblenz and Htet Htet Aung (2006). An exploratory study of how de- velopers seek, relate, and collect relevant information during software maintenance tasks. IEEE Transactions on Software Engineering 32(12), 971–987.

Lee, Michael, Marcus A. Rothenberger and Ken Peffers (2015). Effort estimation factors for corrective software maintenance projects: A qualitative analysis of estimation criteria. Journal of Information Technology Theory and Application 16(2), 39–56.

Lenarduzzi, Valentina, Alexandru Cristian Stan, Davide Taibi, Gustavs Venters and Markus Windegger (2018). Priori- tizing corrective maintenance activities for android applications: An industrial case study on android crash reports. In: Software Quality: Methods and Tools for Better Software and Systems (Dietmar Winkler, Stefan Biffl and Jo- hannes Bergsmann, Eds.). Vol. 302 of Lecture Notes in Business Information Processing. pp. 133–143. Springer, Cham. Vienna, Austria.

Li, Jingyue, T. Stalhane, J. M. W. Kristiansen and R. Conradi (2010). Cost drivers of software corrective mainte- nance: An empirical study in two companies. In: Proceedings of 2010 IEEE International Conference on Software Maintenance. Timisoara, Romania. pp. 1–8.

Li, Wei and H. Delugach (1997). Software metrics and application domain complexity. In: Proceedings of Joint 4th International Computer Science Conference and 4th Asia Pacific Software Engineering Conference. Hong Kong. pp. 513–514.

Lilienthal, Carola (2009). Architectural complexity of large-scale software systems. In: Proceedings of the 13th European Conference on Software Maintenance and Reengineering. Kaiserslautern, Germany. pp. 17–26.

Lu, Yao, Xinjun Mao and Zude Li (2016). Assessing software maintainability based on class diagram design: A preliminary case study. Lecture Notes on Software Engineering 4(1), 53–58.

Maynard, Douglas C. and Milton D. Hakel (1997). Effects of objective and subjective task complexity on performance.

Human Performance 10(4), 303–330.

Mendes-Moreira, H. M. C. L. and C. G. Davies (1993). Business domain knowledge libraries to support software maintenance activities. Journal of Software Maintenance: Research and Practice 5(3), 165–179.

Mockus, Audris and Lawrence G. Votta (2000). Identifying reasons for software changes using historic databases. In:

Proceedings of 2000 International Conference on Software Maintenance. San Jose, CA, USA. pp. 120–130.

Nguyen, Vu, Barry Boehm and Phongphan Danphitsanuphan (2011). A controlled experiment in assessing and esti- mating software maintenance tasks. Information and Software Technology 53(6), 682 – 691.

O’Brien, Michael P., Jim Buckley and Teresa M. Shaft (2004). Expectation-based, inference-based, and bottom-up software comprehension. Journal of Software Maintenance and Evolution: Research and Practice 16(6), 427–447.

Parkes, Alison (2017). The effect of individual and task characteristics on decision aid reliance. Behaviour & Information Technology 36(2), 165–177.

Pino, Francisco J., Francisco Ruiz, Fe´lix Garc´ıa and Mario Piattini (2012). A software maintenance methodology for small organizations: Agile MANTEMA. Journal of Software: Evolution and Process 24(8), 851–876.

Podnar, Ivana and Branko Mikac (2001). Software maintenance process analysis using discrete-event simulation. In: Proceedings of the Fifth European Conference on Software Maintenance and Reengineering. CSMR ’01. Lisbon, Portugal. pp. 192–195.

Shaft, Teresa M. and Iris Vessey (1998). The relevance of application domain knowledge: Characterizing the computer program comprehension process. Journal of Management Information Systems 15(1), 51–78.

Shull, Forrest, Singer, Janice and Sjøberg, Dag I.K., Eds. (2008). Guide to Advanced Empirical Software Engineering. first ed.. Springer-Verlag London. London, UK.

Stojanov, Zeljko, Dalibor Dobrilovic and Jelena Stojanov (2013a). Analyzing trends for maintenance request process assessment: Empirical investigation in a very small software company. Theory and Applications of Mathematics & Computer Science 3(2), 59–74.

Stojanov, Zeljko, Dalibor Dobrilovic, Jelena Stojanov and Vesna Jevtic (2013b). Estimating software maintenance effort by analyzing historical data in a very small software company. Scientific Bulletin of The Politehnica University of Timioara, Transactions on Automatic Control and Computer Science 58 (72)(2), 131–138.

Stojanov, Zeljko, Jelena Stojanov, Dalibor Dobrilovic and Nikola Petrov (2017). Trends in software maintenance tasks distribution among programmers: A study in a micro software company. In: IEEE 15th International Symposium on Intelligent Systems and Informatics (SISY 2017). Subotica, Serbia. pp. 23–27. DOI: 10.1109/SISY.2017.8080547.

Suh, S. D. and I. Neamtiu (2010). Studying software evolution for taming software complexity. In: Proceedings of the 21st Australian Software Engineering Conference. ASWEC. Auckland, New Zealand. pp. 3–12.

Sun, Xiaobing, Bixin Li, Hareton Leung, Bin Li and Yun Li (2015). Msr4sm: Using topic models to effectively mining software repositories for software maintenance tasks. Information and Software Technology 66, 1–12.

Swanson, E. Burton (1976). The dimensions of maintenance. In: Proceedings of the 2nd international conference on Software engineering. ICSE ’76. San Francisco, CA, USA. pp. 492–497.

Tan, Y. and V. S. Mookerjee (2005). Comparing uniform and flexible policies for software maintenance and replacement. IEEE Transactions on Software Engineering 31(3), 238–255.

Tripathy, Priyadarshi and Kshirasagar Naik (2015). Software evolution and maintenance: a practitioner’ s approach.

John Wiley & Sons. Hoboken, NJ, USA.

Vans, A. Marie, Anneliese von Mayrhauser and Gabriel Somlo (1999). Program understanding behavior during corrective maintenance of large-scale software. International Journal of Human-Computer Studies 51(1), 31–70.

Vasilev, Julian (2012). Guidelines for improvement information processes in commerce by implementing the link be- tween a web application and cash registers. Theory and Applications of Mathematics & Computer Science 2(2), 55– 66.

Von Mayrhauser, A. and A. M. Vans (1995). Program comprehension during software maintenance and evolution.

Computer 28(8), 44–55.

Wang, Alf Inge and Erik Arisholm (2009). The effect of task order on the maintainability of object-oriented software.

Information and Software Technology 51(2), 293–305.

Wood, Robert E. (1986). Task complexity: Definition of the construct. Organizational Behavior and Human Decision Processes 37(1), 60–82.


  • There are currently no refbacks.