Considering task pre-conditions in model-based user interface design and generation