Component-based software design with Petri nets by