Arthur Andersen CPA (Accounting) Firm
Download
Report
Transcript Arthur Andersen CPA (Accounting) Firm
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