Non-Functional Analysis with fUML
To guarantee that non-functional requirements will be fulfilled by a software system under development, it is crucial to consider non-functional properties of the system already in an early stage of the development process.
Following the model-based engineering paradigm in software development facilitates an early analysis of non-functional properties of the system under development based on the elaborated design models.
We developed a framework for carrying out UML model-based analysis of non-functional properties of a software system based on the fUML standard. This framework is depicted in Figure 1. It takes as input a UML model with (optionally) applied UML profiles capturing additional information on the model required for carrying out analyses (such as for instance performance properties of the system). The UML model is adapted into an executable fUML view corresponding to the model format supported by the fUML virtual machine. The result of executing the model using the fUML virtual machine is an fUML execution trace providing detailed runtime information about the execution of the model which enables to analyze the behavior and properties of the modeled system. However, since the fUML virtual machine does not support UML profiles, the additional information captures using profile applications is integrated into the execution trace by our framework. This integrated UML execution trace can then be leveraged by model-based analyzers to compute concern-specific metrics such as for instance the execution time of a software service provided by the system under consideration. The model-based analyzer as well as the used UML profile applications for capturing additional information about the system are specific to the non-functional property that shall be investigated by the analysis. Thus, our framework enables the implementation of any kind of model-based analysis based on execution traces without dictating any specific analysis methodology.
Our framework offers the following benefits.
- Unlike most of the currently existing model-based analysis approach, no translation of UML models into dedicated formal languages such as Petri Nets has to be performed in order to carry out analyses. Further, the analysis results do not have to be translated back from the formal language to UML.
- Different analysis techniques and methodologies can be performed on one model by applying multiple profiles to the same model and installing dedicated analyzers for answering specific questions.
- The same model can be used for analyzing functional and non-functional properties of the modeled system.
Early Performance Analysis
To illustrate the applicability as well as the benefits of our framework, we implemented a model-based performance analyzer based on our framework capable of calculating the expected execution time of software services provided by a system. We showcase this performance analyzer on the example of a component-based software system in the e-health domain by calculating the execution time of a software service provided by this system.
We provide the performance analyzer as Eclipse plug-in.
The UML model of the system analyzed in our showcase can be downloaded in Magic Draw format or in the Eclipse UML 2 format. Further, the performance parameters used for annotating the model can be downloaded as Excel sheet.
- Magic Draw UML model: eHS.mdzip
- Eclipse UML2 model: ehs.uml
- Performance parameters: model_parameters.xlsx
Resource Contention Analysis
In this work, we introduce additional concepts that allow us to analyze resource contention on a software component level. Additionally to the structure and behavior of the software, the user can now define a workload in terms of activity diagrams. This workload represents the expected interactions with the software system and consists of different scenarios. A scenario has a number of operation calls, that can request resources such as execution time from the containing classes (service centers, SC). Each scenario is executed multiple times according to a given pattern, e.g., exponential distribution. As multiple requests can overlap and a class or service center can only serve one request at a time, later arriving requests need to be stored in a queue, allowing the analysis of certain performance properties such waiting time, queue length or utilization. Our performance analyzer is able to calculate these properties and further allows the definition of multiple instances of a class as well as a balancing strategy between multiple instances and dynamic scaling strategies. Additional information necessary for the analysis, is annotated on the software model using the UML MARTE profile.
We showcase our performance analyzer on the example of a simple PetStore system by exploring different software configurations.
We provide the performance analyzer as Eclipse plug-in
The UML model of the system analyzed in our showcase can be downloaded in Magic Draw format or in the Eclipse UML 2 format. To show the validity of our performance analyzer, we compared its results with the results obtained from a tool with similar capabilities, namely Java Modelling Tools (JMT). The comparison can also be downloaded here.
- Magic Draw UML model: petstore.mdzip
- Eclipse UML2 model: petstore.uml
- JMT comparison guide: petstore_jmt_comparison.pdf
- JMT models: jmt_models.zip
This work was partially funded by the European Commission under the Seventh Framework Programme for Research and Technological Development (FP7, 2007-2013) and is part of the ARTIST project.
This work is done in collaboration with University of L’Aquila.