1.3 Overview

The Software Quality Metrics (SQM) Client-to-Service Protocol defines how a SQM-enabled client sends instrumentation data to the SQM service. The SQM Client-to-Service Protocol specifies the data transfer method, which includes an instrumentation namespace identifier and binary structured instrumentation data.

SQM-enabled clients produce and send SQM instrumentation data. This data allows application developers to understand product usage and failure information in order to improve their applications. Each SQM-enabled client belongs to a SQM namespace known as a SQM partner. All SQM data is associated with a SQM partner namespace in the SQM service.

The instrumentation data definition is defined by the SQM service. The meaning of the data is known to the creator of the data definition. For example, an instrumentation data definition COUNT_FILE_NOT_FOUND that is created and instrumented by an application developer has a specific meaning to that application developer. It could mean the number of times a data file is not found, the number of times a library file is not found, or something else entirely. The structure and method of transferring the data from the SQM-enabled client to the SQM service is defined by the SQM Client-to-Service Protocol. The method of creating the SQM instrumentation data definition is SQM service implementation-specific.

The SQM Client-to-Service Protocol also defines a method for a SQM-enabled client to download SQM partner-specific information. Typically this information is used by the SQM-enabled client to control what instrumentation data is uploaded. This functionality is known as adaptive software quality metrics (A-SQM). A-SQM data is created at the SQM service by the SQM-enabled client application owner if the SQM partner wants to download and use this functionality. The method of creating the A-SQM data is SQM service implementation-specific.

The SQM Client-to-Service Protocol uses the following communication methods:

  • Uploading instrumentation data from the client to the SQM service by using HTTP/HTTPS POST.

  • Uploading instrumentation data through a proxy (relay) to the SQM service.

  • Downloading A-SQM data created at the SQM service by using HTTP/HTTPS GET.