## 3 Service Development Methodology
### Multi-Criteria Decision Support Service  
The Multi-Criteria Decision Support service is a general-purpose tool that facilitates the decision-making process by taking into account all the meaningful criteria. Most of the Multi-Criteria Decision Support methods can be classified into multicriteria utility methods and outranking methods that stem from the multicriteria utility theory and the outranking relations theory, respectively. The multicriteria utility theory considers all the available criteria and calculates a total evaluation score for each alternative. The multiattribute utility theory (MAUT) is one of the multiple methods classified as a multicriteria utility method [33]. Outranking methods build a preference relation, usually called an outranking relation, among alternatives evaluated on several attributes. In most outranking methods, such as ELECTRE I and PROMETHE II, the outranking relation is built through the execution of a series of pairwise comparisons of the alternatives [34]. As of now, the implemented Multi-Criteria Decision Support methods are the MAUT [35], TOPSIS [36], ELECTRE I [37], and PROMETHEE II [38]. To be more specific, the MAUT is a structured methodology designed to handle trade-offs among multiple objectives and is one of the oldest and most established multicriteria decision-making techniques. MAUT calculates a utility score for each alternative by calculating the sum of the normalized scores of every criterion for each alternative. The weights of each criterion and the score for each alternative for each criterion are obtained by the user. Those scores can be used to rank the alternatives. The Technique for Order of Preference by Similarity to Ideal Solution (TOPSIS) is based on the concept that the chosen alternative should have the shortest geometric distance from the positive ideal solution and the longest geometric distance from the negative ideal solution. TOPSIS calculates the closeness of each alternative to the ideal solution by taking into account the distances of the alternative from the ideal and negative-ideal solutions. Closeness can be used to sort the alternatives. \begin{table}
\begin{tabular}{c c c c c} \hline \hline
**Antecedents** & **Consequents** & **Support** & **Confidence** & **Lift** \\ \hline CSS3 & HTML5 & 0.046 & 0.965 & 10.78 \\ HTML5, CSS & JavaScript & 0.045 & 0.964 & 5.826 \\ HTML, JavaScript & CSS & 0.042 & 0.872 & 8.658 \\ Jenkins & Git & 0.051 & 0.857 & 3.635 \\ CSS & JavaScript & 0.083 & 0.821 & 4.963 \\ Android & IOS & 0.041 & 0.802 & 10.182 \\ Docker & Git & 0.062 & 0.797 & 3.381 \\ JSON & REST & 0.051 & 0.728 & 6.045 \\ NoSQL & Python & 0.041 & 0.598 & 4.945 \\ IOS & Android & 0.041 & 0.521 & 10.182 \\ Java & SQL & 0.055 & 0.447 & 2.557 \\ Java & JavaScript & 0.04 & 0.329 & 1.988 \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Association rules examples. ELECTRE I is based on the outranking relations theory. The result of this method is a dominance matrix in which the element (i, j) indicates whether or not alternative i outranks alternative j. The result of ELECTRE I can be represented by a graph in which the alternatives are represented by nodes, while the existence of an edge from node i to node j denotes that alternative i dominates alternative j. This method cannot be used to rank the alternatives but is used to show relative dominance between alternatives. PROMETHEE II is also based on the outranking relations theory. It considers the net outranking flow, which is the balance between the positive and the negative outranking flows. This method provides complete ranking of the alternatives. In comparison with ELECTRE I, it extends the notion of a criterion in terms of how strict it is. Hence, a criterion can be strict, linear, or strict with an indifference region, meaning that the criterion becomes strict if it takes values above the aforementioned threshold. The resulting outranking relations are less sensitive to slight differences in the scores of the criteria, and as a result, it is easier to interpret.