1. A method for a computer having at least one processor for automated composition of an application, comprising: receiving a customizable template for application composition and a composition goal, wherein the goal comprises a plurality of tags and the goal is incomplete such that more than one possible composition matches the goal; refining the goal by automatically adding refinement tags to the goal; and generating an application flow that matches the customizable template and the refined goal, wherein the application flow comprises data sources, data processing operators, and outputs of the application flow.