Software engineering is an engineering branch associated with development of software product using well-defined scientific principles, methods and procedures. The outcome of software engineering is an efficient and reliable software product. What is a software? It is a set of instructions or data a computer processor reads in order to perform a task or operation. Software is mainly divided in to two types based on the type of accomplishment. These are as follows: a. System software: These are meant to manage the computer itself, such as an operating system, memory management, file management utilities, and disk operating system (or DOS). The operating system manages the computer hardware resources in addition to applications and data. Can you imagine a computer without an operating system? It won’t be as easy as it is now to operate a computer. The different types of operating system in the market are windows, linux, ubuntu etc. b. Application software: Application software is a program or group of programs designed for end users. Application software resides above system software and includes applications such as database programs, word processors and spreadsheets. Application software may be bundled with system software or published alone. Application software may simply be referred to as an application. The software life cycle is the sequence of different activities that take place during software development. There are also different deliverables produced. Although deliverables can be agreements or evaluations, normally deliverables are objects, such as source code or user manuals. Usually, the activities and deliverables are closely related. Milestones are events that can be used for telling the status of the project. Types of software life cycle activities: 1. Feasibility: Determining if the proposed development is worthwhile. Market analysis: Determining if there is a potential market for this product. 2. Requirements: Determining what functionality the software should contain. Requirement elicitation: Obtaining the requirements from the user. Domain analysis: Determining what tasks and structures are common to this problem. 3. Project planning: Determining how to develop the software. Cost analysis—Determining cost estimates. Scheduling: Building a schedule for the development. Software quality assurance: Determining activities that will help ensure quality of the product. Work-breakdown structure: Determining the subtasks necessary to develop the product. 4. Design: Determining how the software should provide the functionality. Architectural design: Designing the structure of the system. Interface design: Specifying the interfaces between the parts of the system. Detailed design: Designing the algorithms for the individual parts. 5. Implementation: Building the software. 6. Testing: Executing the software with data to help ensure that the software works correctly. Unit testing: Testing by the original developer. Integration testing: Testing during the integration of the software. System testing: Testing the software in an environment that matches the operational environment. Alpha testing: Testing by the customer at the developer’s site. Beta testing: Testing by the customer at the customer’s site. Acceptance testing: Testing to satisfy the purchaser. Regression testing: Saving tests from the previous version to ensure that the new version retains the previous capabilities. 7. Delivery: Providing the customer with an effective software solution. Installation: Making the software available at the customer’s operational site. Training: Teaching the users to use the software. Help desk: Answering questions of the user. 8. Maintenance: Updating and improving the software to ensure continued usefulness.
Indian Institute of Technology Kanpur
SRM institute of science and technology
INDIAN INSTITUTE OF TECHNOLOGY GUWAHATI