Software is a computer program that when executes provide desired features, function, and performance to the user. It provides information to the user in hard copy as well as in virtual form (soft copy). Software is also referred as Product in software engineering. Some of the important types of software are:
- System software: For example operating system, drivers etc.
- Application software: For example Microsoft office, notepad etc.
- Embedded software: For example keypad of oven, braking system of cars etc.
- Web applications: For example Facebook, Google etc.
- Intelligence software: For example software used in robotic.
Software engineer develop these software. The specialized field of study dedicated to the process of software development and its maintenance is known as Software Engineering.
Software engineering is the establishment and use of sound engineering principles in order to obtain economical software that is reliable and works efficiently on real machines. It is application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software i.e. the application of engineering to software.
A process is a collection of activities, actions, and tasks that are performed when some software is developed. In software engineering, process is not fixed but it is adaptable that to requirement to deliver the software in timely manner and with utmost quality.
Software Development Life Cycle (SDLC)
Software development life cycle is a way to plan, design, develop, test and maintain the software system. It is step by step approach of software development. The SDLC is basically divided into four phases:
- Requirement Phase
- Design Phase
- Implementation Phase
- Testing Phase
Let’s understand these phases one by one.
During the requirements-gathering phase, the needs of the customer are gathered. Employees and users of the company’s product make their list about what kind of software is required. System analysts ask questions about the how the software will be used, how data will be accessed and handled in the system and what will be the final outcome of the processed data. After the requirement phase, the software engineers will have the view of the functionalities of the software.
In design phase, the result of requirement phase is converted into the software design plan. The emphasis shifts from ‘What to be developed’ to ‘How to be developed’. Various considerations like operating system, hardware etc. is chalked out in this phase. This is a practical and working design of what has been gathered in requirement phase.
In this phase the result of design phase is actually converted to working program code. This is the actual software which was intended in requirement phase. The outcome of this phase should satisfy the need of the customer.
In testing phase, the result of implementation phase i.e. the actual software is tested against test cases which verify the functionality of software. The testing emphasizes on the quality of the software. It tests the functionality of the software from the user perspective. Various unit tests and system tests are performed on the software.