Everyone has a talent and so do you. Let it shine out, is all you have to do.
--Your friends at LectureNotes

Note for Software Engineering - SE By Neelamani Samal

  • Software Engineering - SE
  • Note
  • Information Technology Engineering
  • 10 Topics
  • 12 Offline Downloads
  • Uploaded 1 year ago
0 User(s)
Download PDFOrder Printed Copy

Share it with your friends

Leave your Comments

Text from page-1

Principle & Practices Of Software Engineering PRINCIPLES & PRACTICES OF SOFTWARE ENGINEERING Lecture -1 History Of Software Engineering: Objectives : • 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 Page | 1 Prepared By Neelamani Samal

Text from page-2

Principle & Practices Of Software Engineering 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 building requires knowledge of civil, architectural and other engineering principles. Without using software engineering principles it would be difficult to develop large programs. In industry it is usually needed to develop large programs to accommodate multiple functions. A problem with developing such large commercial programs is that the complexity and difficulty levels of the programs increase exponentially with their sizes as shown in fig. 1.3. Fig. 1.3: Increase in development time and effort with problem size Software crisis Software engineering appears to be among the few options available to tackle the present software crisis. To explain the present software crisis in simple words, consider the following. The expenses that organizations all around the world are incurring on software purchases compared to those on hardware purchases have been showing a worrying trend over the years (as shown in fig. 1.4) Page | 2 Prepared By Neelamani Samal

Text from page-3

Principle & Practices Of Software Engineering Organizations are spending larger and larger portions of their budget on software. The cost we are talking of here is not on account of increased features, but due to ineffective development of the product characterized by inefficient resource usage, and time and cost over-runs. There are many factors that have contributed to the making of the present software crisis. Factors are larger problem sizes, lack of adequate training in software engineering, increasing skill shortage, and low productivity improvements. This can be solved with proper use of Principles of software engineering. Program vs. software product Programs are developed by individuals for their personal use. They are therefore, small in size and have limited functionality. In case of a program, a single developer is involved. The user interface may not be very important, because the programmer is the sole user. In case of program very little documentation is expected. A program can be developed according to the programmer’s individual style of development. Software products are extremely large; most users are not involved with the development. And a large number of developers are involved. For a software product, user interface must be carefully designed and implemented because developers of that product and users of that product are totally different. Software product must be well documented. Software Product must be developed using the accepted software engineering principles. Exploratory style vs. Modern style of Software development The exploratory software development style is based on error correction. In the exploratory style, errors are detected only during the final product testing. In the exploratory style, coding was considered synonymous with software development. For instance, exploratory programming style believed in developing a working system as quickly as possible and then successively modifying it until it performed satisfactorily. The Modern Software Engineering principles are primarily based on error prevention. Inherent in the software engineering principles is the realization that it is much more cost-effective to prevent errors from occurring than to correct them as and when they are detected. Even when errors occur, software engineering principles emphasize detection of errors as close to the point where the errors are committed as possible. The modern practice of software development is to develop the software through several well-defined stages such as requirements specification, design, coding, testing, etc., and attempts are made to detect and fix as many errors as possible in the same phase in which they occur. In the modern software development style, coding is regarded as only a small part of the overall software development activities. There are several development activities such as design and testing which typically require much more effort than coding. Page | 3 Prepared By Neelamani Samal

Text from page-4

Principle & Practices Of Software Engineering Lecture -2 Objectives • Explain what a life cycle model is. • Explain what problems would occur if no life cycle model is followed. • Identify the different software life cycle models. • Identify the different phases of the classical waterfall model. • Identify the activities undertaken in each phase. • Identify the shortcomings of the classical waterfall model. • Identify the phase-entry and phase-exit criteria of each phase. Life cycle model: Definition: A software life cycle model (also called process model) is a descriptive and diagrammatic representation of the software life cycle. A life cycle model represents all the activities required to make a software product transit through its life cycle phases. It also captures the order in which these activities are to be undertaken. In other words, a life cycle model maps the different activities performed on a software product from its inception to retirement. During any life cycle phase, more than one activity may also be carried out. Need for a software life cycle Model: The development team must identify a suitable life cycle model for the particular project and then adhere to it. Without using of a particular life cycle model the development of a software product would not be in a systematic and disciplined manner. A software life cycle model defines entry and exit criteria for every phase. A phase can start only if its phase-entry criteria have been satisfied. So without software life cycle model the entry and exit criteria for a phase cannot be recognized. Without software life cycle models it becomes difficult for software project managers to monitor the progress of the project. Without using of a particular life cycle model the development of a software product would not be in a systematic and disciplined manner. When a software product is being developed by a team there must be a clear understanding among team members about when and what to do. Otherwise it would lead to chaos and project failure. Different software life cycle models Many life cycle models have been proposed so far. Each of them has some advantages as well as some disadvantages. A few important and commonly used life cycle models are as follows:      Classical Waterfall Model Iterative Waterfall Model Prototyping Model Evolutionary Model Spiral Model Page | 4 Prepared By Neelamani Samal

Lecture Notes