Workflow-driven application design