## 3 Proposal
### Proposal Overview  
The proposed framework comprises the two components depicted in Figure 5: the Model Execution Engine (MEE) and the Python Execution Environment (PEE). The former executes the application model, which consists of a PN and a set of GRRs. The latter executes the instructions (statements) that reflect this model. The MEE fires an enabled transition whenever the model has enabled transitions. Transitions are square boxes labeled with a name and extended with two entities:  
1. a statement that should be executed by the PEE, and
2. a guard that should be satisfied to fire this transition. The MEE invokes the statement by sending it to the PEE. The latter executes the instruction, then notifies the MEE whether the instruction is correctly executed or not. The MEE reflects, at runtime, the marking, the history of fired transitions, and the states of transitions in the model. The user is able to analyze the reachability of the application structure based on the current marking. The color of each transition changes depending on its state: enabled (green), disabled (red), or running (orange). \begin{table}
\begin{tabular}{p{142.3 pt} p{142.3 pt}} \hline \hline
**Approach** & **Issues** \\ \hline [PERSON] et al. [9] & The proposal analyzes the dynamic behavior of SLA in cloud environments, but the authors do not provide a tool implementing the proposed approach. \\ \hline [PERSON] et al. [3] & It is only related to Java. \\ \hline [PERSON] and [PERSON] [12] & It does not reflect changes between the model and the system at runtime. \\ \hline [PERSON] and [PERSON] [5] & The focus is on the system architecture and not on changing the behavior at runtime. \\ \hline [PERSON] et al. [7] & The objective is to develop a smart architecture at runtime. Therefore, it is not focused on performing changes at runtime. \\ \hline [PERSON] and [PERSON] [8] & The proposal domain is not general, because it is centered on interpreting information systems. \\ \hline [PERSON] et al. [19] & The proposal is focused on event systems, and it does not deal with unpredictable requirements. \\ \hline [PERSON] et al. [20] & The focus is on runtime monitoring and not on changing the behavior at runtime. \\ \hline [PERSON] et al. [21] & The proposal studies the verification of model transformations and does not deal with unpredictable changes. \\ \hline [PERSON] et al. [22] & The authors deal with the transformation of UML models, and unpredictable changes are not considered. \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Open challenges in previous works. Figure 5: The framework architecture. The framework supports the creation of new applications and the reconfiguration of running applications. The process of creating a new application, depicted on the left-hand side of Figure 6, starts in the requirement elicitation phase, that is, when the initial requirements are specified. Programmers develop the classes/functions that are invoked by transitions. They model the initial structure as a PN and enrich transitions with the statements and guards to compose the whole Python application. Finally, they execute the application using the MEE. Once the application is running, the monitoring process starts. During this process, developers can inspect Python expressions. In addition, the framework is able to deal with Python exceptions. The right-hand side of the figure shows the reconfiguration process, which starts after the execution begins, when a new requirement materializes. Next, the developers add the corresponding GRRs to rewrite the current structure and, therefore, satisfy the new requirement. For instance, if the new requirements include executing new statements, then developers must associate them with new transitions in the RHS and specify in which part of the PN model those statements are injected, that is, create the LHS. This process is similar to the creation of the initial model. Through this paper, we assume that developers use built-in instructions and functions they define themselves in transitions.