Process Mining for Analyzing Software Processes
This is a guest post by Vladimir Rubin. Vladimir shares his experience from applying process mining to software processes for a tourism company.
If you have a process mining case study that you would like to share as well, please contact us at email@example.com.
Why Software Process Mining?
Building flexible, adaptive software systems is becoming more and more important, because businesses need to be able to change rapidly. Especially agile methods and processes are becoming extremely popular, since they naturally deal with business change by decreasing the length of iteration lifecycles and getting quicker responses from the end-users. Additionally, concepts such as continuous integration and delivery support the dynamic rollout of software to customers and enable short user feedback loops.
By using these agile approaches, the end-user becomes a part of the software development life-cycle. His experience and his way of working with the software become accessible and essential for subsequent iterations of software development. This is the point where process mining comes into play.
We have successfully applied process mining, which is normally used more for the analysis of traditional business processes, to the area of software development. Both user interaction and systems internal behavior can be analyzed with the help of process mining. The results of this analysis can significantly influence the architecture, design, testing, and development of the software system.
In this blog article, we discuss two main use cases:
The interaction of the end-user (or of a Beta-Tester) with the software system can be logged and, therefore, analyzed with the help of mining tools. Then, the analysis results are given to the business analysts, testers, architects, and developers in order to improve the usability, reliability, efficiency, and other properties of the software system.
The sequence of services calls (calls of interfaces between components) is usually traced in order to provide developers information about system behavior and failures. This information can be imported in the process mining tool, which helps deriving the view of the software processes from a technical perspective by analyzing the performance and frequency of calls.
Both use cases were inspired by concrete requirements coming from a big European enterprise touristic project:
The team wanted to analyze the productive behavior of the users in order to see the system failures, bottlenecks, and to gather statistics.
Several critical performance challenges appeared with an increasing number of users, they had to be identified and solved.
To address these problems, we have written the user logs and the traces of the system. Then, we have imported them in the Disco tool for process mining.
Here is a short overview of the results. The data has been anonymized to protect the confidentiality of the client.
Case 1: User Activity Analysis
In Figure 1 we show the positive behavior of the user the cases which were successfully finished in the production system. It is a convenient possibility to track the production state and to identify the frequency of the paths taken through the system by the user.
In Figure 2 we show the performance view of the negative behavior, i.e. the cases containing failures, and the time wasted.
In Figure 3 the cases are clustered per variant and the typical behavior is shown. It is helpful for analyzing the individual user behavior patterns and the variety of the business processes.
Case 2: System Performance Analysis
For the second case, we have taken the trace of system calls in order to analyze the system behavior. We could identify the most frequent service calls, the spreading of calls, and also the loops, as you can see in Figure 4.
Moreover, we could also see the detailed statistics of calls and, thus, the most critical services from the performance point of view, as shown in Figure 5.
After switching to the performance view of Disco and looking at the total time statistics, we could effectively identify the most time consuming calls in the system. Identifying these delays and increasing the performance had a high priority for the developer team, because a slow service would cause users to abandon the website and potentially leave to a competitor.
In this article, we have shown two successful applications of process mining in a concrete enterprise software project.
From our point of view, this is a very fruitful application domain, because productive software systems provide a big amount of data in form of logs and traces. This data can and should be analyzed in order to improve the software quality.