10 common software architectural patterns - Search