Internship2Career:2011 Spring System Design Document

=Introduction=

Purpose
The purpose of this project is to create a system for the UNHM internship program that will better display available internships.

Goals

 * To create a program that will display all available internships
 * To display internships by major and categories
 * Filter by company, semester, location, paid, and date added.

=Current software architecture= =Proposed software architecture=

Subsystem Decomposition
This is a UML component diagram, where each component corresponds to a source code file or package of source code files. The relationships between subsystem components are dependency relationships, shown with dashed arrows. A dashed arrow connects the source component (which makes calls) to the target component (which have functions that are called).

UML Component Diagram
.

Persistent Data Management
The database is called "i2c" which stands for internship2career. This database has all of the information for the University of New Hampshire internship program. There are eight tables:


 * Organization: Sponsor of an internship opportunity. The primary key is organizationID.
 * Opportunity: Every internship opportunity available from an organization. The primary key is opportunityID.
 * Internship: Responsible for holding all internship inquiries and information about the internship. The primary key is internshipID.
 * Contact: Responsible for any contact information that the organization wishes to provide. The primary key is contactID.
 * User: Has all of the information about the admin or anyone that uses the internship program. The primary key is userID.
 * Student: Keeps the records of all the students in the program. The primary key is studentID.
 * Category: Has a list of different categories to break up the majors. The primary key is categoryID.
 * Major: Lists all of the majors at the University. The primary key is name.

Dependency Graph of "Child-of" Relationships
This dependency graph shows the relationship of parent and child classes. A child class cannot exist without a parent class which makes them dependent on the parent. In order to create a "child" table, we need to create the "parent" table first. A "child" table is any table that has primary keys from another table as its foreign key. The "parent" of that table would be the table with that primary key. Up-down shows the "Child-of" dependency (shown in example). Down-up shows the "Parent-of" dependency.

Hardware/software mapping
'''Disclosure: In order to perform this you must have access to stem or a server you wish to put the program on. ''' First you must connect to to VPN. You may follow the instructions here: http://foss.unh.edu/opencomputing/index.php/VPN

Note: If you are already connected to the UNH network you do not need to do this.

Once you are connected to the network you then must map a drive. You can follow the instructions here: http://foss.unh.edu/opencomputing/index.php/Shared_Drive_Mapping

Once you are connected to the server it opens up in Windows Explorer. You can then navigate the folders and go to your folder where from there you can manage the project on the server. If you want to create a new folder you can go ahead and do so. We call our folder "i2c". From there you must then "SVN checkout" that folder so it will upload everything from the repository.


 * Right click on the folder "i2c" select "SVN Checkout"
 * A window will pop-up asking you to select where from you want to check that folder out.
 * The link is: https://internship2career.googlecode.com/svn/
 * Then it will add all the files to the folder from the repository.

After that we need to install the database and add some data. There are two ways to do that. One option is running the dbInstall.php files and dbInstallSandbox.php files. To do that we would run in an internet browser: stem.unh.edu/projects/i2c/db-control/dbInstall.php and stem.unh.edu/projects/i2c/db-control/dbInstallSandbox.php

The other option is scripting. We created three scripts that are kept in the "sqlcode" folder of the project "i2c". In order to run those scripts we must connect to stem via cmd prompt and mysql.

mysql> source ../../htdocs/i2c/sqlcode/i2c_create_db_and_user.sql mysql> source ../../htdocs/i2c/sqlcode/i2c_create_tables.sql mysql> source ../../htdocs/i2c/sqlcode/i2c_create_insert.sql
 * Open cmd prompt
 * Navigate to xampp and then mysql
 * My location is C:\xampp\mysql\bin
 * Connect to stem
 * C:\xampp\mysql\bin>mysql -h stem.unh.edu -u bpa22 -p
 * Note: You must have access to the server, my username is my blackboard username and my password was generated by the server administrator.
 * Once connected to stem you need to run the scripts
 * We have three scripts; create database, create tables, and insert information.
 * Create database and user:
 * Create tables:
 * Insert data:

=Subsystem services=