BOUML --- a free UML 2 tool box to specify and generate code in C++, Java, Idl, Php and Python