Skip to content

Model

Trustable Graphs

The basic building blocks of our model for requirements are Statements: Definitive expressions with meaningful interpretations when considered to be True and False.

A good Statement

The Trustable project provides tools that are implemented in Python.

This is a good statement because:

  • If we suppose it is True, we know what to conclude: Trustable offers some tooling which is written in Python.
  • If we suppose it is False, we know what to conclude: Trustable may or may not offer some tooling, but none of the tools are implemented in Python.

A bad Statement

Trustable should be written in Python.

This is a bad Statement because it is difficult to infer what it means for this to be True:

  • Who or what thinks Trustable should use Python?
  • What should be written in Python? The tooling? What about documentation?

Similarly, it is difficult to understand what this means if the Statement is False.

Because Statements must be expressed in natural language, there is an unavoidable element of subjectivity in how they should be written (but not what they mean!). Recognising that there will be necessary and/or sensible exceptions, we recommend that Statements:

  • Use the indicative mood
  • Use the third person perspective
  • Use the present tense
  • Are affirmative
  • Are single sentences

Statements are connected by Links. A Link from Statement A to Statement B means that Statement A logically implies Statement B. It can be helpful to remember this is equivalent to "B is a necessary but not sufficient condition for A". By convention, we refer to Statement A as the parent and B as the child.

The set of Statements about a project and their Links forms a directed graph. To remove the possibility of circular arguments, we insist that this graph is acyclic. We call the resulting set of directed acyclic graphs (DAGs), Trustable Graphs.

Tip

Statements and Links are the basis for everything that follows. Make sure you have a good understanding of these concepts before reading further. If you are struggling, the #trustable channel on TSF Matrix chat room is a good place to ask for help!

Classifying Statements

The Statements comprising a Trustable Graph can be naturally classified into two overlapping categories:

Classification of Statements as Requests and Claims

  • A Request is a Statement that has one or more children.
  • A Claim is a Statement that has one or more parents.

These simple definitions allow us to define three further and disjoint categories of Statement:

  • An Expectation is a Statement that is a Request, but not a Claim.
  • An Assertion is a Statement that is both a Request and a Claim.
  • A Premise is a Statement that is a Claim, but not a Request.

Warning

Historically, we have used the term Evidence to mean a Premise. However, this wording becomes confusing when dealing with "unsupported" Statements. Evidence has a more specific meaning that will be discussed later.