Download Arthur Andersen CPA (Accounting) Firm

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Automated Time Tracking
From proposal to production
By Chris Gaffney
Overview
• The Language Resource Center is a lab
specifically for language students
• Students in language courses 202 and
below must spend a minimum of
50 minutes per week in the lab
• Summer 2006: Began planning to switch
to an all Mac lab
• Need to preserve much of the functionality
of our existing system.
Why build our own?
• The time tracking of the existing system
left much to be desired
• There was no preexisting system for OS X
that did what we needed
• The new system could be tailored for
exactly how we used it
• The chance to try new technologies
Requirements
• Web interface for students, teachers and
admins
• Operation is completely transparent to
most students
• Students taking multiple courses would be
able to choose which course to track time
for
• Works with OS X
Development Process
• Code is stored in a Subversion repository
• I am the only developer
• Development is done primarily on Linux for
OS X and Windows
– Required the use of cross platform languages
– Lacked the target environment when
development started
• Started with prototyping, becoming an
expert in the domain
Prototyping
• Original concept was that of a web service
– http://server/signon/gaffneyc
– http://server/signoff/gaffneyc
• Extremely thin client (curl, wget, browser)
• Web service was not a practical solution
– Depended too much on the sign off
– Browser was not transparent enough
Prototyping
• Second prototype was a dedicated TCP
server
• Written in Ruby for a quick start, flexibility
• TCP allowed for a “tripwire” that alerted
the server when the client disconnected,
restarted the system, unplugged, etc…
• Required a thicker client that implements a
very simple protocol
The Server
• Written in Ruby to take advantage of the
ActiveRecord ORM library and to reuse
code from the web interface
• Two major designs
– Original: 3 threads per connection (timer,
saver, and connection thread)
– Redesign: No timer thread, single saving
thread (serialize writes), 1 thread/connection
Clients
• Java Client
– This is the actual client that students see
– Runs on Windows, Linux, and OS X
• Ruby Client
– Console client used for testing, prototyping
protocol variations, etc…
• Objective-C
– Coming this summer…?
Web Interface
• Deployed midway through the semester
• Good response so far from both faculty
and students
• Preparing to deploy a redesign in the
coming week
– Original design was hammered out directly in
HTML and CSS
– Redesign went through a prototype / mocking
process before being implemented
Original Design
New Design
Production
• System went live on January 8th
• One minor hiccup during the first week
• Stats (since January)
– Sessions: 18298
– Logged Time: 588d 6h 25m 0s
– Students: 2156