| 1 | Allows for composition of the computational task from components (reusable modules) |
| 2 | Different tools to support various programming models such as data parallel, task parallel, data flow, object oriented |
| 3 | No assumption on granularity |
| 4 | Metadata about components and support for archiving and mining the components |
| 5 | Support for instrumentation and steering |