Software Requirements Standards
Software Requirements Standards define the methods, rules, and tools to be used to develop the high-level requirements. These standards should include:
- The methods to be used for developing software requirements, such as structured methods.
- Notations to be used to express requirements, such as data flow diagrams and formal specification languages.
- Constraints on the use of the tools for requirements development.
- The method to be used to provide derived requrements to the system processes.
Software Design Standards
Software Design Standards define the methods, rules, and tools to be used to develop the software architecture and low-level requirements. These standards should include:
- Design description method(s) to be used.
- Naming conventions to be used.
- Conditions imposed on permitted design methods, for example, scheduling, and the use of interrupts and event-driven architectures, dynamic tasking, re-entry, global data, and execption handling, and rational for their use.
- Constraints on the use of design tools.
- Constraints on design, for example, exclusion of recursion, dynamic object, data aliases, and compacted expressions.
- Complexity restrictions, for example, maximun level of nested calls or conditional structures, use of unconditional branches, and number of entry/exit points of code components.
Software Code Standards
Software Code Standards define the programming languages, methods, rules and tools to be used to code the software. These standards should include:
- Programming language(s) to be used and/or defined subset(s). For a programming language, reference the data that unambiguously defines the syntax, the control behavior, the data behavior, and side-effects of the language. This may require limiting the use of some features of a language.
- Source Code presentation standards, for example, line length restriction, indentation, and blank(or even TAB) line usage and Source Code documentation standards, for example, name of author, revision history, inputs and outputs, and affected global data.
- Naming convertions for conponents, subprograms, variables, and constants.
- Conditions and constraints imposed on permitted coding conventions, such as the degree of coupling between software components and the complexity of logical or numerical expressions and retionale for their use.
- Constraints on the use of the coding tools.