Scrum is an agile software development framework that focuses on self-organizing cross-functional teams, sprints of work lasting 2-4 weeks, daily stand-up meetings, and empirical process control. The key roles are the Product Owner who prioritizes features, the Scrum Master who facilitates the process, and the self-organizing Development Team. Scrum uses sprints, daily scrums, sprint planning meetings, sprint reviews, and retrospectives to deliver working software frequently in an iterative and incremental fashion.