Published Paper

Architecture Overview

An MVC (model-view-controller) architecture has been selected.

Model represents the objects of XBRL: instances, inline-instances, DTS schemas and linkbases, individual test cases, test suites, and versioning reports. The model has a modelManager, which manages the set of models loaded at a time.

The controller represents interaction with external users and external programmatic control, such as by GUI, web, and command line.

A view represents pre-defined API interactions with the model, to present object views for GUI, web, and textual use (e.g., CGI files).

A number of utility functions are included to make the code easier to read and more compact. These include XML utilities, URI utilities, and a customized Python web cache.

Validation operations are factored out to separate classes, as they are quite large to include with the objects that they validate for. Validation operations have been integrated to prevent redundant passes through object models.

An advantage of open source is that fresh bright minds will, from time to time, come to look at the architecture and structure and see things that those, who are too deep in the forest to see the trees, may have overlooked. It is expected that the architecture will refactor itself from time to time and lead to continual product evolution and improvement.