clerq 0.1.0 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +4 -3
  3. data/CHANGELOG.md +49 -0
  4. data/Gemfile.lock +9 -9
  5. data/README.md +260 -133
  6. data/Rakefile +1 -0
  7. data/clerq.gemspec +6 -6
  8. data/clerq.thor +28 -0
  9. data/docs/README.md +408 -0
  10. data/lib/assets/knb/SRS-IEEE-830-1998.md +293 -0
  11. data/lib/assets/knb/SRS-RUP.md +283 -0
  12. data/lib/assets/knb/business-case.md +135 -0
  13. data/lib/assets/knb/ears-with-examples.md +101 -0
  14. data/lib/assets/knb/problem-statement.md +8 -0
  15. data/lib/assets/knb/product-statement.md +8 -0
  16. data/lib/assets/knb/requirement-attributes.md +26 -0
  17. data/lib/assets/knb/requirement-classification.md +27 -0
  18. data/lib/assets/knb/requirement-life-cycle.md +47 -0
  19. data/lib/assets/knb/requirement-quality.md +13 -0
  20. data/lib/assets/knb/use-case.md +39 -0
  21. data/lib/assets/knb/vision-document.md +191 -0
  22. data/lib/assets/lib/clerq_doc.thor +119 -0
  23. data/lib/assets/lib/colonize_repo.rb +82 -0
  24. data/lib/assets/lib/spec/colonize_repo_spec.rb +85 -0
  25. data/lib/assets/new/clerq.thor.tt +32 -5
  26. data/lib/assets/new/content.md.tt +3 -40
  27. data/lib/assets/tt/default.md.erb +23 -42
  28. data/lib/assets/tt/pandoc.md.erb +11 -8
  29. data/lib/clerq.rb +57 -12
  30. data/lib/clerq/cli.rb +77 -60
  31. data/lib/clerq/entities.rb +0 -1
  32. data/lib/clerq/entities/node.rb +135 -115
  33. data/lib/clerq/properties.rb +1 -3
  34. data/lib/clerq/repositories.rb +2 -4
  35. data/lib/clerq/repositories/file_repository.rb +59 -0
  36. data/lib/clerq/repositories/node_repository.rb +72 -30
  37. data/lib/clerq/repositories/text_repository.rb +47 -0
  38. data/lib/clerq/services.rb +8 -0
  39. data/lib/clerq/services/check_assembly.rb +108 -0
  40. data/lib/clerq/{interactors → services}/create_node.rb +12 -11
  41. data/lib/clerq/services/load_assembly.rb +54 -0
  42. data/lib/clerq/services/query_node.rb +72 -0
  43. data/lib/clerq/services/query_template.rb +26 -0
  44. data/lib/clerq/services/read_node.rb +101 -0
  45. data/lib/clerq/services/render_erb.rb +29 -0
  46. data/lib/clerq/services/render_node.rb +37 -0
  47. data/lib/clerq/services/service.rb +19 -0
  48. data/lib/clerq/settings.rb +2 -2
  49. data/lib/clerq/version.rb +1 -1
  50. metadata +49 -37
  51. data/TODO.md +0 -3
  52. data/lib/assets/tt/gitlab.md.erb +0 -93
  53. data/lib/assets/tt/raw.md.erb +0 -23
  54. data/lib/clerq/entities/template.rb +0 -19
  55. data/lib/clerq/gateways.rb +0 -3
  56. data/lib/clerq/gateways/gateway.rb +0 -17
  57. data/lib/clerq/gateways/in_files.rb +0 -36
  58. data/lib/clerq/gateways/in_memory.rb +0 -35
  59. data/lib/clerq/interactors.rb +0 -5
  60. data/lib/clerq/interactors/check_nodes.rb +0 -81
  61. data/lib/clerq/interactors/compile_nodes.rb +0 -31
  62. data/lib/clerq/interactors/interactor.rb +0 -28
  63. data/lib/clerq/interactors/join_nodes.rb +0 -59
  64. data/lib/clerq/interactors/query_nodes.rb +0 -62
  65. data/lib/clerq/repositories/in_memory.rb +0 -45
  66. data/lib/clerq/repositories/node_reader.rb +0 -107
  67. data/lib/clerq/repositories/repository.rb +0 -11
  68. data/lib/clerq/repositories/template_repository.rb +0 -53
  69. data/lib/clerq/templater.rb +0 -32
@@ -0,0 +1,293 @@
1
+ % IEEE Std 830-1998
2
+
3
+ # 1. Introduction
4
+ ## 1.1 Purpose
5
+ _[This subsection should
6
+ a) Delineate the purpose of the SRS;
7
+ b) Specify the intended audience for the SRS.]_
8
+
9
+ ## 1.2 Scope
10
+ _[This subsection should
11
+ a) Identify the software product(s) to be produced by name (e.g., Host DBMS, Report Generator, etc.);
12
+ b) Explain what the software product(s) will, and, if necessary, will not do;
13
+ c) Describe the application of the software being specified, including relevant benefits, objectives, and goals;
14
+ d) Be consistent with similar statements in higher-level specifications (e.g., the system requirements specification), if they exist.]_
15
+
16
+ ## 1.3 Definitions, acronyms, and abbreviations
17
+ _[This subsection should provide the definitions of all terms, acronyms, and abbreviations required to properly
18
+ interpret the SRS. This information may be provided by reference to one or more appendixes in the SRS or
19
+ by reference to other documents.]_
20
+
21
+ _[3.1 **contract**: A legally binding document agreed upon by the customer and supplier. This includes the technical and organizational requirements, cost, and schedule for a product. A contract may also contain informal but useful information such as the commitments or expectations of the parties involved.
22
+
23
+ 3.2 **customer**: The person, or persons, who pay for the product and usually (but not necessarily) decide the requirements. In the context of this recommended practice the customer and the supplier may be members of the same organization.
24
+
25
+ 3.3 **supplier**: The person, or persons, who produce a product for a customer. In the context of this recommended practice, the customer and the supplier may be members of the same organization.
26
+
27
+ 3.4 **user**: The person, or persons, who operate or interact directly with the product. The user(s) and the customer(s) are often not the same person(s).]_
28
+
29
+ ## 1.4 References
30
+ _[This subsection should
31
+ a) Provide a complete list of all documents referenced elsewhere in the SRS;
32
+ b) Identify each document by title, report number (if applicable), date, and publishing organization;
33
+ c) Specify the sources from which the references can be obtained. This information may be provided by reference to an appendix or to another document.]_
34
+
35
+ ## 1.5 Overview
36
+ _[This subsection should
37
+ a) Describe what the rest of the SRS contains;
38
+ b) Explain how the SRS is organized.]_
39
+
40
+ # 2. Overall description
41
+ _[This section of the SRS should describe the general factors that affect the product and its requirements. This section does not state specific requirements. Instead, it provides a background for those requirements, which are defined in detail in Section 3 of the SRS, and makes them easier to understand.
42
+
43
+ This section usually consists of six subsections, as follows:
44
+ a) Product perspective;
45
+ b) Product functions;
46
+ c) User characteristics;
47
+ d) Constraints;
48
+ e) Assumptions and dependencies;
49
+ f) Apportioning of requirements.]_
50
+
51
+ ## 2.1 Product perspective
52
+ _[This subsection of the SRS should put the product into perspective with other related products. If the product is independent and totally self-contained, it should be so stated here. If the SRS defines a product that is a component of a larger system, as frequently occurs, then this subsection should relate the requirements of that larger system to functionality of the software and should identify interfaces between that system and the software.
53
+
54
+ A block diagram showing the major components of the larger system, interconnections, and external interfaces can be helpful.
55
+
56
+ This subsection should also describe how the software operates inside various constraints. For example, these constraints could include
57
+ a) System interfaces;
58
+ b) User interfaces;
59
+ c) Hardware interfaces;
60
+ d) Software interfaces;
61
+ e) Communications interfaces;
62
+ f) Memory;
63
+ g) Operations;
64
+ h) Site adaptation requirements.]_
65
+
66
+ ### 2.1.1 System interface
67
+ _[This should list each system interface and identify the functionality of the software to accomplish the system requirement and the interface description to match the system.]_
68
+
69
+ ### 2.1.2 User interfaces
70
+ _[This should specify the following:
71
+ a) The logical characteristics of each interface between the software product and its users. This includes those configuration characteristics (e.g., required screen formats, page or window layouts, content of any reports or menus, or availability of programmable function keys) necessary to accomplish the software requirements.
72
+ b) All the aspects of optimizing the interface with the person who must use the system. This may simply comprise a list of do’s and don’ts on how the system will appear to the user. One example may be a requirement for the option of long or short error messages. Like all others, these requirements should be verifiable, e.g., “a clerk typist grade 4 can do function X in Z min after 1 h of training” rather than “a typist can do function X.” (This may also be specified in the Software System Attributes under a section titled Ease of Use.)]_
73
+
74
+ ### 2.1.3 Hardware interfaces
75
+ _[This should specify the logical characteristics of each interface between the software product and the hardware components of the system. This includes configuration characteristics (number of ports, instruction sets, etc.). It also covers such matters as what devices are to be supported, how they are to be supported, and protocols. For example, terminal support may specify full-screen support as opposed to line-by-line support.]_
76
+
77
+ ### 2.1.4 Software interfaces
78
+ _[This should specify the use of other required software products (e.g., a data management system, an operating system, or a mathematical package), and interfaces with other application systems (e.g., the linkage between an accounts receivable system and a general ledger system). For each required software product, the following should be provided:
79
+ — Name;
80
+ — Mnemonic;
81
+ — Specification number;
82
+ — Version number;
83
+ — Source.
84
+
85
+ For each interface, the following should be provided:
86
+ — Discussion of the purpose of the interfacing software as related to this software product.
87
+ — Definition of the interface in terms of message content and format. It is not necessary to detail any well-documented interface, but a reference to the document defining the interface is required.]_
88
+
89
+ ### 2.1.5 Communications interfaces
90
+ _[This should specify the various interfaces to communications such as local network protocols, etc.]_
91
+
92
+ ### 2.1.6 Memory constraints
93
+ _[This should specify any applicable characteristics and limits on primary and secondary memory.]_
94
+
95
+ ### 2.1.7 Operations
96
+ _[This should specify the normal and special operations required by the user such as
97
+ a) he various modes of operations in the user organization (e.g., user-initiated operations);
98
+ b) Periods of interactive operations and periods of unattended operations;
99
+ c) Data processing support functions;
100
+ d) Backup and recovery operations.
101
+ NOTE—This is sometimes specified as part of the User Interfaces section.]_
102
+
103
+ ### 2.1.8 Site adaptation requirements
104
+ _[This should
105
+ a) Define the requirements for any data or initialization sequences that are specific to a given site, mission, or operational mode (e.g., grid values, safety limits, etc.);
106
+ b) Specify the site or mission-related features that should be modified to adapt the software to a particular installation.]_
107
+
108
+ ## 2.2 Product functions
109
+ _[This subsection of the SRS should provide a summary of the major functions that the software will perform. For example, an SRS for an accounting program may use this part to address customer account maintenance, customer statement, and invoice preparation without mentioning the vast amount of detail that each of those functions requires.
110
+
111
+ Sometimes the function summary that is necessary for this part can be taken directly from the section of the higher-level specification (if one exists) that allocates particular functions to the software product. Note that for the sake of clarity
112
+ a) The functions should be organized in a way that makes the list of functions understandable to the customer or to anyone else reading the document for the first time.
113
+ b) Textual or graphical methods can be used to show the different functions and their relationships.Such a diagram is not intended to show a design of a product, but simply shows the logical relationships among variables.]_
114
+
115
+ ## 2.3 User characteristics
116
+ _[This subsection of the SRS should describe those general characteristics of the intended users of the product including educational level, experience, and technical expertise. It should not be used to state specific requirements, but rather should provide the reasons why certain specific requirements are later specified in Section 3 of the SRS.]_
117
+
118
+ ## 2.4 Constraints
119
+ _[This subsection of the SRS should provide a general description of any other items that will limit the developer’s options. These include
120
+ a) Regulatory policies;
121
+ b) Hardware limitations (e.g., signal timing requirements);
122
+ c) Interfaces to other applications;
123
+ d) Parallel operation;
124
+ e) Audit functions;
125
+ f) Control functions;
126
+ g) Higher-order language requirements;
127
+ h) Signal handshake protocols (e.g., XON-XOFF, ACK-NACK);
128
+ i) Reliability requirements;
129
+ j) Criticality of the application;
130
+ k) Safety and security considerations.]_
131
+
132
+ ## 2.5 Assumptions and dependencies
133
+ _[This subsection of the SRS should list each of the factors that affect the requirements stated in the SRS. These factors are not design constraints on the software but are, rather, any changes to them that can affect the requirements in the SRS. For example, an assumption may be that a specific operating system will be available on the hardware designated for the software product. If, in fact, the operating system is not available, the SRS would then have to change accordingly.]_
134
+
135
+ ## 2.6 Apportioning of requirements
136
+ _[This subsection of the SRS should identify requirements that may be delayed until future versions of the system]_
137
+
138
+ # 3. Specific requirements
139
+ _[This section of the SRS should contain all of the software requirements to a level of detail sufficient to enable designers to design a system to satisfy those requirements, and testers to test that the system satisfies those requirements. Throughout this section, every stated requirement should be externally perceivable by users, operators, or other external systems. These requirements should include at a minimum a description of every input (stimulus) into the system, every output (response) from the system, and all functions performed by the system in response to an input or in support of an output. As this is often the largest and most important part of the SRS, the following principles apply:
140
+ a) Specific requirements should be stated in conformance with all the characteristics described in 4.3.
141
+ b) Specific requirements should be cross-referenced to earlier documents that relate.
142
+ c) All requirements should be uniquely identifiable.
143
+ d) Careful attention should be given to organizing the requirements to maximize readability.
144
+
145
+ Before examining **specific ways of organizing the requirements** it is helpful to understand the various items that comprise requirements as described in 5.3.1 through 5.3.7.]_
146
+
147
+ ## 3.1 External interfaces
148
+ _[This should be a detailed description of all inputs into and outputs from the software system. It should complement the interface descriptions in 5.2 and should not repeat information there.
149
+
150
+ It should include both content and format as follows:
151
+ a) Name of item;
152
+ b) Description of purpose;
153
+ c) Source of input or destination of output;
154
+ d) Valid range, accuracy, and/or tolerance;
155
+ e) Units of measure;
156
+ f) Timing;
157
+ g) Relationships to other inputs/outputs;
158
+ h) Screen formats/organization;
159
+ i) Window formats/organization;
160
+ j) Data formats;
161
+ k) Command formats;
162
+ l) End messages.]_
163
+
164
+ ## 3.2 Functions
165
+ _[Functional requirements should define the fundamental actions that must take place in the software in accepting and processing the inputs and in processing and generating the outputs. These are generally listed as “shall” statements starting with “The system shall...”
166
+
167
+ These include
168
+ a) Validity checks on the inputs
169
+ b) Exact sequence of operations
170
+ c) Responses to abnormal situations, including
171
+ 1) Overflow
172
+ 2) Communication facilities
173
+ 3) Error handling and recovery
174
+ d) Effect of parameters
175
+ e) Relationship of outputs to inputs, including
176
+ 1) Input/output sequences
177
+ 2) Formulas for input to output conversion
178
+
179
+ It may be appropriate to partition the functional requirements into subfunctions or subprocesses. This does not imply that the software design will also be partitioned that way.
180
+
181
+ See original IEEE 830-1998 for choice appropriate structure for this part]_
182
+
183
+ ## 3.3 Performance requirements
184
+ _[This subsection should specify both the static and the dynamic numerical requirements placed on the software or on human interaction with the software as a whole. Static numerical requirements may include the following:
185
+ a) The number of terminals to be supported;
186
+ b) The number of simultaneous users to be supported;
187
+ c) Amount and type of information to be handled.
188
+
189
+ Static numerical requirements are sometimes identified under a separate section entitled Capacity.
190
+
191
+ Dynamic numerical requirements may include, for example, the numbers of transactions and tasks and the amount of data to be processed within certain time periods for both normal and peak workload conditions.
192
+
193
+ All of these requirements should be stated in measurable terms. For example,
194
+ ```
195
+ 95% of the transactions shall be processed in less than 1 s.
196
+ ```
197
+ rather than,
198
+ ```
199
+ An operator shall not have to wait for the transaction to complete.
200
+ ```
201
+ NOTE—Numerical limits applied to one specific function are normally specified as part of the processing subparagraph description of that function.]_
202
+
203
+ ## 3.4 Logical database requirements
204
+ _[This should specify the logical requirements for any information that is to be placed into a database. This may include the following:
205
+ a) Types of information used by various functions;
206
+ b) Frequency of use;
207
+ c) Accessing capabilities;
208
+ d) Data entities and their relationships;
209
+ e) Integrity constraints;
210
+ f) Data retention requirements.]_
211
+
212
+ ## 3.5 Design constraints
213
+ _[This should specify design constraints that can be imposed by other standards, hardware limitations, etc.]_
214
+
215
+ ## 3.5.1 Standards compliance
216
+ _[This subsection should specify the requirements derived from existing standards or regulations. They may include the following:
217
+ a) Report format;
218
+ b) Data naming;
219
+ c) Accounting procedures;
220
+ d) Audit tracing.
221
+
222
+ For example, this could specify the requirement for software to trace processing activity. Such traces are needed for some applications to meet minimum regulatory or financial standards. An audit trace requirement may, for example, state that all changes to a payroll database must be recorded in a trace file with before and after values.]_
223
+
224
+ ## 3.6 Software system attributes
225
+ _[There are a number of attributes of software that can serve as requirements. It is important that required attributes be specified so that their achievement can be objectively verified. Subclauses 3.6.1 through 3.6.5 provide a partial list of examples.]_
226
+
227
+ ### 3.6.1 Reliability
228
+ _[This should specify the factors required to establish the required reliability of the software system at time of delivery.]_
229
+
230
+ ### 3.6.2 Availability
231
+ _[This should specify the factors required to guarantee a defined availability level for the entire system such as checkpoint, recovery, and restart.]_
232
+
233
+ ### 3.6.3 Security
234
+ _[This should specify the factors that protect the software from accidental or malicious access, use, modification, destruction, or disclosure. Specific requirements in this area could include the need to
235
+ a) Utilize certain cryptographical techniques;
236
+ b) Keep specific log or history data sets;
237
+ c) Assign certain functions to different modules;
238
+ d) Restrict communications between some areas of the program;
239
+ e) Check data integrity for critical variables.]_
240
+
241
+ ### 3.6.4 Maintainability
242
+ _[This should specify attributes of software that relate to the ease of maintenance of the software itself. There may be some requirement for certain modularity, interfaces, complexity, etc. Requirements should not be placed here just because they are thought to be good design practices.]_
243
+
244
+ ### 3.6.5 Portability
245
+ _[This should specify attributes of software that relate to the ease of porting the software to other host machines and/or operating systems. This may include the following:
246
+ a) Percentage of components with host-dependent code;
247
+ b) Percentage of code that is host dependent;
248
+ c) Use of a proven portable language;
249
+ d) Use of a particular compiler or language subset;
250
+ e) Use of a particular operating system.]_
251
+
252
+ # Appendixes
253
+ _[The appendixes are not always considered part of the actual SRS and are not always necessary. They may include
254
+ a) Sample input/output formats, descriptions of cost analysis studies, or results of user surveys;
255
+ b) Supporting or background information that can help the readers of the SRS;
256
+ c) A description of the problems to be solved by the software;
257
+ d) Special packaging instructions for the code and the media to meet security, export, initial loading, or other requirements.
258
+
259
+ When appendixes are included, the SRS should explicitly state whether or not the appendixes are to be considered part of the requirements.]_
260
+
261
+ # Index
262
+
263
+ # 5.3.7 Organizing the specfic requirements
264
+
265
+ For anything but trivial systems the detailed requirements tend to be extensive. For this reason, it is recommended that careful consideration be given to organizing these in a manner optimal for understanding. There is no one optimal organization for all systems. Different classes of systems lend themselves to different organizations of requirements in Section 3 of the SRS. Some of these organizations are described in 5.3.7.1 through 5.3.7.7.
266
+
267
+ ## 5.3.7.1 System mode
268
+
269
+ Some systems behave quite differently depending on the mode of operation. For example, a control system may have different sets of functions depending on its mode: training, normal, or emergency. When organizing this section by mode, the outline in A.1 or A.2 should be used. The choice depends on whether interfaces and performance are dependent on mode.
270
+
271
+ ## 5.3.7.2 User class
272
+
273
+ Some systems provide different sets of functions to different classes of users. For example, an elevator control system presents different capabilities to passengers, maintenance workers, and re ghters. When organizing this section by user class, the outline in A.3 should be used.
274
+
275
+ ## 5.3.7.3 Objects
276
+
277
+ Objects are real-world entities that have a counterpart within the system. For example, in a patient monitoring system, objects include patients, sensors, nurses, rooms, physicians, medicines, etc. Associated with each object is a set of attributes (of that object) and functions (performed by that object). These functions are also called services, methods, or processes. When organizing this section by object, the outline in A.4 should be used. Note that sets of objects may share attributes and services. These are grouped together as classes.
278
+
279
+ ## 5.3.7.4 Feature
280
+
281
+ A feature is an externally desired service by the system that may require a sequence of inputs to effect the desired result. For example, in a telephone system, features include local call, call forwarding, and conference call. Each feature is generally described in a sequence of stimulus-response pairs. When organizing this section by feature, the outline in A.5 should be used.
282
+
283
+ ## 5.3.7.5 Stimulus
284
+
285
+ Some systems can be best organized by describing their functions in terms of stimuli. For example, the functions of an automatic aircraft landing system may be organized into sections for loss of power, wind shear, sudden change in roll, vertical velocity excessive, etc. When organizing this section by stimulus, the outline in A.6 should be used.
286
+
287
+ ## 5.3.7.6 Response
288
+
289
+ Some systems can be best organized by describing all the functions in support of the generation of a response. For example, the functions of a personnel system may be organized into sections corresponding to all functions associated with generating paychecks, all functions associated with generating a current list of employees, etc. The outline in A.6 (with all occurrences of stimulus replaced with response) should be used.
290
+
291
+ ## 5.3.7.7 Functional hierarchy
292
+
293
+ When none of the above organizational schemes prove helpful, the overall functionality can be organized into a hierarchy of functions organized by either common inputs, common outputs, or common internal data access. Data ow diagrams and data dictionaries can be used to show the relationships between and among the functions and data. When organizing this section by functional hierarchy, the outline in A.7 should be used.
@@ -0,0 +1,283 @@
1
+ % Software Requirement Specification
2
+
3
+ _[Text enclosed in square brackets and displayed in italics is included to provide guidance to the author and should be deleted before publishing the document.]_
4
+
5
+ # 1. Introduction
6
+ _[The introduction of the Software Requirements Specification (SRS) provides an overview of the entire SRS. It includes the purpose, scope, definitions, acronyms, abbreviations, references, and overview of the SRS.]_
7
+
8
+ _[**Note**: The SRS document captures the complete software requirements for the system, or a portion of the system. Following is a typical SRS outline for a project using traditional, natural-language style requirements. It captures all requirements in a single document.]_
9
+
10
+ ## 1.1 Purpose
11
+ _[Specify the purpose of this SRS. The SRS fully describes the external behavior of the application or subsystem identified. It also describes nonfunctional requirements, design constraints, and other factors necessary to provide a complete and comprehensive description of the requirements for the software.]_
12
+
13
+ ## 1.2 Scope
14
+ _[A brief description of the software application that the SRS applies to, the feature or other subsystem grouping, and anything else that is affected or influenced by this document.]_
15
+
16
+ ## 1.3 Definitions, Acronyms, and Abbreviations
17
+ _[This subsection provides the definitions of all terms, acronyms, and abbreviations required to properly interpret the SRS. This information may be provided by reference to the project’s Glossary.]_
18
+
19
+ | Term | Definition |
20
+ | :------------- | :------------- |
21
+ | Item One | Item Two |
22
+
23
+ ## 1.4 References
24
+ _[This subsection provides a complete list of all documents referenced elsewhere in the SRS. Identify each document by title, report number if applicable, date, and publishing organization. Specify the sources from which the references can be obtained. This information may be provided by reference to an appendix or to another document
25
+ Among other references should include following documents (if applicable):
26
+ • Product Requirements Document;
27
+ • Project Estimation Sheet;
28
+ • Risk Management Plan.]
29
+ [In this subsection:
30
+ 1) Provide a complete list of all documents referenced elsewhere in the SRS.
31
+ 2) Identify each document by title, report number (if applicable), date, and publishing organization.
32
+ 3) Specify the sources from which the references can be obtained.]_
33
+
34
+ ## 1.5 Overview
35
+ _[This subsection describes what the rest of the SRS contains and explains how the document is organized.]_
36
+
37
+ # 2. Overall Description
38
+ _[This section of the SRS describes the general factors that affect the product and its requirements. This section does not state specific requirements. Instead, it provides a background for those requirements, which are defined in detail in Section 3, and makes them easier to understand. Include such items as bellow]_
39
+
40
+ ## 2.1 Product perspective
41
+ _[This subsection of the SRS relates the product to other products or projects.
42
+ 1) If the product is independent and totally self-contained, it should be stated here.
43
+ 2) If the SRS defines a product that is a component of a larger system or project:
44
+ a) Describe the functions of each component of the larger system or project, and identify interfaces
45
+ b) Identify the principal external interfaces of this software product (not a detailed description)
46
+ c) Describe the computer hardware and peripheral equipment to be used (overview only).]
47
+ A block diagram showing the major components of the larger system or project, interconnections, and external interfaces can be very helpful]._
48
+
49
+ ## 2.2 Product functions
50
+ _[Provide a summary of the functions that the software will perform. Sometimes the function summary that is necessary for this part can be taken directly from the section of the higher-level specification (if one exists) that allocates particular functions to the software product. The functions should be organized in a way that makes the list of functions understandable to the customer or to anyone else reading the document for the first time. Block diagrams showing the different functions and their relationships can be helpful. Such a diagram is not a requirement on the design of a product itself; it is simply an effective explanatory tool.]_
51
+
52
+ ## 2.3 User characteristics
53
+ _[Describe those general characteristics of the eventual users of the product that will affect the specific requirements._
54
+
55
+ _Many people interact with a system during the operation and maintenance phase of the software life cycle. Some of these people are users, operators, and maintenance and systems personnel. Certain characteristics of these people, such as educational level, experience, and technical expertise impose important constraints on the system's operating environment.]_
56
+
57
+ ## 2.4 Constraints
58
+ _[Provide a general description of any other items that will limit the developer's options for designing the system. These can include:
59
+ 1) Regulatory policies
60
+ 2) Hardware limitations; for example, signal timing requirements
61
+ 3) Interface to other applications
62
+ 4) Parallel operation
63
+ 5) Audit functions
64
+ 6) Control functions
65
+ 7) Higher-order language requirements
66
+ 8) Signal handshake protocols; for example, XON-XOFF, ACK-NACK.
67
+ 9) Criticality of the application.
68
+ 10) Safety and security considerations]_
69
+
70
+ ## 2.5 Assumptions and dependencies
71
+ _[List and describe each of the factors that affect the requirements stated in the SRS. These factors are not design constraints on the software but any changes to them can affect the requirements in the SRS. For example, an assumption might be that a specific operating system will be available on the hardware designated for the software product. If, in fact, the operating system is not available, the SRS would then have to change.]_
72
+
73
+ ## 2.6 Requirements subsets
74
+ _[Grouping of requirements are listed in this subsection.]_
75
+
76
+ ## 2.7 General Requirements
77
+ _[List and describe all general requirements that affect the process and conditions of product development. General requirements are non-specific, non-technical requirements and concern first of all constraints imposed by customer on project development. Examples of such a requirements are:
78
+ 1) Deadlines for product releases deliveries defined in advance.
79
+ 2) Number and skills of intended Project Team.
80
+ 3) Amount of efforts allocated to project phase/activity (e.g. for product testing).
81
+ These kinds of requirements should be listed in this section or reference to another document, which includes such a requirements, should be provided here (e.g. to Project Scope Definition).]_
82
+
83
+ ## 2.8 Use-Case Model
84
+ _[If using use-case modeling, this section contains an overview of the use-case model or the subset of the use-case model that is applicable for this subsystem or feature. This includes a list of names and brief descriptions of all use cases and actors, along with applicable diagrams and relationships.]_
85
+
86
+ # 3. Specific Requirements
87
+ _[This section of the SRS contains all software requirements to a level of detail sufficient to enable designers to design a system to satisfy those requirements, and testers to test that the system satisfies those requirements. When using use-case modeling, these requirements are captured in the Use Cases and the applicable supplementary specifications. If use-case modeling is not used, the outline for supplementary specifications may be inserted directly into this section, as shown below.]_
88
+
89
+ _[In use-case modeling, the use cases often define the majority of the functional requirements of the system, along with some non-functional requirements. For each use case in the above use-case model, or subset thereof, refer to, or enclose, the use-case report in this section. Make sure that each requirement is clearly labeled.]_
90
+
91
+ ## 3.1 Functionality
92
+ _[This section describes the functional requirements of the system for those requirements that are expressed in the natural language style. For many applications, this may constitute the bulk of the SRS package and thought should be given to the organization of this section. This section is typically organized by feature, but alternative organization methods may also be appropriate; for example, organization by user or organization by subsystem. Functional requirements may include feature sets, capabilities, and security.
93
+ Where application development tools, such as requirements tools, modeling tools, and the like, are employed to capture the functionality, this section of the document would refer to the availability of that data, indicating the location and name of the tool used to capture the data.]
94
+ Functionality — the capability of the software product to provide functions which meet stated and implied needs when the software is used under specified conditions.
95
+ This characteristic is concerned with what the software does to fulfill needs, whereas the other characteristics are mainly concerned with when and how it fulfils needs.
96
+
97
+ Functionality includes:
98
+ 1) Suitability — the capability of the software product to provide an appropriate set of functions for specified tasks and user objectives.
99
+ Examples of appropriateness are task-oriented composition of functions from constituent sub-functions, and capacities of tables.
100
+ 2) Accuracy — the capability of the software product to provide the right or agreed results or effects with the needed degree of precision.
101
+ 3) Interoperability — the capability of the software product to interact with one or more specified systems.
102
+ 4) Security — the capability of the software product to protect information and data so that unauthorized persons or systems cannot read or modify them and authorized persons or systems are not denied access to
103
+ 5) Functionality compliance — the capability of the software product to adhere to standards, conventions or regulations in laws and similar prescriptions relating to functionality.]_
104
+
105
+ ### 3.1.1 Functional Requirement One
106
+ _[For each function, specify requirements on inputs, processing, and outputs. These are usually organized with these four subparagraphs:
107
+ 1) Purpose of the function: Provide rationale to clarify the intent of the function.
108
+ 2) Inputs: sources, valid ranges of values, any timing concerns, operator requirements, special interfaces
109
+ 3) Operations to be performed: validity checks, responses to abnormal conditions, types of processing required
110
+ 4) Outputs: destinations, valid ranges of values, timing concerns, handling of illegal values, error messages, interfaces required
111
+ For example, the following might be an example specification. Depending on the level of tracking required by the project, one might trace each of the components of 3.1.1.1 as separate requirements, or one might trace just 3.1.1.1. Note that the level of detail here tells what needs to be accomplished against what specific goals, but it does not specify how that is to be done.
112
+ 3.1.1 Provider Terminal (PT) Functional Requirements
113
+ 3.1.1.1 Signature Verification
114
+ Purpose: The PT shall have a signature recognition system that can be used to authenticate users of the ChocAn membership services.
115
+ Inputs: Members sign their name once when applying for membership. Each authentication effort done when a service is requested should take no more than one signature by the member.
116
+ Processing: Handling of the authorization should take no more than 5 seconds.
117
+ Outputs: If the match is successful, a positive acknowledgment must come to the member at the signature capture device as well as to the PT. If the match is unsuccessful, an appropriate message to that effect must be provided to both the capture device and the PT.]_
118
+
119
+ ## 3.2 Quality Requirements
120
+
121
+ ### 3.2.1 Reliability
122
+ _[The capability of the software product to maintain a specified level of performance when used under specified conditions.
123
+ [Requirements for reliability of the system should be specified here. Some suggestions follow:
124
+ • Availability—specify the percentage of time available ( xx.xx%), hours of use, maintenance access, degraded mode operations, and so on.
125
+ • Mean Time Between Failures (MTBF) — this is usually specified in hours, but it could also be specified in terms of days, months or years.
126
+ • Mean Time To Repair (MTTR)—how long is the system allowed to be out of operation after it has failed?
127
+ • Accuracy—specifies precision (resolution) and accuracy (by some known standard) that is required in the system’s output.
128
+ • Maximum Bugs or Defect Rate—usually expressed in terms of bugs per thousand lines of code (bugs/KLOC) or bugs per function-point( bugs/function-point).
129
+ • Bugs or Defect Rate—categorized in terms of minor, significant, and critical bugs: the requirement(s) must define what is meant by a “critical” bug; for example, complete loss of data or a complete inability to use certain parts of the system’s functionality.]_
130
+
131
+ #### 3.2.1.1 Maturity
132
+ _[The capability of the software product to avoid failure as a result of faults in the software.]_
133
+
134
+ #### 3.2.1.2 Fault tolerance
135
+ _[The capability of the software product to maintain a specified level of performance in cases of software faults or of infringement of its specified interface. The specified level of performance may include fail safe capability.]_
136
+
137
+ #### 3.2.1.3 Recoverability
138
+ _[The capability of the software product to re-establish a specified level of performance and recover the data directly affected in the case of a failure.
139
+ Following a failure, a software product will sometimes be down for a certain period of time, the length of which is assessed by its recoverability.
140
+ **Availability** is the capability of the software product to be in a state to perform a required function at a given point in time, under stated conditions of use. Externally, availability can be assessed by the proportion of total time during which the software product is in an up state. Availability is therefore a combination of maturity (which governs the frequency of failure), fault tolerance and recoverability (which governs the length of down time following each failure). For this reason it has not been included as a separate sub-characteristic.]_
141
+
142
+ #### 3.2.1.4 Reliability compliance
143
+ _[The capability of the software product to adhere to standards, conventions or regulations relating to reliability.]_
144
+
145
+ ### 3.2.2 Usability
146
+ _[The capability of the software product to be understood, learned, used and attractive to the user, when used under specified conditions.
147
+ This section includes all those requirements that affect usability. For example,
148
+ • specify the required training time for a normal users and a power user to become productive at particular operations
149
+ • specify measurable task times for typical tasks or base the new system’s usability requirements on other systems that the users know and like
150
+ • specify requirement to conform to common usability standards, such as IBM’s CUA standards Microsoft’s GUI standards]
151
+ Users may include operators, end users and indirect users who are under the influence of or dependent on the use of the software. Usability should address all of the different user environments that the software may affect, which may include preparation for usage and evaluation of results.]_
152
+
153
+ #### 3.2.2.1 Understandability
154
+ _[The capability of the software product to enable the user to understand whether the software is suitable, and how it can be used for particular tasks and conditions of use. This will depend on the documentation and initial impressions given by the software.]_
155
+
156
+ #### 3.2.2.2 Learnability
157
+ _[The capability of the software product to enable the user to learn its application.]_
158
+
159
+ #### 3.2.2.3 Operability
160
+ _[The capability of the software product to enable the user to operate and control it. Aspects of suitability, changeability, adaptability and installability may affect operability.
161
+ For a system which is operated by a user, the combination of functionality, reliability, usability and efficiency can be measured externally by quality in use.]_
162
+
163
+ #### 3.2.2.4 Attractiveness
164
+ _[The capability of the software product to be attractive to the user. This refers to attributes of the software intended to make the software more attractive to the user, such as the use of color and the nature of the graphical design.]_
165
+
166
+ #### 3.2.2.5 Usability compliance
167
+ _[The capability of the software product to adhere to standards, conventions, style guides or regulations relating to usability.]_
168
+
169
+ ### 3.2.3 Efficiency
170
+ _[The capability of the software product to provide appropriate performance, relative to the amount of resources used, under stated conditions.
171
+ Resources may include other software products, the software and hardware configuration of the system, and materials (e.g. print paper, diskettes).
172
+ For a system which is operated by a user, the combination of functionality, reliability, usability and efficiency can be measured externally by quality in use.]_
173
+
174
+ #### 3.2.3.1 Time behavior
175
+ _[The capability of the software product to provide appropriate response and processing times and throughput rates when performing its function, under stated conditions.]_
176
+
177
+ #### 3.2.3.2 Resource utilization
178
+ _[The capability of the software product to use appropriate amounts and types of resources when the software performs its function under stated conditions.
179
+ Human resources are included as part of productivity.]_
180
+
181
+ #### 3.2.3.3 Efficiency compliance
182
+ _[The capability of the software product to adhere to standards or conventions relating to efficiency.]_
183
+
184
+ #### 3.2.3.4 Maintainability
185
+ _[The capability of the software product to be modified. Modifications may include corrections, improvements or adaptation of the software to changes in environment, and in requirements and functional specifications.]_
186
+
187
+ #### 3.2.3.5 Analyzability
188
+ _[The capability of the software product to be diagnosed for deficiencies or causes of failures in the software, or for the parts to be modified to be identified.]_
189
+
190
+ #### 3.2.3.6 Changeability
191
+ _[The capability of the software product to enable a specified modification to be implemented.
192
+ Implementation includes coding, designing and documenting changes.
193
+ If the software is to be modified by the end user, changeability may affect operability.]_
194
+
195
+ #### 3.2.3.7 Stability
196
+ _[The capability of the software product to avoid unexpected effects from modifications of the software.]_
197
+
198
+ #### 3.2.3.8 Testability
199
+ _[The capability of the software product to enable modified software to be validated.]_
200
+
201
+ #### 3.2.3.9 Maintainability compliance
202
+ _[The capability of the software product to adhere to standards or conventions relating to maintainability.]_
203
+
204
+ ### 3.2.4 Portability
205
+ _[The capability of the software product to be transferred from one environment to another.
206
+ The environment may include organizational, hardware or software environment.]_
207
+
208
+ #### 3.2.4.1 Adaptability
209
+ _[The capability of the software product to be adapted for different specified environments without applying actions or means other than those provided for this purpose for the software considered.
210
+ Adaptability includes the scalability of internal capacity (e.g. screen fields, tables, transaction volumes, report formats, etc.).
211
+ If the software is to be adapted by the end user, adaptability corresponds to suitability for individualization, and may affect operability.]_
212
+
213
+ #### 3.2.4.2 Installability
214
+ _[The capability of the software product to be installed in a specified environment.
215
+ If the software is to be installed by an end user, installability can affect the resulting suitability and
216
+ operability.]_
217
+
218
+ #### 3.2.4.3 Co-existence
219
+ _[The capability of the software product to co-exist with other independent software in a common environment sharing common resources.]_
220
+
221
+ #### 3.2.4.4 Replaceability
222
+ _[The capability of the software product to be used in place of another specified software product for the same purpose in the same environment.
223
+ For example, the replaceability of a new version of a software product is important to the user when upgrading.
224
+ Replaceability is used in place of compatibility in order to avoid possible ambiguity with interoperability.
225
+ Replaceability may include attributes of both installability and adaptability. The concept has been introduced as a subcharacteristic of its own because of its importance.]_
226
+
227
+ #### 3.2.4.5 Portability compliance
228
+ _[The capability of the software product to adhere to standards or conventions relating to portability.]_
229
+
230
+ ## 3.3 Design Constraints
231
+ _[This section indicates any design constraints on the system being built. Design constraints represent design decisions that have been mandated and must be adhered to. Examples include software languages, software process requirements, prescribed use of developmental tools, architectural and design constraints, purchased components, class libraries, and so on.
232
+ 1) Standards Compliance.
233
+ • Specify the requirements derived from existing standards or regulations. They might include:
234
+ • Report format
235
+ • Data naming
236
+ • Accounting procedures
237
+ • Audit Tracing. For example, this could specify the requirement for software to trace processing activity. Such traces are needed for some applications to meet minimum government or financial standards. An audit trace requirement might, for example, state that all changes to a payroll data base must be recorded in a trace file with before and after values.
238
+ 2) Hardware Limitations.
239
+ Identify the requirements for the software to operate inside various hardware constraints.]_
240
+
241
+ ### 3.3.1 Design Constraint One
242
+ _[The requirement description goes here.]_
243
+
244
+ ## 3.4 On-line User Documentation and Help System Requirements
245
+ _[Describes the requirements, if any, for o-line user documentation, help systems, help about notices, and so forth.]_
246
+
247
+ ## 3.5 Purchased Components
248
+ _[This section describes any purchased components to be used with the system, any applicable licensing or usage restrictions, and any associated compatibility and interoperability or interface standards.]_
249
+
250
+ ## 3.6 Interfaces
251
+ _[This section defines the interfaces that must be supported by the application. It should contain adequate specificity, protocols, ports and logical addresses, and the like, so that the software can be developed and verified against the interface requirements.]_
252
+
253
+ ### 3.6.1 User Interfaces
254
+ _[Describe the user interfaces that are to be implemented by the software.]_
255
+
256
+ ### 3.6.2 Hardware Interfaces
257
+ _[This section defines any hardware interfaces that are to be supported by the software, including logical structure, physical addresses, expected behavior, and so on.]_
258
+
259
+ ### 3.6.3 Software Interfaces
260
+ _[This section describes software interfaces to other components of the software system. These may be purchased components, components reused from another application or components being developed for subsystems outside of the scope of this SRS but with which this software application must interact.]_
261
+
262
+ ### 3.6.4 Communications Interfaces
263
+ _[Describe any communications interfaces to other systems or devices such as local area networks, remote serial devices, and so forth.]_
264
+
265
+ ## 3.7 Licensing Requirements
266
+ _[Defines any licensing enforcement requirements or other usage restriction requirements that are to be exhibited by the software.]_
267
+
268
+ ## 3.8 Legal, Copyright, and Other Notices
269
+ _[This section describes any necessary legal disclaimers, warranties, copyright notices, patent notices, wordmark, trademark, or logo compliance issues for the software.]_
270
+
271
+ ## 3.9 Applicable Standards
272
+ _[This section describes by reference any applicable standard and the specific sections of any such standards which apply to the system being described. For example, this could include legal, quality and regulatory standards, industry standards for usability, interoperability, internationalization, operating system compliance, and so forth.]_
273
+
274
+ # 4. Supporting Information
275
+ _[The supporting information makes the SRS easier to use. It includes:
276
+ The supporting information; that is, the Table of Contents, the Appendices, and the Index, make the SRS easier to use. The Appendices are not always considered part of the actual requirements specification and are not always necessary. They might include:
277
+ a) Sample I/O formats, descriptions of cost analysis studies, results of user surveys.
278
+ b) Supporting or background information that can help the readers of the SRS.
279
+ c) A description of the problems to be solved by the software.
280
+ d) The history, background, experience and operational characteristics of the organization to be supported.
281
+ e) A cross-reference list, arranged by milestone, of those incomplete software requirements that are to be completed by specified milestones.
282
+ f) Special packaging instructions for the code and the media to meet security, export, initial loading, or other requirements.
283
+ When Appendices are included, the SRS should explicitly state whether or not the Appendices are to be considered part of the requirements.]_