Report of the T&P automation project
----------------------------------------------------------------------------
Goals: 5) To automate the processes of the T&P cell at IIT Bombay.
Detailed objectives in this regard can be got from the SRS (of course,
this is limited by provisions of the second point) 4) To learn
specific workings of a web related database system -- a RDBMS
back-end, JDBC middle layer, and thin http client 3) To learn to work
in a team.  2) To learn how to write an SRS. As also, WHY to write an
SRS.  More generally, to learn how to organize a large project into
three phases - Design (culminating in an SRS) Development (culminating
in a alpha/beta version of the software) Testing, Debugging
(culminating in v1.0 of the software) All of these take roughly equal
intervals of time, and equal amounts of effort.  1) To learn the
importance of allowing for 'continuity' in a large software project
such as this (Ref: Lessons Learnt)
-------------------------------------------------------------------------
What has been achieved: 

* The software can be easily divided into four major parts: 

1) Student interface Server (stored in .../Student/*) - This runs
servlets at a given port to act as an interface to students who wish
to register, change resume, etc.

2) T&P staff interface Server (stored in .../TandP/*) - This runs
servelets at a given port to act as interface for T&P staff to deal
with all transactions of companies, and important student-related
transactions like creating a student account, etc. All maintenance
(back-up, etc) and misc work is also handled here.

3) Independently running progs (stored in .../General/*) - This just
consists of an 'Everyday Prog', like a Cron job, which does daily
updation and reminder-generation. This directory also contains some
table-creating and initialising SQL queries.

4) The backend - An Oracle 7 RDBMS with our tables created, with
administrator as owner, and proper 'grant' premissions for students,
T&P staff and administrator.

Out of these:
1) Has been done completely. All functionality described in SRS for
   this section has been implemented. Allows a student to write/modify
   his resume, give his Choice list and register for companies (if
   allowed to)

2) Has been done partially. The company interface features (add,
   modify, remove company data) has been done. Other transactions like
   schedule PPTs, interview rounds, log in job offers, etc are to be
   done. Also, the student interface feature (add new student) has to be
   done. 

3) The 'Everyday Program' been done completely. However, we need to
   include it as a cron job on the host machine when we port the code.

4) The backend is of course done. However, we need to shift some
   integrity checks to the back end from middle layer (See 'What is
   left to do')
-------------------------------------------------------------------------
What is left to do:

1) A lot of database integrity checking is being done by the middle
   layer which chould to transported to the back end. (e.g.1 while
   implementing a Boolean data type by Char[1], we should check that its
   value is only 'Y' or 'N') (e.g.2 If a company row is added to table
   Company, a corresponding row should be added to PPT_Sched,
   Round_Sched, Comp_Category. This insertion is currently being done by
   middle layer.) Hence, use of 'check' constraints and triggers is reqd.

2) The T&P staff interface server (See Point 2 above) has many parts
   which need to be completed. 

3) An important part of the system, mentioned in the SRS, is the
   Archive section, which gives statistical info (eg. Total # of Grp A
   jobs in CSE Dept last year). This section has been left out
   completely.

4) Another part which has been left out is the desiging and inclusion
   of a good directory structure for maintaining web pages -- profiles
   and job-offers of companies, student resumes.

-------------------------------------------------------------------------
Lessons Learnt:

1) Evidently, at least 2 more 'generations' of programmers will be needed
to make whatever we have made into a usable product. Even a casual
introspection tells us that in-spite of our best efforts at
documentation, they will have a hard time. Hence, allowing for
'continuity' in a project such as this is very important. This has to
be done : 
* not only by providing sufficient (and sufficient is a very
  strong word here!) documentation
* but also _designing_ the software in a scalable model, using only
  standard tools

This we have tried to do:
* by keeping certain parts (e.g. the report
  generation -a.k.a Archive Section of SRS, and the web-page updating
  routines) completely unimplemented, in order to concentrate on
  creating the basic architecture. We have also designed it so that
  frequently changing parameters (e.g. T&P registration rules) are all
  together in one place for easy changes.

* by using std. tools like Oracle RDBMS, and Java (thanks to our profs
  who insisted on JDBC and servlets!)

2) The importance of the 3 phases of s/w development, and of working
   in a team has, to say the least, been conveyed to us first hand.

3) Only Goal #5 has not been totally achieved! However, we hope that
   it can be conitued on and completed.



