Table of Contents



  1. Introduction
  2. Software Processes
  3. Software Requirements
    Analysis and Specification
  4. Planning a Software Project
  5. Software Architecture
  6. Design
  7. Coding and Unit Testing
  8. Testing

Presentation Slides

A Case Study




A Concise Introduction to Software Engineering

Author: Pankaj Jalote, Indian Institute of Technology Delhi

Publisher: Springer, 2008, ISBN: xxxxx



An introductory course in Software Engineering remains one of the hardest subjects to teach because of the wide range of topics the subject encompasses. Often we tend to teach too many concepts and topics in an introductory course resulting in shallow knowledge and little insight on application of these concepts.


However, by carefully selecting the concepts and topics, we can, in the course of a semester, impart to the students knowledge and skills that are needed to successfully execute a commercial project of a few person-months effort while employing proper practices and techniques. This is the motivation of this book.


The goal of this book is to introduce to the students a limited number of concepts and practices which will achieve the following two objectives:


  • Teach the student the skills needed to execute a smallish commercial project.


  • Provide the students necessary conceptual background for undertaking advanced studies in software engineering, through courses or on their own.


It is worth pointed out that a vast majority of the projects executed in the industry today fall in this scope executed by a small team over a few months.


This site is primarily meant to provide supporting material for this book. The following material will shortly be available:

  • Templates for SRS, Project plan, review report, architecture document, etc that can be used for work products in a project (word docs, together in a zip file).
  • Documents of a case study (a University Auction System) SRS, Architecture and Design, Plan, test plan.
  • Presentation slides in ppt format
  • Some inspection and unit testing exercises