Software Engineering | Introduction to Software Engineering
Software is a program or set of programs containing instructions that provide desired functionality. And Engineering is the process of designing and building something that serves a particular purpose and finds a cost-effective solution to problems.
Software Engineering is a systematic, disciplined, quantifiable study and 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 networks of Hardware.
- It enables the Hardware to deliver the expected functionality.
- It acts as an 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, the software can be transferred from one computer system or environment to another.
- Adaptability –
In this case, the software allows differing system constraints and the user needs to be satisfied by making changes to the software.
- Interoperability – Capability of 2 or more functional units to process data cooperatively.
Program vs Software Product:
- A program is a set of instructions that are given to a computer in order to achieve a specific task whereas 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.