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.
- 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.
Program vs Software Product:
- Program is a set of instruction related each other where as Software Product is a collection of program designed for specific task.
- Programs are usually small in size where as Software Products are usually large in size.
- Programs are developed by individuals that means single user where as Software Product are developed by large no of users.
- In program, there is no documentation or lack in proper documentation.
In Software Product, Proper documentation and well documented and user manual prepared.
- Development of program is Unplanned, not Systematic etc but Development of Software Product is well Systematic, organised, planned approach.
- Programs provide Limited functionality and less features where as Software Products provides more functionality as they are big in size (lines of codes) more options and features.