simple BPMN ecore metamodel - bpmn

I'm trying to build my own simple BPMN ecore metamodel by simplifying built one by OMG specification, with little change on dependencies between elements.
Here my own metamodel:
Would you please give me any guidelines that make sure that my metamodel is correct?

When you write "correct" you need to specify with respect to which one.
If you mean with respect to BPMN2 standard, then you need to compare your metamodel with the standard one.

Related

Mapping of YAWL onto BPMN and vice versa

Can somebody please guide me whether there is an overview (diagram?) showing which language elements map onto each other (or a construct in the other language) and which are unique in either BPMN or YAWL?
Can somebody please tell me which YAWL elements are not mapped onto BPMN elements and vice versa?
References: Aside from the two respective defining foundations, all I find is in-depth info is a research paper on Transformation of BPMN to YAWL (which is one-way).
Migrating YAWL files (*.ywl) to BPMN 2.0 schema files
Daniela Cristina Cascini Peixoto et. al.: A Comparison of BPMN and UML 2.0 Activity Diagrams
Workflow languages?
Map bpmn to wsdl
Which of these technology to use for BPM / Workflow engine? Any comparison of features?
Map bpmn to wsdl
Disclaimer: I am fluent in BPM (in particular BPMN), as well as graph theory in general, but I am new to YAWL.
M.F. found the a manuscript by
J.-H. Ye & S. Ye: Bidirectional mapping between YAWL and BPMN. We both do not have access to the manuscript (yet), but the abstract looks promising.
The modeling language mapping between BPMN and YAWL was researched. The transformation benefited the choice of different modeling languages and reduced duplication of development costs. As a proof of concept, the algorithm was implemented, and two open-sources plug-in called BPMN2YAWL and YAWL2BPMN are available in ProM6.0.
Source: Researchgate.net: Bidirectional mapping between YAWL and BPMN
There is a YAWL XML format definition which can be compared with the BPMN XML format definition.
[The YAWL Usergroup] would also like to point you to Apromore and a related discussion in the YAWL User Group Forum:
There is an XSD file that specifies the YAWL XML format
There is a tool called apromore which converts BPMN or other formats into the YAWL XML format.

Should I put the Test classes in the UML?

Should I put the test classes in the UML diagram? I can't find any "best practice" about this!
It depends. Firstly "the UML diagram" suggests that you are creating a single diagram. This is definitely not good practice. Create as many diagrams as needed lighting certain aspects of the model. So - test cases would be one of those aspects. That means: put them in (a) separate diagram(s).
To add a suggestion, if you want to model tests, you can look to UML testing profile ( UTP link) it provides needed elements to model tests, requirements and so on.
You can use SysML also since it integrates a part of UTP.
It definitely depends on context. Who is going to use the UML model and what will they use it for? In general I would say that adding test classes is going to clutter a UML model and make it difficult to understand - so no. But if the context is that the testing is what you want to explain, then clearly the test classes are going to be pretty important.
As Thomas Kilian points out, creating a number of diagrams from one underlying model is probably the right answer - and being able to do this is one of the reasons you would use UML rather than a simple diagram.
This is a preference. You can choose to or choose not to.
I would say it's better practice to have the tests modeled into the solution. But I wouldn't claim I always follow best practices 🙊
There are many diagrams needed in modeling a solution. I would focus on three: Analysis, Design, and Implementation. All three are class diagrams. All three define your solution at different abstractions.
In the analysis, you're closest to the requirements and the beginning of your solution. In here, you would want to have broad classes. I would not put tests in here since this diagram is still trying to get the shape of the solution from the user and their requirements. An analysis diagram would only have class names in a box, with lines which show their associations.
The design diagram would go into a little more detail on how classes would be built. The blueprint of the application would take shape in the design. This design can be given to any programmer and they write code which would build the solution. The interesting part of the design diagram is that it could also be given to a test engineer and they would write proper tests for the solution to be created.
The implementation diagram is the lowest level class diagram which is created. Most times, I would create this in retrospect. The implementation diagram should be a verbatim translation of the codebase. In the implementation diagram, I would have my test classes included for completeness.
Note, these are my views which I sometimes do not follow to the letter because of business constraints. However, in an ideal world, this is how I would prefer my modeling done.

How to describe messagepack data structure is used in internal bin protocol? is ASN.1 or BNF suited for it?

My goal is to write specification of simple client-server application protocol for our project where will be few kinds of client: IOS(swift), Android(java) and Web(http/websocket) probably. Server is the python. Our team decided to use MessagePack as a data structure serializer for different requests/responses.
So now i think how to describe such data structures. I don't wanna write the whole description of specification manually and spent time for thinking over different rules and agreements. I would want to point to a notation system description for my colleagues of client development.
My question is a common.
How do you behave with such task? Do you write pure text in your native speaking language or use some notation system? Is it right to use notation system and existing serializer together? I meant ASN.1. It is seemed clear.

How to describe the semantics of a language?

For syntax there is the EBNF ISO 14977 standard.
for runtime we have CLI ISO 23271 standard
see also Simple definition of "semantics" as it is commonly used in relation to programming languages/APIs?
but how to describe the transition from EBNF to CLI specs in declarative way?
i.e. is it enough to use the S-attributed grammar? Which standard define the syntax of such grammar?
There are many ways to define the semantics of a language. All of them have to express somehow the relationship between the program text and "what it computes".
A short but incomplete list of basic techniques:
Define an interpreter ("operational semantics")
Define a map from the source code to an enriched lambda calculus ("denotational semantics")
Define a map from the source code to another well-defined language ("transformational semantics")
Essentially, these are computations defined over the source text of a program instance.
You can implement these computations in many different ways. One way to implement them might be "S-attributed" grammars, although why you would want to restrict yourself to only S-attributes rather than a standard attributed grammar with inherited attributes is beyond me.
Given that there are so many ways to do this, I doubt you are going to find a standard. Certainly the programming langauge committees aren't using one. Heck, they won't even use a standard for BNF.

Is there a way to autogenerate getters and setters using ArgoUML

I found ArgoUML (i'm open to other OOP UML tools if you have any suggestions - before I get too deep into my project).
Is there a way to automatically generate getters and setters for all attributes/fields?
If not, can you suggest a UML tool that can.
Thanks.
There are bunch of different free tools available for UML modeling and forward engineering your code through it.
We have used Eclipse Plugin to create UML diagrams that generates boilerplate code.
In case you are using java - You can also try AndroMDA which accepts UML files as input to generate a CRUD Java application.
I am sure there must be similar tools available for other languages too.
Check this SO thread - How to generate UML diagrams (especially sequence diagrams) from Java code
Before really getting deep into using UML you may also want to read this thread - Do you still use UML? How? What for?
and
Is UML practical?