Software is a program or set of programs containing instructions which provide desired functionality . And Engineering is the processes of designing and building something that serves a particular purpose and find a cost effective solution to problems.
Software Engineering is a systematic approach to the design, development, operation, and maintenance of a software system.
Dual Role of Software:
1. As a product –
- It delivers the computing potential across network of Hardware.
- It enables the Hardware to deliver the expected functionality.
- It acts as information transformer because it produces, manages, acquires, modifies, displays, or transmits information.
2. As a vehicle for delivering a product –
- It provides system functionality (e.g., payroll system)
- It controls other software (e.g., an operating system)
- It helps build other software (e.g., software tools)
Objectives of Software Engineering:
- Maintainability –
It should be feasible for the software to evolve to meet changing requirements.
- Efficiency –
The software should not make wasteful use of computing devices such as memory ,processor cycles etc..
- Correctness –
A software product is correct, if the different requirements as specified in the SRS document have been correctly implemented.
- Reusability –
A software product has good reusability, if the different modules of the product can easily be reused to develop new products.
- Testability –
Here software facilitates both the establishment of test criteria and the evaluation of the software with respect to those criteria.
- Reliability –
It is an attribute of software quality. The extent to which a program can be expected to perform its desired function, over an arbitrary time period.
- Portability –
In this case, software can be transferred from one computer system or environment to another.
- Adaptability –
In this case, software allows differing system constraints and user needs to be satisfied by making changes to the software.
- Interoperability – Capability of 2 or more more functional units to process data cooperatively.
Program vs Software Product:
- A program is a set of instructions which is given to a computer in order to achieve a specific task whereas a software is when a program is made available for commercial business and is properly documented along with its licensing. Software=Program+documentation+licensing.
- A program is one of the stages involved in the development of the software, whereas a software development usually follows a life cycle, which involves the feasibility study of the project, requirement gathering, development of a prototype, system design, coding and testing.