Chapter 5. Non-functional Requirements

Table of Contents

Performance Requirements
Safety Requirements
Security Requirements
Software Quality Attributes

For the purposes of this section, the base hardware platforms shall be defined as follows.

Base hardware platform, PowerPC

CPU

PowerPC "G3" 750 at 600 MHz

RAM

640 MB PC133

Disk drive

40 GB PATA

Optical drive

8X DVD-ROM drive

Base hardware platform, Intel

CPU

Pentium III at 550 MHz

RAM

256 MB PC133

Disk drive

80 GB PATA

Optical drive

24X CD-ROM drive

Performance.BootToX

Ambition

Fast boot times for the installation environment.

Scale

Seconds elapsed between the kernel being loaded by GRUB and the display of the initial Horizon UI window accepting input.

Meter

Stopwatch testing performed five times on each base hardware platform. Does not include UI.Early.MultiGfx.

Must

70 seconds.

Plan

60 seconds.

Wish

45 seconds.

Performance.ScreenChange

Ambition

Responsiveness for screen changes in the Horizon UI.

Scale

Milliseconds elapsed between choosing the "Next" button in the Horizon UI and the next screen being displayed and able to accept input.

Meter

Printed statements to the stderr log including a timestamp when the system is aware of the Next button being pressed and when the system has fully loaded the next screen and is accepting input. Test each screen through a complete installation flow on each base hardware platform ten times.

Must

1000 milliseconds for the worst case.

Plan

750 milliseconds for the worst case.

Wish

300 milliseconds for the worst case.

Performance.Validation

Ambition

Fast validation of HorizonScript files.

Scale

Seconds elapsed between the start and completion of a validation job. Test validation of "typical" installation scripts on each base hardware platform 50 times. Do not include network resources in installation scripts.

Meter

Shell time built-in running the validation tool.

Must

5 seconds.

Plan

3 seconds.

Wish

1 second or less.

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

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 the section called “Perform Installation” 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 the section called “Perform Installation” 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.