## 5 Evaluation Approach
### Context Description and Feature Models  
The use case represents an enterprise architecture which encompassed several security patterns of the Open Security Architecture (OSA) [56]. The security patterns used in this use case are: 'SP-001: Client Module', 'SP-002: Server Module', 'SP-003: Privacy Mobile Device Pattern', and 'SP-008: Public Web Server Pattern'. This architecture simulates a real cybersecurity context, where an organisation has a set of users and employees connected to corporate network through an _Apache Server_ as proxy. \begin{table}
\begin{tabular}{c c c c c c} \hline \hline
**Tool** & **Web** & **Diagnosis** & **Public Catalogue** & **Private Catalogue** & **Historical Record** \\ \hline CyberSPL & ✓ & ✓ & ✓ & ✓ & ✓ \\ Variamos & ✓ & \(\sim\) & & & \\ SPLOT & ✓ & \(\sim\) & & ✓ & \\ FAMILIAR & & \(\sim\) & & & \\ FeatureIDE & & \(\sim\) & & & \\ Glencoe & ✓ & \(\sim\) & & & ✓ \\ \hline \hline \end{tabular}
\end{table} 
Table 2: Comparison of SPL tools. Figure 7: Use case scenario. The users and employees can use personal devices such as personal computers and smart phones to connect the corporate network. The cybersecurity policy specify restrictions for users to connect the corporate network by using linux-based operating systems and Android devices in the case of personal computers and smart devices respectively. On the other hand, the cybersecurity policy states that the connections to the corporate network must be secure, for instance, by securing the channel through the use of _SSL/TLS_ protocol. In Figure 7, a part of the configuration of an _Apache Tomcat_ server is shown, where protocol versions or key sizes are established. To analyse the use case cybersecurity contexts, four feature models are given as a catalogue: (1) Security _Apache_ model; (2) _SSL/TLS_ model; (3) Security _Linux_ kernel model; (4) Security _Android_ model. The two first models are an updated evolution of those presented in a previous work [16], where unsafe features have been removed and other parameters such as key sizes have been added in the case of the _SSL/TLS_ model. The _Linux_ and _Android_ models are the consequence of the analysis of security configuration parameters provided by the Linux kernel and the security settings that provide Android developer guide to secure applications. The _Apache_ proposed model is shown in Figure 8; it is based on security features of an _Apache Tomcat_ server. The _Apache Tomcat_ server can provide different HTTP connectors (Apache Tomcat Configuration: [[https://tomcat.apache.org/tomcat-7.0-doc/config/http.html](https://tomcat.apache.org/tomcat-7.0-doc/config/http.html)]([https://tomcat.apache.org/tomcat-7.0-doc/config/http.html](https://tomcat.apache.org/tomcat-7.0-doc/config/http.html))) that enable listening for connections on a specific TCP port number on the server. In this particular case, the _Apache_ model represents the attributes needed to configure a HTTP connector with SSL support. Among the parameters to be set up in the _Apache_ server, can be found: (1) _Protocol_ to establish the version of the protocol to be used in the connections; (2) _Algorithm_ to establish the certificate encoding algorithm to be used; (3) _Ciphers_ to establish a list of encryption ciphers to be supported by the connections; if specified, only the ciphers that are listed and supported by the SSL implementation will be used; (4) _ClientAuth_ to establish the protocol of checking the client certificate in the connection (true value to require a valid certificate chain from the client before accepting a connection, want value to request a client certificate, but not fail if one is not presented, or a false value for not to require a certificate chain; (5) _keystore_ to establish the type and attributes to the store server keys and certificates; (6) _Truststore_ to establish the type and attributes to the store for the keys and certificates from other parties that you expect to communicate with.