You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: Plain-language-specification.md
+31-10Lines changed: 31 additions & 10 deletions
Original file line number
Diff line number
Diff line change
@@ -13,8 +13,6 @@ Plain language is structured English based on markdown syntax.
13
13
Here's an example of a "hello,world" program in Plain.
14
14
15
15
```plain
16
-
***Definitions:***
17
-
18
16
***Non-Functional Requirements:***
19
17
20
18
- Implementation should be in Python.
@@ -26,19 +24,42 @@ Here's an example of a "hello,world" program in Plain.
26
24
27
25
# Source structure
28
26
29
-
Every Plain source file requires the following top level sections:
27
+
## Source organization
28
+
29
+
Plain source can be organized in sections and subsection using markdown headers.
30
+
31
+
```plain
32
+
# Section 1
33
+
34
+
# Section 2
35
+
36
+
***Non-Functional Requirements:***
37
+
38
+
- Simple non-functional requirement
39
+
40
+
## Section 2.1
41
+
42
+
***Functional Requirements:***
43
+
44
+
- Simple functional requirement
45
+
```
46
+
47
+
### Specifications
48
+
49
+
There are four types of specifications:
30
50
31
51
-`***Definitions:***`
32
52
-`***Non-Functional Requirements:***`
33
53
-`***Functional Requirements:***`
34
-
35
-
The following top level section is optional:
36
54
-`***Test Requirements:***`
37
55
56
+
Every plain source file requires at least one functional requirement and an associated non-functional requirement.
57
+
58
+
Functional requirements must reside in leaf sections while other specifications can be placed also in non-leaf sections. Specifications in non-leaf sections apply not just to the section itself but to all of its subsections.
38
59
39
-
## Definitons
60
+
## Definitions
40
61
41
-
The top level section `***Definitions:***` is a list of definitions of new terms.
62
+
The `***Definitions:***` specification is a list of definitions of new terms.
42
63
43
64
Here's an example of a simple definiton.
44
65
@@ -61,7 +82,7 @@ The definition of a term is provided in natural language. There are no restricti
61
82
62
83
## Non-Functional Requirements
63
84
64
-
The top level section `***Non-Functional Requirements:***` is a list of instructions that steer software code implementation and provide details of execution environment.
85
+
The `***Non-Functional Requirements:***` specification is a list of instructions that steer software code implementation and provide details of execution environment.
65
86
66
87
Here's an example of a simple instruction specifying only that the Plain specification should be rendered to Python software code.
67
88
@@ -83,7 +104,7 @@ Here's an example of more complex instructions.
83
104
84
105
## Functional Requirements
85
106
86
-
The top level section `***Functional Requirements:***`provides a description of functionality that should be rendered to software code. The descriptions should be provided in natural language as a markdown list. When referring to other terms **The Noun convention** should be followed.
107
+
The `***Functional Requirements:***`specificationprovides a description of functionality that should be rendered to software code. The descriptions should be provided in natural language as a markdown list. When referring to other terms **The Noun convention** should be followed.
87
108
88
109
Here's an example of a simple description of the functionality of the "hello, world" application.
89
110
@@ -125,7 +146,7 @@ Functional requirements are rendered incrementally one by one. Consequently earl
125
146
126
147
## Test Requirements
127
148
128
-
The top level section `***Test Requirements:***` is a list of instructions that steer implementation of end-to-end tests and provide details of testing environment.
149
+
The `***Test Requirements:***` specification is a list of instructions that steer implementation of end-to-end tests and provide details of testing environment.
129
150
130
151
Here's an example specification of test requirements.
0 commit comments