When we look at the process of creating large-scale enterprise software projects, bugs are inevitable like the sun over the Sahara Desert.
The final stage of the Software Development Life Cycle (SDLC) is Post-Mortem, which includes the analysis of the process and the enhancements of the SDLC. In Russell Ovans’ book, Lord of Files: Essays on the Social Aspects of Software Engineering, the author explains how the software development life cycle continues.
The software project that contains no bug/problem is every developer’s dream. Zero defects may be conquered by TTD and applying combinatorial testing with use and test cases.
“Testing leads to failure, and failure leads to understanding.” – Burt Rutan
After the release of a project, finding the root causes of issues should not be postponed because this phase of SDLC prevents future defects and helps team members’ awareness and self-control.
Per Details From the Case Studies of Various Failures (Dalal, Sandeep, and Rajender Singh Chhillar), software bugs and root causes are explained as:
Today’s process of SDLC could not be automated for post-mortem, but Software Problems’ Root cause analysis can be automated in today’s software with machine learning algorithms. In fact, when we do this with the rule engine, it becomes semi-automatic.
However, the software system is used to test the data set of input, input causes, and defect details. I think that Artificial Intelligence and Machine learning algorithms can help us tag software errors automatically for matured systems.
A High-Level Design view of A-RCA** can be seen in the following figure:
The Steps for A-RCA** are as follows:
1. Code Repository Check-in list and Related Defects are analyzed and the training dataset is prepared.
2. A new defect is entered.
3. Defect GUI asks A-RCA** Tool, what type of defects category is presented.
4. Determination of Defects’ root cause.
5. Returning RCA*** result.
6. Save to defect to the repository.
* Dalal, Sandeep, and Rajender Singh Chhillar. “Empirical study of root cause analysis of software failure.” ACM SIGSOFT Software Engineering Notes 38.4 (2013): 1-7.
** Automated Root Cause Analyzer
*** Root Cause Analyzer