Requirements analysis

While the sections on Target audience, Concepts, and Use cases contain parts of the answers, what the evedata package is all about, this document is intended to give a more formal answer aimed mainly at developers. For a high-level view of how these requirements have been/will be met by the evedata package, have a look at the Architecture section.

Ad hoc, the following requirements come to mind, preliminarily grouped into three categories. Each requirement needs to be further detailed in individual sections below.

High-level requirements/overall goals:

  • Faithful representation of the contents of an eveH5 file

    • Access to all content, including the SCML file

    • No modification of the contents (i.e., no “filling” and alike)

    • No need for an identical structure of the data model and the HDF5 file

  • “Convenient” user access to all information contained in an eveH5 file

    • The evedata package is “only” the interface towards both, data viewer and data processing/analysis pipelines.

    • The data model needs to be sufficiently powerful (and hence complex) to map the complexity of the underlying SCML/eveH5 structures (=> a 2D array/table will not do).

User requirements:

  • Backwards-compatibility with all versions of eveH5 files actually present “in the wild”

  • Platform-independent: needs to work on Linux, Windows, macOS

  • Python-based for use with the existing/newly developed data processing and analysis pipeline

  • Simple to install: Python package

  • Sufficiently documented (user documentation)

Developer requirements:

  • Sufficiently documented (developer documentation)

  • Long-term maintainable: needs to be up-to-date with all changes of the structure of both, SCML schema and HDF5 schema

    • Implications for code quality, code organisation, and conceptual documentation

  • Minimal external dependencies to reduce future maintenance burden

  • Sufficiently tested


The following sections try to roughly follow the overall layout of the req42 framework, as far as it seems sensible for this project. To not maintain the same information at different places, hyperlinks to other sections of the documentation are provided.

Goals

  • Faithful representation of the contents of an eveH5 file

  • (Stable) interface between eveH5 (and SCML) files and both data viewing and data processing/analysis pipeline

Stakeholder

See Target audience

Basically two groups:

  • IT group responsible for the measurement program (and hence the eveH5 and SCML schemas)

  • Users of the recorded data (mainly engineers and scientists)

The latter will mostly approach the evedata package by means of other software, namely evedataviewer and radiometry package.

Scope and context

Scope contains everything that can be directly controlled by the project (developers), while context is the environment in which the project is situated and to which the project provides interfaces.

From req42:

Scope is the area that you can influence. The environment of the product, to which there are certainly many interfaces, represents the context. The context cannot (usually) be decided by you alone, but can often be negotiated. To gain clarity it is important to describe both as much as possible and especially to define the boundary between the two scopes.

req42 recommends that you start with the business scope and do not limit the product scope too early. The decision about the product scope should be a conscious one.

Scope

  • Interface between eveH5 (and SCML) files and data viewing/processing/analysis

Context

measurement program/IT group

  • eveH5 and SCML schemas and file formats (both with different versions)

  • data models of the eve engine and GUI

data users (engineers, scientists)

  • data viewing (evedataviewer package)

    • ad hoc tasks at the beamline (not exclusively, but needs to be possible)

    • includes some data processing

    • comparing data of different measurements

    • immediate quality control

    • extracting relevant information for next measurement (including axes positions and alike, probably even directly transferred to measurement program)

  • data processing and analysis (radiometry package)

    • post hoc tasks operating on data of finished measurements

Functional requirements

See Use cases?

Quality Requirements

Nonfunctional requirements (NFR)

Parts of ISO 25010?

Constraints

  • technological: Python, platform independent, …

  • organisational: rather none?

Domain Terminology

See Terminology

Roadmap

See Roadmap

Risks