Scrum is an agile software development framework that uses an iterative approach with self-organizing cross-functional teams. It emphasizes daily face-to-face communication and collaboration to deliver working software incrementally. Key roles in scrum include the product owner who prioritizes features, and development teams who work in short cycles to deliver increments of functionality. Scrum was first defined in 1986 as an alternative to traditional sequential development approaches.