Software Engineering Virtual Lab


SE VLabs Research analysis manifests clear trends of growing interest of the Computer Science students towards e-learning. To keep this trend as well as the pace with the rapid advancement of software technologies, the "Software Engineering Virtual Lab" has been developed. This lab attempts to provide basic concepts to the students on a wide range of topics including Requirements analysis, ER modeling, identification of domain classes, use-case diagrams and designing a test suite. Ample illustrations and simulations are used to reinforce one's understanding. Once the concepts are clear, a set of exercises given on the concerned topics would help the students to evaluate themselves and their progress of learning. The main focus is to enable the students to interact with the "virtual" teacher in an effective and efficient manner compared to how they would do in a real lab on the subject.


The Software Engineering Virtual Lab has been developed by keeping in mind the following objectives:

  • To impart state-of-the-art knowledge on Software Engineering and UML in an interactive manner through the Web
  • Present case studies to demonstrate the practical applications of different concepts
  • Provide a scope to the students where they can solve small, real life problems

All the while it is intended to present Software Engineering as an interesting subject to the students where learning and fun can go alongside.

List of Experiments

  1. Identifying the Requirements from Problem Statements
    Requirements | Characteristics of Requirements | Categorization of Requirements | Functional Requirements | Identifying Functional Requirements
  2. Estimation of Project Metrics
    Project Estimation Techniques | COCOMO | Basic COCOMO Model | Intermediate COCOMO Model | Complete COCOMO Model | Advantages of COCOMO | Drawbacks of COCOMO | Halstead's Complexity Metrics
  3. Modeling UML Use Case Diagrams and Capturing Use Case Scenarios
    Use case diagrams | Actor | Use Case | Subject | Graphical Representation | Association between Actors and Use Cases | Use Case Relationships | Include Relationship | Extend Relationship | Generalization Relationship | Identifying Actors | Identifying Use cases | Guidelines for drawing Use Case diagrams
  4. E-R Modeling from the Problem Statements
    Entity Relationship Model | Entity Set and Relationship Set | Attributes of Entity | Keys | Weak Entity | Entity Generalization and Specialization | Mapping Cardinalities | ER Diagram | Graphical Notations for ER Diagram | Importance of ER modeling
  5. Identifying Domain Classes from the Problem Statements
    Domain Class | Traditional Techniques for Identification of Classes | Grammatical Approach Using Nouns | Advantages | Disadvantages | Using Generalization | Using Subclasses | Steps to Identify Domain Classes from Problem Statement | Advanced Concepts
  6. Statechart and Activity Modeling
    Statechart Diagrams | Building Blocks of a Statechart Diagram | State | Transition | Action | Guidelines for drawing Statechart Diagrams | Activity Diagrams | Components of an Activity Diagram | Activity | Flow | Decision | Merge | Fork | Join | Note | Partition | A Simple Example | Guidelines for drawing an Activity Diagram
  7. Modeling UML Class Diagrams and Sequence diagrams
    Structural and Behavioral aspects | Class diagram | Elements in class diagram | Class | Relationships | Sequence diagram | Elements in sequence diagram | Object | Life-line bar | Messages
  8. Modeling Data Flow Diagrams
    Data Flow Diagram | Graphical notations for Data Flow Diagram | Explanation of Symbols used in DFD | Context diagram and leveling DFD
  9. Estimation of Test Coverage Metrics and Structural Complexity
    Control Flow Graph | Terminologies | McCabe's Cyclomatic Complexity | Computing Cyclomatic Complexity | Optimum Value of Cyclomatic Complexity | Merits | Demerits
  10. Designing Test Suites
    Software Testing | Standards for Software Test Documentation | Testing Frameworks | Need for Software Testing | Test Cases and Test Suite | Types of Software Testing | Unit Testing | Integration Testing | System Testing | Example | Some Remarks

Target Audience

This lab is suitable for undergraduate or postgraduate students having a course on Software Engineering. An overview of Object-Oriented Programming would be helpful, although not manadatory. A little familiarity with JavaScript is required to work on the experiment on "Designing test suite".

Relevant Courses

Rajasthan Technical University The set of experiments specified here has an almost complete match with the list of experiments prescribed for the "Software Engineering Lab" as part of the B. Tech. (Computer Engineering) course offered by the Rajasthan Technical University. Other Universities Further, around 90% of the originally prescribed experiments would help to reinforce the learning on different courses offered by many other Indian universities, some of which are listed below.

PG Courses

  • "Software Engineering" course offered for M.Tech. (IT) at Visvesvaraya Technical University
  • "Object Oriented Software Engineering" course offered for M.Tech. (IT) at Andhra University

UG Courses

  • "Software Engineering" course offered for B.Tech. (IT) at West Bengal University of Technology
  • "Software Engineering" course offered for B.Sc. (CS) at Delhi University

System Requirements

You need a modern web browser with JavaScript enabled to access the complete set of features of Software Engineering Virtual Lab. In particular, this lab has been tested and found to work successfully with

  • Firefox 3.6, 5.0
  • Google Chrome 13.0
  • Opera 11.0
  • Internet Explorer 7

Any higher version of the above mentioned four web browsers would also work fine. Moreover, any web browser using modern versions of Gecko, WebKit rendering engines should be able to display properly and access all the features.