Skip to content

Non Functional Requirements

DeclanBuckley edited this page Dec 8, 2023 · 20 revisions

Home / Requirements / Non Functional Requirements

Here you can find information about the Non Functional Requirements.

Non Functional Requirements (NFR) cut across the software functionality, spanning across all the modules and features. These requirements go deep into the Architecture.

Scalability.

Data Dissemination is an on-demand business model where it's difficult to predict the load on the system. PxStat is designed to work also on Virtual Environments (self or cloud hosted), taking advantage of the on-demand resource consumption model, in order to scale up and down resources efficiently and quickly.

The system is also based on Modular Components. It is possible to enable/disable modules according to business needs as well as to integrate new modules easily to future proof and extend the life-cycle of the system.

Performance.

PxStat keeps up with the constant increase of internet speed and variety of devices available by offering a full responsive and lightweight interface based on the popular Bootstrap framework.

Performance is consciously taken in to considerations and features like asynchronous processing, delegation of services and caching are all implemented to avoid or minimize potential bottlenecks.

The system is optimized for low-bandwidth connections and to run on any current mobile/desktop device. Response times are also kept as low as possible, below the second for all requests with the exception of data-set downloads where performance is dictated by the size of the data-set.

Availability.

The system is already designed to run in a Virtual Environment to minimize any Availability issues.

Even better, both Client tier, Server tier and Cache tier can be distributed across several machines (either Virtual or Physical) and attached to a Load Balancer in order to guarantee full Availability.

Full Availability can be achieved for the DB tier by running the SQL Server in Fail Over configuration.

Integration.

The World is highly connected today (IoT - Internet of Things) and PxStat integrates and provides both concepts of Open Data and Open Source to maximize integration.

The APIs (Web-Services) are based on the JSON-RPC 2.0 protocol with a variety of outputs such as JSON-Stat 2.0, Geo-JSON, PX and CSV which are all widely recognized, integrated and supported.

Integration is never ending and the evaluation of integrating with RDF (Semantic Web), Tableau and Power BI has already started.

Auditing & Monitoring

PxStat provides auditing and monitoring across different tools: Logging, Tracing, Analytics. The information collected can then be used for monitoring, collecting analytical information, addressing issues, resolving conflicts and to ensure that all the user and system actions are thoroughly recorded and stored properly so that it’s easy to trace and identify the exact sequence of events that happened in the system.

Logging.

All events are automatically logged depending on the selected threshold: INFO, DEBUG, ERROR, FATAL. The logs are stored in the Database and they are available to the Administrators (only) via a web interface.

Tracing.

All user activities are automatically traced and recorded in the Database providing a full spectrum view of the system utilization. The following information are available to the Administrators (only) via a web interface:

  • Date/Time.
  • User details.
  • User privilege.
  • IP address.
  • User-Agent.
  • API Request (Method and Parameters).

Analytics.

The system automatically collects the following analytical information about the consumption of data-sets by the general public. The following information is available to all authenticated users Administrators, Power Users and Moderators via a web interface:

  • Hits over time by Users, Bots (Search Engines), M2M (Machine to Machine).
  • Referrer.
  • Browser.
  • OS (Operating System).
  • Table language.

Multi-Tenancy.

PxStat allows to manage and disseminate statistical data-sets coming from different sources.

This allows to run PxStat as a Multi-Tenancy solution, by hosting and attributing data-sets to different sources (Copyrights). For example, this allows a NSI (National Statistical Institute) to publish data-sets on behalf of different Government Departments and attributing Copyrights against the relevant Sources.

Configurability.

PxStat comes as a White-Label product fully configurable and customisable. The look & feel of the front-end interface can be easily changed via Bootstrap and the system configuration is achieved via JSON & XML. The system behavior can be configure to different business requirements.

Security.

The system supports and includes several Security layers: SSL Connection, Access Control, Encryption (Confidential Computing) and Data Anonymization.

SSL Connection.

Both the Client tier and the Server tier support the adoption of the HTTPS protocol.

N.B. SSL over HTTPS is highly recommended.

Access Control.

Access to the system is provided either trough an Anonymous or Authenticated connection.

  • Anonymous (aka Public) connections have limited access only to fully Public APIs.
  • Authenticated (aka Private) connections have access to both fully public APIs and a sub-set of Private APIs depending on the User's privileges (Administrator, Power User, Moderator).

Encryption (Confidential Computing).

Encryption is a core feature of the system to guarantee the confidentiality of the data. PxStat uses one of the most advanced types of Encryption called Always Encrypted, also known as Confidential Computing. This offers high performance combined with top security during the entire process.

Data Anonymization.

Where applicable, data is aggregated and anonymised following the GDPR directives. An example is the PII (Personally identifiable information) collected and elaborated by the Analytics engine.

Extendibility.

PxStat can be used out of the box and has the distinct advantage to be distributed under the Open Source MIT Licence. This allows anybody inspecting, reviewing and assessing the code, as well as to amending, fixing, extending and ever re-distributing the product.

The system is based on Modular Components that can be easily enabled/disabled simply through configuration. Modularity allows the system to be extended minimizing the risk of compromising any of the existing features.

Clone this wiki locally