Application of Human Error Theories in Managing Human Errors in Software Engineering
Context: Software development, especially in its initial requirements phase, is a human-centric activity and hence vulnerable to human error. Human errors are flaws in the human thought process. To ensure software quality, it is essential for practitioners to understand how to manage these human errors. Organizations often introduce changes into the requirements engineering process to either prevent human errors from occurring or to mitigate the harm caused when those errors do occur. While there are studies on human error management in other disciplines, research studies on the prevention and mitigation of human errors in software engineering and requirements engineering specifically are scarce. The current studies in software engineering do not provide strong results about the types of changes most effective in requirements engineering. Objective: The goal of this dissertation research is to structure and organize the findings on human error prevention and mitigation approaches and provide an initial evaluation of their effectiveness. To that end, I developed a taxonomy of human error prevention and mitigation strategies based on data gathered from requirements engineering professionals. Furthermore, I validated its feasibility to be broadly representative and useful in real software development processes. Method: I performed a qualitative analysis of data from two practitioner surveys on requirements engineering practices to identify and classify strategies for preventing and mitigating human errors. Then, I attempted to fit human error prevention and mitigation strategies identified in software engineering and cognitive psychology domains into the taxonomy to enhance and broaden it. Finally, I evaluated the feasibility and usefulness of the taxonomy by training senior-level undergraduate students to use the error management strategies organized in the taxonomy to handle their software development problems. Results: I organized the human error management strategies into a formal taxonomy based on whether the changes primarily affect People, Processes, or the Environment. I further organized the strategies into low-level classes inside each of these high-level categories. I found that error management strategies focused on changes in Process are more frequently used and, hence, more effective than those focused on changes in People. Conclusions: The Human Error Management taxonomy (HEMT) provides a systematic classification and organization of strategies for the prevention and mitigation of human errors in software engineering. This systematic organization provides a foundation upon which future research can build. This dissertation research provides an initial structure to the scattered error management approaches and an initial evaluation of the feasibility and usefulness of that structure. Further empirical studies are needed in more real software development environments and settings to validate and generalize the findings reported in this dissertation.