Scrum is an iterative and incremental agile software development framework. It uses empirical process control with inspection and adaptation to optimize goal realization. Key roles include the Product Owner, Scrum Master, and Scrum Team. Main practices are the Product Backlog, Sprints, Sprint Planning, Daily Scrums, Sprint Review and Retrospective. Scrum provides transparency and flexibility to address unpredictable and changing requirements.