********************* Claims Database ********************* INITIAL SPECIFICATION Document Version 1.0 Tuesday 12 May 2009 *********************************************************** Document Contents ----------------- - Stated Aims - Requirements - Maximum Specifications - Implementation - Estimated Timescales Stated Aims ----------- To create a database system for recording, and hastening any claims made in respect of expenses, overtime, or even liability. The system is intended to replace the current MS Access implementation, and must contain similar, if not enhanced, functionality. The system is intended to be as Platform Agnostic as possible, although the host system will need to be a UNIX based derivative. With this in mind, the system must fulfil the compatability requirements expected of UNIX programs. Requirements ------------- - Must be POSIX Compliant - Any Dependancies must be Open Source - Configuration must be set globally from no more than 3 text files. These must be well commented - Must store information in CSV's or Similar portable MIME Type - Must assign a primary key (Claim Ref?) - Primarily BASH Based - Should allow user to attach notes (Text delimited field) - Should act like a relational Database - Must support Querying - Should allow user to attach documents to a claim - Should feature a Graphical (web-based?) front end as well as a CLI Front end - May be updated from work, so no Javascript to be used in front end - Pretty Interface! - Both CLI and WYSIWYG UI's should be able to adjust Configuration - Must be able to produce reports - Reports must not be more than one A4 page wide - Reports should be able to create Totals (i.e. Total Claims processed) - Web Interface Must use access control (One time token?) - Must use CGI's and not PHP/ASP - Menu Driven - Should have a claim deletion function - Must have an easy backup request system - Should load easily from a slow connection - Could use SSL with a Self Signed Certificate - Code should be aimed at being portable between other uses (project databases etc.) Maximum Specifications ----------------------- The base system should require no more than 5MB of disk space. In order to conserve Bandwidth, the Web Interface should amount to no more than 3MB The system should rely primarily on the GNU Tools The Database store (CSV's) should not contain any more fields than absolutely necessary. Implementation --------------- 1) Create Database structure, ensure all necessary fields are included in CSV's 2) Create Barebones Config Files 3) Create Protocol Drivers for insertion of records, it must be possible to call these from both the GUI and the CLI 4) Create CLI Driver to test protocol drivers. See Test Schedule 5) Create Pre-defined Queries - Outstanding Claims etc. 6) Test Pre-Defined Queries. See Test Schedule 7) Create Basic CLI wrapper for Protocol Drivers. Functionality - Inserting records, and attachment of Documents. 8) Ensure basic functionaility exists for CLI Front End. See Test Schedule. 9) Develop Basic GUI. Functionality - Inserting Records 10) Test Basic GUI 11) Basic Functionlity should now exist. Run Integration Testing on Stages 4, 6 and 8 12) Release stage 0.1 acheived! 13) Enhance functionality of CLI to include the running of pre-defined queries (outstanding claims etc.) 14) Stage 13 Testing - See Test Schedule 15) Add Basic Query functionality to GUI 16) Integration and regression testing - See Test Schedule 17) Develop Protocol Driver for Queries requiring User to specify a date or Claim type 18) Develop CLI Stub and Driver for Stage 17 testing - See test schedule 19) Develop CLI Front end for Custom Query Driver 20) Stage 19 Testing -- See Test Schedule 21) Develop GUI Front end for Custom Query Driver 22) Stage 21 Testing -- See Test Schedule 23) Full Integration and Regression Testing 24) Release stage 0.2 Acheived! 25) Create Backup script 26) Stage 25 Testing -- See Test Schedule 27) Integrate Backup script into both CLI and GUI 28) Stage 27 Testing -- See Test Schedule 29) Create Reporting function for CLI 30) Test Reports - Stage 28 Testing 31) Create Reporting function for GUI 32) Implement Access Control on GUI 33) Stage 32 Testing -- See Test Schedule 34) Implement Record Deletion Protocol Drivers 35) Create both a Stub and a Driver to test new implementation 36) Stage 35 Testing 37) Integration and Regressive Testing 38) Full System testing 39) Release Stage 0.5 Acheived, all Functionality implemented Estimated Timescales -------------------- All timescales exclude testing times. - Stages 1 - 12 (Release Stage 0.1) --------------------------------- Approximately 36 Hours - Stages 13 - 24 (Release Stage 0.2) ---------------------------------- Approximately 48 Hours - Stages 25 - 39 (Release Stage 0.5) ---------------------------------- Approximately 72 Hours *********************************************************** DOCUMENT END ***********************************************************