This is the software design and specification document which is highlighting the design consideration of our project "Open Source Time Tracking System". It is a system which is implementing the functionalities of web-based time tracking system "WR Time Tracker" with MS Project, emailandIDEintegration.
Prerequisites for this document are the Project Proposal and Software Requirements Specifications
The "Open Source Time Tracking System" is a cross platform tool that is implementing the functionalities of web based time tracker "WR Time Tracker" with MS Project, email and IDE integration. The "Open Source Time Tracker" is not just a replacement of "WR Time Tracker". The tool is capable of parsing MS Project file and extracting the project task details according to the user.
Apart from the main implementation of time tracker the system has plug-ins for Mozilla thunderbird, eclipse IDE and IntelliJ IDEA to capture the time involvement of user in each of above tools.
As this is a cross platform system, all the implementations are done with java programming language.
This "Open Source Time Tracker" is using two types of database, one XML database for storing the local user's current work status and one MySQL database for storing all the details.
Assumption and dependencies
Hardware requirements: Enough memory and processing power to run java
VM Software requirements: MySQL database, WR Time tracker server
Operating system: This system should be work with both Windows and UNIX operating systems environment.
Scope of the project
The scope of this project is to develop a cross platform desktop client application similar to Google desktop in look, to capture the time involvement in each task by every employee. It will be easy to capture the worked time of employees and can be easy to maintain good time management
We have used the "Agile software development" to implement this project. Short time boxes are used for mini iterations and the progress verified. The team meets frequently to discuss the progress of the project and constant feedback is obtained.
Abstract System View
The system is designed on the conventional three layered architecture composed of the Presentation Layer which contains all the logic related to the user interface and profile options, the Application Layer which contains all the logic related to "WR Time Tracking System", and Data Access Layer which handles all the interactions the application has with the database.
System has common GUI with different views for managers, co-managers and normal users. When the user logs in to system, the login manager selects the appropriate view of the user according to their user level.
The login manager handles all the login related processes such as authentication.
The profile manager is responsible for selecting the appropriate view of the user according to the user level.
The project manager is responsible for creating new projects, editing existing projects deleting finished projects and assign new users for projects.
The activity manager is responsible for creating new activities, edit existing activities delete finished activities.
Plug-ins is used to record the time involvement of users of projects without leaving the IDEs.
The application layer has all the logic of the system. Every activity of presentation layer has to go through the application layer.
The xml parser is responsible for extract the project details and updates them into the database. The xml file will be uploaded in a shared folder by the particular project manager.
Report generator is handling the report generation process and sending the generated reports to managers via mail.
Invoice generator is responsible for generate invoices for billing purposes.
Data Access Layer
The database manager is providing interfaces to higher layers to read and write data from the database and to the database.
Detailed System Design
Use Case View
User level use case diagram
The following diagram shows the use case diagram of user level.
User levels are,
- Co - Manager
Use case diagram of manager
Manager supervises a team of users and co-managers by having full access to team data by playing the most important role in Time Tracker application. Time Tracker can handle multiple teams. Team manager controls only one team.
The following activities can be done by manager,
- Project Management
- Create co-manager account
- Manage team data
- Create reports
- Generate Invoices
Manager can create projects for his team including editing and deleting the projects that are already created. For a particular project, he can create task and assign users (developers) to that facilitating the editing and deleting for both created tasks and assigned user.
In case of team is too big to manage or handle, the manager will create co-manager accounts dividing the team into sub teams. Then the co -managers will be responsible for managing those sub teams.
Manager will be managing the data from co-managers as well as data from sub group team members.
Manager can generate reports for the entire team as well as for individual members. Individual users also can create their own reports.
The manager also can generate invoices for co-managers as well as users according to the hourly rate if their tasks are billable.
Co-manager performs some of manager's tasks such as working with users, projects, activities, generating reports, and invoices.
Use case diagram for normal users
Users will be using the time tracker system to enter their work times. He can log into the Time tracking system by entering username and password. Then he can start capturing time at the beginning of task involvement and stop the time capturing after finishing his tasks to submit the time involvement related to that task. Users can generate reports for themselves to view the progress and check their task status. Also he can reset password in order to receive a new password to his mail account.
Activity Diagram for Administrator:
The administrator of this time tracker will have the following activities depicted below in the activity diagram. She/he has authority to create the team managers, edit created team managers and import teams' data. And also they can customize the both dynamic and static database fields.
- Login to the system
- Customize dynamic database fields
- Create team managers
- Delete created team managers
- Edit/Modify created team managers
- Send modifications to particular managers
- Import teams data
- Logout the system
Activity diagram for Managers:
One of the key roles of this system is managers. They will organize the team activities by creating project, create activity/task, assign users, generate reports and upload the project file into the shared folder. If the team is large then managers can create co-managers and allow them to manage the team with same permissions which are having by managers.
Activity Diagram for normal users:
Normal user will be using the time tracker system to enter their work times. The normal user will be doing the following tasks.
- Login time tracker:
- Start and stop timer:
- Logout time tracker:
Perform the authentication
User enters the time spend on each activity by clicking start and stop buttons of relevant activity.
Logout the current employee
Activity Diagram for Project files Extraction:
The users will parse an MS project file that is saved in a shared folder by the project managers and extracts tasks assigned to a given resource on the user interface. Extraction will happen on the user interface by using his login name and password. The project manager will be getting mail alerts when the tasks are updated. And he will provide emails when he will upload the project files to the shared folder.
-TimeTrackerJFrame frame : object -ActJPanel actpanel : object -PeopleJPanel ppl : object -ProjectJPanel proj : object
+loadApplication() +loadPlugin() +initiateComponents() +setGUIProperty() +invokeLoad()
-FileStream file : object -StreamReader reader : object -fileLocation : String -StreamWriter write : object
+getLocation() +seperateTokens() +formatOutput() +exportToInterface()
+checkLogin() +createSession() +connetEmailServer() +callAPI() +startTimeTracking() +stopTimeTracking() +getTotalTime()
Sequence Diagram for Administrator and Managers
After successfully login to his/her user account, manager can create a new team or can import a team already created which is in the form of an XML file. In addition to that, manager can add new country to the database and can edit or deactivate the country which is already inserted into database.
Manager can create the co-manager, normal users such as developers and clients using his/her user privileges. And also can delete them or edit their profile. Then manager will create the projects and activities for the projects. Later he/she can be edited or deleted the projects or activities which those are created earlier. The manager can generate the report according to his requirements.
Sequence Diagram for users
After successfully login to his/her user account, each and every user can see the projects and the activities which those are created by manager for all users. But particular activity which is related to particular user will only be accessible. And he/she can only view others' activities, and they can't be accessed. When user starts to do the activity, timer will start to count the time and stop when the activity is completed by the user.
And users also can generate the reports. To generate the report they will have to select the project, activity and time periods.
Sequence Diagram for overall system
After the finishing the activities by users they will save it in xml database which is in the local host. Later they will update it to the server and server will save or update the database using those details passed by the server. Same as retrieve also will be done.