## 3 Background  
### Problem Definition  
This paper aims to address the problem of software change propagation, which pertains to the process of identifying and monitoring the influence of software changes on other components of a software system. When a software system undergoes modifications, it is crucial to recognize and comprehend how those changes affect other parts of the system where changes in one part of the can have significant impacts on other parts, potentially causing bugs or errors. For example, as shown in Figure 1, there is a list of files that have changed together in the past grouped as a single _transaction_ or co-change. Let us consider that the developer (\"_Dev1_\") changes files \"a.java\" and \"b.java\" together, so they are called a co-change or transaction or session, and we use them to train in predicting the probabilities of CP.  
\begin{table}
\begin{tabular}{c c} \hline \hline
**Categories** & **Publication** \\ \hline Audio and music analysis & [50; 51] \\ Information extraction & [52] \\ Recommender systems & [53; 54; 55; 56] \\ Sentiment analysis, text classification, and clustering & [57; 58; 59; 60] \\ \hline \hline \end{tabular}
\end{table}
Table 2: Exploring the versatility of word embeddings: some of the usage in various domains.  
To refer to a module of the system at any given level of abstraction, throughout this work, we will use the term \"element\". The scope of an element within the system is determined by the level of granularity. An element can be defined as a conceptual component at different levels, such as a package (directory), subpacket (subdirectory), files such as classes, interfaces, and so on. The Java package is a collection of similar subpackages, interfaces, and classes. A subpackage is a package that is defined inside another package. This is carried out to make the structure of the packages more generic and organized. For example, if one has a package named \"University 1\" and a subpackage \"department 1\", all the supporting Java files will be defined inside it.  
Although co-change is not the same as CP, it can be helpful in predicting it because if elements have changed together in the past, it is more likely that they will change together in the future, and changes are likely to propagate among those elements. In this case study, we opt to define the element at the file level as a file name. To predict future CP and use it as an element recommendation, we will use each transaction pattern in the changelog obtained from the CVS as input for the proposed model and predict the next element that most likely needs to be changed located nearby in the vector space.  
Speaking more formally, given a set S of element changelogs obtained from the CVS, where different operations (create, read, update, and delete) are applied by N developers, where the developer's changelog \(s=(t_{1},t_{2},\ldots,t_{m})\in S\) is defined as continuous sequence of M transactions and each transaction element changelog \(t_{m}=(f_{m1},f_{m2},\ldots,f_{mB_{m}})\) consists of \(B_{m}\) that is operationally modified, our objective is to find a d-dimensional real-valued representation \(v_{f}\in\mathbb{R}^{d}\) of each element f that is chosen in such a way that co-changed similar elements are found nearby in the vector space.  
This probabilistic view of the change propagation that uses the concept of distributional models to learn the vector representation of elements is based on a skip-gram of Word2 vec [15]. Word2 vec was initially designed for NLP purposes. Here, we investigate and use them as tools in the CP domain. Taking this perspective motivates the development of a probabilistic method to solve the problem.