Task-based abstraction can express end-user tasks and carry them out via underlying services with minimal effort. However, developers must first address several issues including task execution transparency, exception handling, ontologies, and abstract architecture design.