StreamGen: Model-Driven Development of Distributed Streaming Applications