Empirical Software Engineering

, Volume 23, Issue 6, pp 3768–3800 | Cite as

Using human error information for error prevention

  • Wenhua Hu
  • Jeffrey C. Carver
  • Vaibhav Anu
  • Gursimran S. Walia
  • Gary L. Bradshaw


Developing error-free software requirements is of critical importance to the success of a software project. Problems that occur during requirements collection and specification, if not fixed early, are costly to fix later. Therefore, it is important to develop techniques that help requirements engineers detect and prevent requirements problems. As a human-centric activity, requirements engineering can be influenced by psychological research about human errors, which are the failings of human cognition during the process of planning and executinge a task. We have employed human error research to describe the types of problems that occur during requirements engineering. The goals of this research are: (1) to evaluate whether understanding human errors contributes to the prevention of errors and concomitant faults during requirements engineering and (2) to identify error prevention techniques used in industrial practice. We conducted a controlled classroom experiment to evaluate the benefits that knowledge of errors has on error prevention. We then analyzed data from two industrial surveys to identify specific prevention and mitigation approaches employed in practice. The classroom study showed that the better a requirements engineer understands human errors, the fewer errors and concomitant faults that engineer makes when developing a new requirements document. Furthermore, different types of Human Errors have different impacts on fault prevention. The industry study results identified prevention and mitigation mechanisms for each error type. Human error information is useful for fault prevention during requirements engineering. There are practices that requirements engineers can employ to prevent or mitigate specific human errors.


Human errors Software requirements Error prevention Fault prevention Empirical study Human factors 



This work was supported by NSF awards 1421006 and 1423279.


  1. Anu V, Hu W, Carver JC, Walia GS, Bradshaw G (2016) Development of a human error taxonomy for software requirements: A systematic literature review. Technical Report NDSU-CS-TR-16-001, North Dakota State University .
  2. Boehm B, Basili VR (2001) Software defect reduction top 10 list. Computer 34(1):135–137. CrossRefGoogle Scholar
  3. Card DN (1998) Learning from our mistakes with defect causal analysis. IEEE Softw 15(1):56–63CrossRefGoogle Scholar
  4. Chen JC, Huang SJ (2009) An empirical analysis of the impact of software development problem factors on software maintainability. J Syst Softw 82(6):981–992CrossRefGoogle Scholar
  5. Chillarege R, Bhandari IS, Chaar JK, Halliday MJ, Moebus DS, Ray BK, Wong MY (1992) Orthogonal defect classification-a concept for in-process measurements. IEEE Trans Softw Eng 18(11):943– 956CrossRefGoogle Scholar
  6. Dethomas A, Feo P (1987) Technology requirements of integrated, critical digital flight systems. In: Proceedings of the AIAA Guidance, Navigation and Control Conference, pp 1579–1583Google Scholar
  7. Diller T, Helmrich G, Dunning S, Cox S, Buchanan A, Shappell S (2013) The human factors analysis classification system (HFACS) applied to health care. Am J Med Qual 29:181–190CrossRefGoogle Scholar
  8. Ericsson KA, Simon HA (1993) Protocol analysis : verbal reports as data /Revised Edition. MIT Press, CambridgeGoogle Scholar
  9. Femmer H, Fernández DM, Juergens E, Klose M, Zimmer I, Zimmer J (2014) Rapid requirements checks with requirements smells: Two case studies. In: Proceedings of the 1st International Workshop on Rapid Continuous Software Engineering, pp 10–19Google Scholar
  10. Fernández DM, Wagner S, Kalinowski M, Felderer M, Mafra P, Vetrò A, Conte T, Christiansson MT, Greer D, Lassenius C, Männistö T, Nayabi M, Oivo M, Penzenstadler B, Pfahl D, Prikladnicki R, Ruhe G, Schekelmann A, Sen S, Spinola R, Tuzcu A, de la Vara JL, Wieringa R (2017) Naming the pain in requirements engineering. Empir Softw Eng 22(5):2298–2338CrossRefGoogle Scholar
  11. Grady RB (1996) Software failure analysis for high-return process improvement decisions. Hewlett Packard J 47:15–24Google Scholar
  12. Graham M (2005) Software defect prevention using orthogonal defect prevention.
  13. Hamill M, Goseva-Popstojanova K (2009) Common trends in software fault and failure data. IEEE Trans Softw Eng 35(4):484–496CrossRefGoogle Scholar
  14. Hu W, Carver JC, Anu VK, Walia GS, Bradshaw G (2016) Detection of requirement errors and faults via a human error taxonomy: A feasibility study. In: Proceedings of the 10th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement, ESEM ’16, pp 30:1–30:10Google Scholar
  15. Hu W, Carver JC, Anu V, Walia G, Bradshaw G (2017) Defect prevention in requirements using human error information: An empirical study. In: Proceedings of the international working conference on requirements engineering, foundation for software quality. Springer, pp 61–76Google Scholar
  16. IEEE (2017) 24765:2017 – Systems and Software Engineering – Vocabulary. IEEEGoogle Scholar
  17. Kamsties E, M Berry D, Paech B (2001) Detecting ambiguities in requirements documents using inspections. In: Proceedings of the First Workshop on Inspection in Software EngineeringGoogle Scholar
  18. Kumaresh S, Baskaran R (2012) Experimental design on defect analysis in software process improvement. In: Proceedings of the IEEE International Conference on Recent Advances in Computing and Software Systems, pp 293–298Google Scholar
  19. Lanubile F, Shull F, Basili VR (1998) Experimenting with error abstraction in requirements documents. In: Proceedings of the Fifth IEEE International Software Metrics Symposium, pp 114–121Google Scholar
  20. Leszak M, Perry DE, Stoll D (2000) A case study in root cause defect analysis. In: Proceedings of the 22nd International Conference on Software Engineering, pp 428–437Google Scholar
  21. Mays RG, Jones CL, Holloway GJ, Studinski DP (1990) Experiences with defect prevention. IBM Syst J 29(1):4–32CrossRefGoogle Scholar
  22. Nolan TW (2000) System changes to improve patient safety. BMJ Br Med J 320(7237):771CrossRefGoogle Scholar
  23. Pooley R, Senior D, Christie D (2002) Collecting and analyzing web-based project metrics. IEEE Softw 19(1):52–58CrossRefGoogle Scholar
  24. Raja UA (2009) Empirical studies of requirements validation techniques. In: 2009 2nd International Conference on Computer, Control and Communication, pp 1–9Google Scholar
  25. Reason J (1990) Human error. Cambridge University Press, New YorkCrossRefGoogle Scholar
  26. Reason J (2008) The human contribution: unsafe acts, accidents and heroic recoveries. Ashgate PublishingGoogle Scholar
  27. Reason J, Manstead A, Stradling S, Baxter J, Campbell K (1990) Errors and violations on the roads: a real distinction? Ergonomics 33(10-11):1315–1332CrossRefGoogle Scholar
  28. Saha G K (2006) Software fault avoidance issues. Ubiquity 2006(November):5:1–5:15CrossRefGoogle Scholar
  29. Shappell S, Wiegmann D (2001) Applying reason: The human factors analysis and classification system (HFACS). Human Factors and Aerospace Safety 1:59–86Google Scholar
  30. Sommerville I (2010) Software Engineering, 9th edn. Addison-Wesley, HarlowzbMATHGoogle Scholar
  31. Suma V, Nair T (2008) Defect prevention approaches in medium scale it enterprises. In: Proceedings of the National Conference on Recent Research Trends in Information Technology, pp 134–138Google Scholar
  32. Terzakis J (2013) Reducing requirements defect density by using mentoring to supplement training. Int J Adv Intell Syst 6(1):102–111Google Scholar
  33. Walia GS, Carver JC (2009) A systematic literature review to identify and classify software requirement errors. Inf Softw Technol 51(7):1087–1109CrossRefGoogle Scholar
  34. Walia GS, Carver JC (2010) Evaluating the use of requirement error abstraction and classification method for preventing errors during artifact creation: A feasibility study. In: 21st IEEE International Symposium on Software Reliability Engineering, pp 81–90Google Scholar
  35. Walia GS, Carver JC (2013) Using error abstraction and classification to improve requirement quality: conclusions from a family of four empirical studies. Empir Softw Eng 18(4):625–658CrossRefGoogle Scholar
  36. Wickens CD, Hollands JG, Banbury S, Parasuraman R (2015) Engineering psychology & human performance. Psychology PressGoogle Scholar
  37. Wiegmann D, Shappell S, Boquet A, Detwiler C, Holcomb K, Faaborg T (2005) Human error and general aviation accidents: A comprehensive, fine-grained analysis using HFACS. In: DOT/FAA/ AM-05/24Google Scholar
  38. Wiener EL, Kanki BG, Helmreich RL (1995) Cockpit resource management. Gulf Professional PublishingGoogle Scholar
  39. Zhang J, Patel VL, Johnson TR, Shortliffe EH (2004) A cognitive taxonomy of medical errors. J Biomed Inform 37(3):193–204CrossRefGoogle Scholar

Copyright information

© Springer Science+Business Media, LLC, part of Springer Nature 2018

Authors and Affiliations

  1. 1.Department of Software Engineering and Game DevelopmentKennesaw State UniversityMariettaUSA
  2. 2.Department of Computer ScienceUniversity of AlabamaTuscaloosaUSA
  3. 3.Department of Computer ScienceNorth Dakota State UniversityFargoUSA
  4. 4.Department of PsychologyMississippi State UniversityStarkvilleUSA

Personalised recommendations