Software controls computer hardware operations and has three main functions: allowing effective hardware application to solve problems, efficient management of computer resources, and interfacing between users and stored information. There are two main types of software: system software and application software. Application software includes individual programs for single purposes, integrated packages combining features like word processing and spreadsheets, and software suites integrating full functionality from multiple packages. System software allows user interaction with computers and peripherals, and has three main components: ROM, device drivers, and the operating system.