Streamgen: a UML-based tool for developing streaming applications