CS 241, Software Engineering

Spring 2007 - 2008


Purandar Bhaduri, ext: 2360, email: pbhaduri.

Teaching Assistants

 Devesh Bharatkumar Chokshi

Chandra Sekhara Rao Routh

Ajay Chetry

Surendranath Chowdary

Sudipta Samanta

Alpesh Kumar Patel

Gaurav Makhon Baruah

Lab groups


CS 101, CS 102

You are expected to be familiar with the basics of Java.


Object Oriented Software Engineering (The home page has useful material, including lecture slides).
Timothy C Lethbridge and Robert Laganiere
Tata Mcgraw Hill Publishing Co Ltd
ISBN       007058754X


We will be using Java and UML for the course assignments and projects. Please download and install the following from the CSE Server.

1.                   Rational Doc: Documentation for the Rational Unified Process (RUP), for modelling in UML.

Start from the page Rational_Doc/rationalunifiedprocess/index.htm for an understanding of the Rational Unified Process.

      2.          Using Rose: Documentation on using Rational Rose.

            3.          Eclipse: An open source IDE for Java.

Rational Rose is installed on all the Department Linux servers. Use the command rose to invoke the program.

Java Online Books

                 1. Java Unleashed (O’Reilly)

                 2. Java Language Reference (O’Reilly)

                 3. Java Precisely, Peter Sestoft, old online version


 1. UML Applied – Object Oriented Analysis and Design using the UML

                2. UML 2.0 Tutorial by Ileana Ober.

               3. Unified Modeling Language 2.0 by Harald Störrle and Alexander Knapp.

               4. Introductory chapter from the book Real-Time UML Workshop for Embedded Systems by Bruce Powel Douglass, Elsevier.


UML State Machines

1.      D. Harel and E. Gery, "Executable Object Modeling with Statecharts", Computer 30:7 (July 1997), IEEE Press, 31-42 (cover feature).

2.      Slides on UML “State Machines and Statecharts” (Part 1 and Part 2) by Bruce Powell Douglass.

3.      Brunce Powel Douglass, "UML Statecharts", Embedded Systems Programming, January 1999, pp. 22-42.

4.      Bruce Powel Douglass, "Class 505/525: State machines and Statecharts", Proceedings of Embedded Systems Conference, San Francisco 2001.

Lab Exercises

Lab 1 (10/01/2008): This exercise is to be done by every one on his or her own and not in groups.

·        Install Java and Eclipse on your machine

·        Write a Java program to implement a simple phone book containing entries with names and telephone numbers. The program should allow users to add, delete and search for entries in the book. A person can have more than one phone number, and each number has a description, such as residence, office or cell phone number. Allow partial name search for more credit.

·        Use Eclipse to edit, compile and run the program.

Lab 2 (24/01/2008): This exercise is to be done in groups. Please spend time on planning who will do what, and work according to the plan.

·        Project exercise E 2.30 from page 59 of the textbook. See page 43 for the background details.

Lab 3 (31/01/2008): Complete the previous week’s exercise.

Lab 4 (07/02/2008): Group exercise.

Project exercises P3.2 and P3.3 from page 97 of the book. These involve running, understanding and modifying the SimpleChat program from the text.

Lab 5 (14/02/2008): Complete the previous week’s exercise.

Lab 6 (21/02/2008): Group exercise.

Modified exercises P4.3 and P4.4 (page 149 of textbook). Instead of a hotel reservation system, perform domain analysis and full requirements definition for the student registration system at IIT Guwahati. For domain analysis, follow the method of Example 4.2 on pages 104-106. For requirements definition you can use this document template, but not all of it may be applicable at this stage. While doing requirements analysis you may want to consider not just the current system, but also its shortcomings and possible enhancements. Be brief – the domain analysis document should not exceed two pages, and the requirements definition document five pages in length. Later on in the course, you will be required to develop more detailed requirements for the same system.

Lab 7 (13/03/2008): Group exercise.

Develop a complete set of use cases for the student registration system, based on the requirements you specified in the previous lab exercise. Use the format described in Section 7.3 (pages 235 – 236). Use Rational Rose for modelling use cases.

Lab 8 (20/03/2007): Group exercise.

Create a class diagram for the student registration system, based on the requirements you specified in the previous lab exercises. Your diagram should include all necessary classes, associations, generalizations and attributes. Then create a list of responsibilities and allocate them to the classes you developed for the system. Update your class diagram if necessary. Then identify the operations to realize the responsibilities of each class. Follow the guidelines on pages 181 – 194 of the textbook.  Use Rational Rose for drawing the class diagram.

Lab 9 (27/03/2008): Complete the previous week’s exercise.

Lab 10 (03/04/2008): Group exercise.

Design and develop in Java a user interface for the student registration system. Follow the direction in Sections 7.4 – 7.7 (pages 243 – 263) of the textbook. Also, draw sequence diagrams using Rose for the main collaborations (use cases and responsibilities) you identified in lab exercise 8 and 9.

Lab 11 (10/04/2008): Group exercise.

Exercise P8.3 (page 291 of textbook) for the student registration system. This is a continuation of last week’s lab exercise.

Lab 12 (17/04/2008): Group exercise.

Draw UML diagrams in Rose to describe a client-server architecture for the student registration system. The architecture should specify the subsystems, their interactions and interfaces (see pages 325 – 329 of the textbook for guidelines). Based on the architecture, start implementing the subsystems in Java. Use the OCSF framework as much as possible for the final implementation of the client server system.

Lab 13 (25/04/2008): Complete the implementation of the student registration system as a client-server system.

 back to homepage