## SURVOL

Unearthing Legacy Ware. Based on CIM/WMI/WBEM, with a web ui.

Survol is a Python agent and a web interface which aim to help understanding a legacy application. A set of machines, processes, databases, programs etc .... all communicating with each other, manipulating your data, and whose software architecture has become, as time passes, complicated, intricated, difficult to understand, and undocumented.
Survol allows to display any software entity or resources running on a computer. Simply said, it is a library of Python scripts, each of them displaying a particular facet of an information system. This scripts are run on Survol agents, these agents running on a machine of the user application network.
The web interface then displays and summarizes all the information coming from the agents. It is not necessary to have an agent on all machines because many scripts can get information from other machines than the one they are running on. Strictly said, it is possible to run without an agent at all. The data model of Survol is based on classes, each of them defining a type of computer resources: Processes, machines, files etc... Its borrows extensively its ontology and terminology from Common Information Model, CIM, an existing industrial standard. Therefore, it interacts freely with CIM implementations such as Microsoft WMI, OpenLMI, OpenPegasus, WBEM and any other software based on this standard.
It is very easy to add new scripts, to display a specific kind of information, only your application defines. When resources types are not defined by CIM, Survol adds its own resource classes, in a very simply way.
If a user application defines its resources classes, it is very easy to add ones, along with associated scripts, in open or proprietary source code, without complicated setup. Just create a directory and add a new script at the right place, that's it.
The data model built by Survol, from one or several of its agents, is a set of triples: Subject, relation, object, the core data type found in the Semantic web, another standard. Survol has several display modes, for the same set of triples:

- Interactive mode, fully interactive, designed for investigating, browsing, drilling into applications internals. It uses D3, a nice JavaScript library for manipulating graphs.
- Print mode, where the rendered view cannot be modified but is designed to be nicely printed for reporting or presentations. The appearance is very close to the interactive one, but the layout is much more stable. Its uses Graphviz, an open source graph visualization software.
- The HTML mode, convenient to generate reports in plain text, reports which can be saved, and compared.

Installation: Agents can be installed a number of ways. Basically, each agent is a HTTP server. Therefore, it can be run by Apache, IIS etc... Also, Survol comes with its own simple HTTP server, if necessary. As of technical prerequisites, the host machine needs to run Python, any recent version (2 or 3). If a script needs a Python module which is missing, only this script will not run, the rest will be allright. For the interface, it is a set of HTML pages, so you can copy them wherever you want.