To design interfaces, we will apply the theory of patterns.
To implement interfaces, we will follow the component-based software engineering approach.