There are three categories of computer software: system software, application/middleware software, and user-written software. System software manages computer hardware and allows application software to run tasks for users. Application software directly performs tasks for users like word processing and games. Middleware provides tools to help developers create application software more easily. User-written software are programs created by users to meet their specific needs, like macros and scripts.