Non-functional Requirements
Safety Requirements
Safety.DiskLock.UI
The Horizon UI system shall not write any data to any block device, except to save log files and/or an HorizonScript file explicitly requested to be saved by the User.
Safety.DiskLock.Runner
The Horizon Runner system shall not write any data to any block device until the HorizonScript is fully validated.
Security Requirements
Security.PasswordHash
The Horizon UI system shall store passwords in memory in their hashed versions only, and securely clear the memory storage that contained plain-text passwords once the hash is stored.
Software Quality Attributes
SQA.Flexibility.ScriptFormat
A programmer with two years of C++ experience shall be able to change the on-disk format of HorizonScript with no more than two hours of labour.
SQA.Flexibility.Firmware
The firmware support described under the UI.Firmware.* requirements branch shall be disableable at compile-time.
SQA.Flexibility.FirmwareConf
The firmware support described under the UI.Firmware.* requirements branch shall be disableable at run-time via a configuration setting.
SQA.Robustness.ScriptSync
The system shall provide a method to save the executed HorizonScript and log messages in the event of a fatal error.
SQA.Usability.TTI.Experienced
A User with experience installing other Linux distributions shall be able to complete the Horizon UI flow from language selection through in less than 15 minutes.
SQA.Usability.TTI.Green
A User with no prior experience with Linux shall be able to complete the Horizon UI flow from language selection through in less than one hour.
SQA.Portability.Bitness
A HorizonScript shall be readable on 32-bit and 64-bit computers regardless of what type of computer was used to create it.
SQA.Portability.Endianness
A HorizonScript shall be readable on big endian and little endian computers regardless of what type of computer was used to create it.
SQA.Verifiability.BlockMock
The system shall support the ability to use "mock" block devices for purposes of testing and verification.
SQA.Maintainability.Comments
All functions and methods in the system shall have a comment describing what action the function or method performs, and its inputs, outputs, and any side effects (if applicable).
SQA.Maintainability.Methods
Each class in the system shall have no more than 20 methods.
SQA.Maintainability.NoOPFuncs
Each function or method in the system shall take no more than six input parameters.