Software is a set of instructions that allows computers to perform tasks. There are two main types of software: system software which controls internal computer operations like operating systems, and application software which enables specific functions like web browsing or photo editing. Software engineering is the process of designing, developing, testing and maintaining software applications by applying programming languages and engineering principles.