Explain the core principles of software engineering theory, specifically focusing on SOLID design principles.