Google Scholar is great! It is my primary tool to find academic work, it lists all kind of publications and often provides direct access to the PDF versions of the papers. Another nice feature is that, after creating an account, it proposes “interesting” articles based on the work you published and search terms you used before. Recently, I saw such a Google Scholar Update: Another Paper (let’s refer to it as [X]) cited two of my publications.
Great! Let’s have a look in the paper. Mhmm, sounds like other people do nearly the same as we did. Let’s see what their results are… Hmmm! Sounds like other people do exactly the same as we did!
And what is more: Two papers of us were cited – but the most recent paper submitted to the EMISA 2013 workshop wasn’t. It’s not just that the results presented are more or less equal – this non-cited paper uses very, very, very similar wording in comparison to [X].
After the initial setup and analysis of some dummy Java projects I tried to configure my SonarQube server to perform some analysis on BPMN process models. As the serialization is in fact nothing else than XML code it should be feasible to use the SonarQube XML Plugin for this task. This post explains how to install and use the SonarQube XML Plugin. And how it can be used to perform schema validation on BPMN process models.
As promised in my first post this starts a small series of tutorials using SonarQube to verify some properties on BPMN process files. In this post I briefly sketch the purpose of SonarQube, describe the basic installation process and how the different parts of SonarQube can be used to perform some first analysis. Finally, I introduce my use case of analysing BPMN process models.
Inspired by my colleagues Simon and Jörg *) – who are already blogging for while – I’m also planning to inform the world what bothers me at work…
Apart from teaching students the basics of computer science I’m currently interested in BPMN 2.0, the Business Process Model and Notation in its recent version, a widespread OMG Standard for modelling and (potentially) executing business processes.
In particular I’m interested in measuring and improving the quality of BPMN 2.0 Process Models. An essential aspect when dealing with process models and their serialization is that they have to adhere the rules stated in the according Standard specification – which is not as trivial as it seems to be in the case of BPMN 2.0:
The rules and constraints defining how a “correct” – standard compliant – BPMN process has to look like are widespread all over the 538 pages of the Spec. There are class diagrams, figures, tables, excerpts from normative XSD files and hundreds of pages running text – and all these artefacts may contain information about the correct structure, mandatory attributes, allowed types of events in specific conditions, etc. pp.
This complexity itself is rather problematic but the problem is exaggerated by the fact that the spec does not provide a list of all relevant constraints and all the worse is full of errors and ambiguities.
A first step to overcome those issues was to extract and document all defined constraints from the spec and list them – the result was published in the Technical Report “BPMN 2.0 Process Model Serialization Constraints“. As the list comprises more than 600 different rules obviously a manual check of all rules is not expedient. So some students and I are currently working on automating the checks of all revealed rules – some first rule implementations will hopefully be publicly available soon.
However, motivated by a discussion with some industry contacts – I am currently evaluating the integration of those automated BPMN constraint checks into the static code analysis suite SonarQube. As I ran and run into various difficulties when doing so I shall provide a small tutorial series of working and extending SonarQube. Both, generally and specifically for my use case.
*) not to forget Stefan who isn’t blogging but twittering here about his PhD project paasify.it