Software Architecture & Engineering best practices