Software Engineering
Internet Communication Board
(iBoard System)
Objective
The objective of this project is an application of software engineering principles and
techniques to the development of a Internet software system. It covers various aspects of
object-oriented analysis, design and programming. It also provides an opportunity for a
hands-on experience with client-server Internet programming using Java, JavaScript, CGI
programming and HTML. Mastering the materials in class as well as the ability to learn new
things quickly will be essential for success in this project.
This page is copyright and if you use any of the original ideas in the future in any
commercial way. Please email webmaster@openloop.com
for approval.
Skills Required
- Knowledge of Object-Oriented analysis and design
- Understanding of web server technology
- Web-based application design and development
- Programming skills in Java, JavaScript, CGI programming (JDBC) and database management
Description
As the development of the Internet, people from different parts of the world are
brought together by a single network. As a result, utilities for mobile users start to
take active roles. Different implementations exist in the market today to serve moble
users. Most of the implementations, however, are vendor specific. For example, you have to
load Exchange/Outlook/Notes on your portable PC in order to access your groupware (email,
database, bulletin board) features.
Ideally, the users can "logon" anywhere in the world and access the essential
information he/she needs. The iBoard system is built as the next killer web-based
communication systems for mobile users. Users can logon to the iBoard system and access
instant messages from their co-workers and friends, post and access MIME eboard messages,
access authorzied database information, etc.

Implementation Requirement
- A web server will be used as the base component (You could look at using MS personal web
server, MS Frontpage web server, Java web server, Ommi web server or any other web server
you could download for free)
- The core engine of the iBoard system must be an Java application server.
- Interface from the Java server and local file system must be provided (it could be Java
IO, native command, etc).
- A form of database (MS Access, IBM DB2 or flat file implementation) must be provided
with the interface between database and the Java server.
- The client interface should be a web page with Java, JavaScript, DHTML or combination of
all of them.
- Socket programming in both the client and server will be necessary and is going to be
covered in class.

The client should at least implement the following features:
- Access is actually passing through the web server (no local access)
- Logon feature asking for userid and password
- Form a group with certain users
- eBoard - provide machanism to pass multi-media messages for
the group to view and modify
- eMsg - instant message from one user to the group
- eChat - a separate channel should be created for chatting
between two users
- eObj - access to database object from the Java / Web server
when the user is authorized
- Plan on doing at least two/three more extra features for full project credits
Java Application Server Implementation
- Interface to database should be implemented using Java/JDBC, C or C++.
- Server program should be a multi-threaded Java application. Create a thread for each
connection with the server.
- Please check Gamelan
Programming in Java & Database to learn how to design interface for DBA.
- Please check here to
know how to design multi-thread socket programming.
- Generally, please check Gamelan's
Programming in Java to get some sample codes.
- As authorization to database object and adminstration of the group might be necessary,
an user interface is recommended for providing administration management. (This will
count as an extra feature.)
Schedule
This system is supposed to be developed according to the software lifecycle taught in
class. Good software engineering principles must be followed. In particular documentation
must be good.
- Requirement and specification including Object Model, etc
- High-level design
- Low-level design
- Coding
- Test Plan
- Testing including bug list report
Grading
As the whole class will be working on similar projects, relative grading will be used.
In other words, all the projects will be ranked within the class and points will be
assigned accordingly. A lower point bound will also be used to ensure that some of the
core features are implemented in the project. (For example, 150 points for base features,
100 points for extra features)
Web Ideas
Final Word of Warning
This is not an "easy" class and the project is an essential part of the
overall grade. If you study the grade distribution of past semester, you will find out
there are 13 A and 8 F. People who did not deliver the project well enough could really
hurt their grade as the project contains more than 50% of the overall grade.
Avoid:
- Forming group late
- Changing group in the middle of the semester
- Start late and rush any part of the project
- Form a group of less than 4 people
- Not enough extra features if the group is more than 4 people
- Did the final integration of the project late
- Do not do enough testing
- All but actually one person in the group does all the programming (No, people do not get
lucky and teammate will complain...)
On the bright side, most of the students in the A range did really well in the project.
So, there is no upper bound for an A. (In other words, I do not limit the number of A in a
class.)