Lets share experience on how to actually work around bouml's (not so) informative error messages.
1. During roundtrip sequence "lost" functions might come from
A) Inherited function signature changed from base class.
The main sign of this problem - "add inherited function" on a class allows to add a function that is already there. Solution: "Look for messed up inheritance"
B) Pointer madness. First of all - bouml actually allows variabes to be passed by pointers. Why isn't the option in default in/inout/out combobox I will probably never understand, but even if you change & to * MANUALLY you will soon find out that these functions are marked as LOST during roundtrip process… It took me quite some time to figure out the problem but I think I did: even if bouml never says that it checks parameters to conform to IN specification, it seems that IT DOES INDEED so "in" parameter passed by * triggers error not being recognized as IN … Solution: remember to add const to variables marked as IN.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thats a great topic, indeed. I have some functions marked as lost but never stopped to think about it, just ignore. I ended up totally ignoring rountrip, it always mess with my comments on the code. I used then bouml to design the class interfaces and marked the "preserve operation body".
Acquiring more knowledge on its data structures, I plan on redesigning reverse and roundtrip but there's a long road till that.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Most annoying for me is a missing anticollision logic when drawing the connectors. Right now they just point to the centerpoint of an object but end at the border. It would be great if the end points of connectors try to avoid overlapping by moving a littlebit away from the center. this especially is necessary if you use rectangular routing optins (CTRL+L)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Lets share experience on how to actually work around bouml's (not so) informative error messages.
1. During roundtrip sequence "lost" functions might come from
A) Inherited function signature changed from base class.
The main sign of this problem - "add inherited function" on a class allows to add a function that is already there.
Solution: "Look for messed up inheritance"
B) Pointer madness. First of all - bouml actually allows variabes to be passed by pointers. Why isn't the option in default in/inout/out combobox I will probably never understand, but even if you change & to * MANUALLY you will soon find out that these functions are marked as LOST during roundtrip process… It took me quite some time to figure out the problem but I think I did: even if bouml never says that it checks parameters to conform to IN specification, it seems that IT DOES INDEED so "in" parameter passed by * triggers error not being recognized as IN …
Solution: remember to add const to variables marked as IN.
Thats a great topic, indeed. I have some functions marked as lost but never stopped to think about it, just ignore. I ended up totally ignoring rountrip, it always mess with my comments on the code. I used then bouml to design the class interfaces and marked the "preserve operation body".
Acquiring more knowledge on its data structures, I plan on redesigning reverse and roundtrip but there's a long road till that.
As for B), that can be solved hitting the "edit parameters" on the language tab of the method properties, that mostly works for me…
Most annoying for me is a missing anticollision logic when drawing the connectors. Right now they just point to the centerpoint of an object but end at the border. It would be great if the end points of connectors try to avoid overlapping by moving a littlebit away from the center. this especially is necessary if you use rectangular routing optins (CTRL+L)
The same goes for the labels. A simple anticllision algorithm would be great.
Everything fancy is quite difficult to get right, but a first simple shot should do the most tricks