System Administration Agent


About the Project

The goal of the project was to build an Agent that can run in the background in Windows and OSX to collect SW and HW information form the host computer and reports this information to a server running in the same network. The Agent is able to run multiple threads to execute different actions, and to act based on messages received from the server.
The information obtained from multiple Agents in the local network is used by a Java server to analyze the network topology and to show details of every device connected (see the Image Gallery below for examples).
The Windows Agent had a number of sub-components, including:

  • A bug report tool, that allowed end-users to report bugs; the tool sent log files to the Engineering team automatically using an embedded FTP client
  • A service monitor that allowed the user to inspect the running state of the Agent by means of a custom icon for each state, displayed in the System Tray in Windows
  • A traffic sniffer that allowed the Agent to assess the network traffic of the host computer and to differentiate between LAN and WAN traffic
  • A service controller that launched an associated process whenever certain conditions regarding the network environment were met
  • Custom code used to detect changes in hardware and software in different versions of each OS

Our team was composed of 3 Senior Engineers, 1 QA Specialist and 1 Project Manager

Key Features

The web application included the following capabilities:

  • Low CPU impact (< 2% in a Dual-Core processor)
  • Low memory footprint (< 1 Mb)
  • Multi-threaded
  • Sends and receives messages via TCP
  • Collects information for all HW components and all SW installed in the host computer and reports to a Server
  • Uses a server-based security mechanism to validate itself and get a token that is subsequently used to validate the connection
  • Auto-updates when a new version is available at a central repository
  • Automatically shares resources in the host computer to be accessible from other computers running the same Agent in the LAN
  • Automatically configures the computer to use a Hotspot connection from a mobile device when a command is received form the server

Project Management

Pie Digital hired us to augment their team. We worked with them for almost 6 years in different stages of their project. During that time, the company evolved its vision of the product, from a Hardware-centered solution to a software platform. We started off providing a Software Requirements Specification (SRS) in order to put together all the knowledge accumulated during the inception of the project. From that point on, we were assigned the work to be done on the Windows and OS X Agent projects and their installers and a high availability module for their Java server application. In order to provide these services, we formed a team in Argentina.

The team worked remotely and was managed locally. During this time, we evolved or LMO workflow, to manage the work being done in a proper way and to overcome the many challenges of a complex project being developed by three different teams in different locations. The project was executed using Scrum. We held daily calls with the client and traveled to the U.S. and Europe to help with the implementation of the software. The composition of our team changed along the way, peaking at 6 members including a local QA Specialist.

Project Information

  • Client: Pie Digital, Inc
  • Service: Team Augmentation
  • Location: Palo Alto, CA, USA
  • Language: C#, Objective-C
  • IDE: MS Visual Studio, XCode
  • Framework: .NET, Cocoa
  • Repo: SVN
  • Method: Agile
  • Integration: Jenkins
  • OS: Windows, OSX
  • Duration: 71 months