Chapter 1. Overview of Software Engineering and the Software Development Process Marks: 20 1.1 Introduction to software: 1.1.1 Definition of software:1. Software is defined as “a collection of programs, procedures, and associated documentation and data”. 2. Software is “a data structure that enables the programs to manipulate information”. • Computer software is a product that design and built by software engineers. • Software is designed to perform a well-defined task or function. • Software controls integrate and manages the hardware components of computer system. • Software is a collection of programs, documentation and operating procedures. Programs Documentation Operating Procedures Fig. Software = program + documentation + operating procedures Common attributes of good software:a) Functionality: - It refers to the performance of the software against its intended purpose. b) Reliability: - It refers to the ability of software to avoid errors before they result in the product. c) Usability:-The software is said to be good if it is easy and simple to use. d) Maintainability:- Software must able to change. e) Dependability:- The system should be trusted by user. f) Efficiency:- Software should not make wasteful use of system resources. g) Acceptability:- software must be accepted by users for which it was designed. h) Portability: - Software should able to work on any platform. i) Integrity: - An unauthorized access to the software can be prevented. j) Robustness: - Software should able to handle an error and must keep on its working.
1.1.2 Characteristics of software:- The main characteristics of software are:1. Software is developed or engineered: • In both software development and hardware manufacturing the focus is on quality. • Software projects cannot manage like hardware manufacturing projects. • The software is developed not manufactured. 2. Software does not wear out:- • Above fig is called as ‘bath tub curve’ which indicates that the hardware have high failure rate early in its life ,then defects are corrected and failure rate drops to steady level for some period of time. • As time passes, the failure rate rises again because of environmental melodies like excess use,dust, vibrations etc. and finally hardware begins to wear out. But the software does not wear out like hardware. • The following fig shows the failure rate curve for idealized software. During the life of software it will undergo change. As changes are made, new defects will be introduced, which increases failure rate.
3. Most software is custom built:• To build the hardware fixed guidelines are followed by hardware manufacturer but to build the software no fix format is there. For every software project, developer has to apply new ideas. 1.2 Types/categories of software:There are nine types of software:1) System Software:- • System software is collection of programs designed to operate and control the processing capabilities of computer itself. • It is a collection of programs written to service other programs. • System software’s are developed by computer manufacturer. • Without these software user cannot use the hardware. • Examples are Operating system, compilers, drivers etc. 2) Application Software: • Application software is the software that is designed to satisfy a particular need. • Examples are: Student record software, railway reservation software. 3) Embedded Software: • It resides within hardware. • It performs limited functions. • Examples are: A.C., Washing machine, toys, mobile phones, 4) Real-Time Software:• A software program that monitors real-world events as they occur is called real-time. • Such software requires quick response from user. • A real time system must respond within strict time constraints. • Examples are aero plane, Car, Missiles etc. 5) Product-line Software::• This software focuses on limited marketplace such as inventory control products. • Examples are spreadsheets, word processing, computer graphics, database management 6) Engineering/Scientific Software:• These are used for scientific and engineering purpose. • Used for large computing. • Examples are Weather forecasting, CAD/CAM, MATLAB etc. 7) Web-based Software:• This software act as interface between user and internet.
• It is developed using set of linked hypertext pages (HTML) which consist of text and graphics, JAVA, PHP etc. • The software related to web applications comes under this category. 8) Artificial Intelligence (AI) Software:• The science which enables the machines to behave like human being is known as artificial intelligence. • Examples are Robotics, Game playing etc. 9) Personal Computer Software:• This software is used in personal computers. • Used for both Official and personal use. • Examples are word processors, computer graphics, games, multimedia etc. 1.3 Software Engineering:1.3.1 Definition:Stephen Schach defined the software engineering as, “A discipline whose aim is the production of quality software, software that is delivered on time, within budget and that satisfies requirements.” OR IEEE defines software engineering as,” The application of systematic, disciplined approach to the development, operation, and maintenance of software.” • The primary goal of software engineering is to produce high quality software in time within budget. 1.3.2 Need of Software Engineering:Following points describe the need of software engineering:i. ii. As software development is expensive so proper measures are required so that the resources are used efficiently. To manage the time and cost software engineering is required. iii. Software engineering is needed for building complex software system, in time with high quality. iv. Some projects are complicated so software engineering is needed to develop such software. v. Controlling and scheduling are the main activities of software project guided by software engineering. vi. Software project teams have to continuously deal with day to day or new technology challenges. To solve above problems software engineering is formed. Following points describe the importance of software engineering:i. Software engineering has a higher productivity. ii. It acquires skills to develop large programs. iii. Software engineering has ability to solve complex programming problems.