Before a component can be used, you must consider:
application programming interface (API)
development and integration tools required by the component
run-time requirements including resource usage (e.g., memory
or storage), timing or speed, and network protocol
service requirements including operating system interfaces
and support from other components
security features including access controls and authentication
embedded design assumptions including the use of specific
numerical or non-numerical algorithms
exception handling