1
Introduction to Software Engineering
Version 2 CSE IIT, Kharagpur
Lesson
1
Basic Issues in Software Engineering
Version 2 CSE IIT, Kharagpur
Specific Instructional Objectives
At the end of this lesson the student will be able to:
• Identify the scope and necessity of software engineering.
• Identify the causes of and solutions for software crisis.
• Differentiate a piece of program from a software product.
Scope and necessity of software engineering
Software engineering is an engineering approach for software development. We can alternatively view it as a systematic collection of past experience. The experience is arranged in the form of methodologies and guidelines. A small program can be written without using software engineering principles. But if one wants to develop a large software product, then software engineering principles are indispensable to achieve a good quality software cost effectively. These definitions can be elaborated with the help of a building construction analogy.
Suppose you have a friend who asked you to build a small wall as shown in fig. 1.1. You would be able to do that using your common sense. You will get building materials like bricks; cement etc. and you will then build the wall.
Fig. 1.1: A Small Wall
But what would happen if the same friend asked you to build a large multistoried building as shown in fig. 1.2?
Fig. 1.2: A Multistoried Building
You don't have a very good idea about building such a huge complex. It would be very difficult to extend your idea about a small wall construction into constructing a large building. Even if you tried to build a large building, it would collapse because you would not have the requisite knowledge about the strength of materials, testing, planning, architectural design, etc. Building a small wall and building a large building are entirely different ball games. You can use your intuition and still be successful in building a small wall, but building a large Version 2