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:
- 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.