Portability metrics with prope

My dissertation project centers around portability metrics for process-oriented software. I propose metrics and evaluate them by analyzing real-world process models. To perform these analyses, I implement the metrics in a metrics suite and recently I merged my efforts of the last years into a shining new project, the PROcess-aware information systems Portability mEtrics suite, in short: prope

The prope logo

Prope is a static analyzer that probes for portability issues in process code and highlights these issues by computing portability metrics for a process. It can analyze a variety of artifacts, most notably processes written in BPMN 2.0 and BPEL 2.0. It is completely open source, free to use, and licensed with the MIT license. I want to use this blog post as a short demonstration of what prope can do and how it can be used. All this information is also available on prope’s project page.

Prope is a classical command line tool: You invoke it from the console and pass it some parameters. Then the tool performs an analysis as specified by the parameters, prints some output to the console on the way and finally writes the results of the analysis to a result file. Prope is written in Java and uses gradle for building and execution. All you need for using prope is a JDK installed and JAVA_HOME properly specified.

How to invoke it?

To invoke prope, simply call it from the command prompt in its installation directory:

> prope "<metric-option> <path-to-file>"

<metric-option>: Prope allows for the computation of various types of metrics and the files to be analyzed depend on that type. For that reason, the type of metrics to be computed must be stated on execution. Following options are implemented so far:

  • p: prope computes direct portability metrics, such as weighted elements portability or activity portability, for process files
  • d: prope computes deployability metrics, such as deployment descriptor size or effort of package construction, for deployment archives
  • i: prope computes installability metrics for process engines, such as average installation time or installation effort
  • a: prope computes adaptability metrics for processes, such as binary or weighted adaptability

<path-to-files>: Prope parses single files or recursively traverses directory structures, looking for relevant files. Everything that is analyzed in an execution run is aggregated to a result set and written to CSV files, ready to be consumed by MS Excel or R. Prope is forgiving: It tries to analyze as many files as possible, sometimes depending on the type, but if the analysis for a file fails or nothing relevant is found, that file is just ignored.

What is the result?

Prope produces two different files that are written to the root directory and can be analyzed by statistical tooling:

  • results.csv: A list of all metrics of the selected type and their values for the files analyzed. Values are separated with a semicolon.
  • raw.csv: A list of raw data from which several metrics of the above metrics can be computed. Values are separated with a semicolon.

I don’t want to discuss the concrete metrics that prope computes and writes into the result files here, since this goes a little bit too far and is detailed in several research papers [1][2]. If you are interested in process portability, I welcome you to give the tool a try! If you have any questions on its functioning or usage, or indeed the metrics, feel free to ask here or by mail, I will be delighted to answer :)