It focuses on designing the software structure of a system to meet functional and non-functional requirements.