By definition, is a collection of computer programs, procedures and documentation that performs different tasks on a computer system. Software can specify the processors instruction through which the processor can change the state of computer hardware in a predefined sequence. Briefly, computer software is a language in which computer speaks.
Software is a collection of executable instructions that the computer device can execute to perform instructed task or tasks. However, software can also include non-executable resources and data.
In conclusion, software is a set of computer instructions that the processor executes using the different hardware of a computer system to let the software perform operations and function.
There are various types of software. For example, end users use application software directly such as Word processing software, internet browser etc. On the other hand, there are system software. End users also use system software but not to use the software itself, but to execute and use other application software on it. And then There can be software which the end users never run or execute themselves , such as BIOS software. A BIOS software enables the computer system to boot and make the machine usable to end users.
Engineering of software is the establishment and use of sound engineering principles in order to obtain economical software that is reliable and work efficiently on real machines.
In other words, Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software.
As mentioned in the previous paragraph, software engineering includes different software process models. These models helps in developing projects from day one to the ends of its continuity.
Unlike hardware, which is manufactured, software is engineered. In software development there are many steps. These steps varies from one project to another along with one software process model to another.
Software development is more planning and paper works than coding, at least more than expectation. From designing, to developing development plan to preparing different types of documentation for different end-users includes a lot of non-coding activities.