Scalability Requirements
- Scalability Requirement
- any quality requirement
that specifies a minimum required amount of the
quality factor
scalability
The typical objectives of an scalability requirement are
to:
- Minimize the effort and expense required to ensure that
one of the following continues to function properly and
adequatly as its load increases over time:
- Ensure that the thing being specified can be upgraded to
handle increases in the:
- Number of users (both total and simultaneous).
- Number of transactions (both total and
simultaneous).
- Size of databases (or records within the
databases).
- Amount of network traffic (e.g., number of data packets
per time).
- Amount of hardware (e.g., increases in the number of
Web servers may require corresponding increases in the
number of application servers).
Scalability requirements are typically specified in terms
of the following measurements:
- Amount/increase per release/year
The following are typical examples of scalability
requirements for an eMarket application:
- “The application shall be able to scale as
specified in the following table:”
| Release |
Open
Sales |
Sales
Per Year |
Total
Employees |
Total
Customers |
Simultaneous
Interactions |
| 0 |
10 |
N/A |
10 |
10 |
10 |
| 1 |
10,000 |
50,000 |
50 |
500,000 |
10,000 |
| 2 |
25,000 |
250,000 |
250 |
5,000,000 |
50,000 |
| 3 |
100,000 |
1,000,000 |
500 |
10,000,000 |
250,000 |
The following guidelines have been found to be useful when
producing scalability requirements:
- The scope of a scalability requirement can be:
- Scalability requirements are to developers as capacity
requirements are to users.
- Scalability requirements may specify the future ability
to handle more simultaneous users or interactions, or to
store more information in its databases.
- Scalability requirements should be tagged with future
planned releases of the application or component.
- Scalability requirements can be specified as:
- Individual textual requirements.
- Tables of related requirements (see above example
table).
- Scalability requirements are different from and not to be
confused with the scalability mechanisms that may be used to
implement them:
- Increasing the amount of hardware components and
subcomponents:
- Additional servers.
- Additional CPUs per server.
- Additional RAM per server.
- Additional storage libraries.
- Additional ports.
- Load balancing software components or hardware
components (a.k.a, layer 3–7 network switches)
allocating work to clusters of servers (e.g., web server
clusters, application server clusters, directory server
clusters, database server clusters).
- Scaling up (a.k.a., upgrading) current components and
subcomponents by increasing:
- CPU power.
- RAM chip size.
- Harddisk capacity.
- Storage library capacity.
- The capacity of removable storage such as disks and
tape cartradges.
- Network performance by upgrading the media (e.g.,
replacing copper wire with fiber optics) and network
connectivity devices (e.g., upgrading routers).
- Performance tuning:
- Reconfigurating/optimizing databases.
- Identifying bottlenecks, and then redesigning and
reimplementing the associated software components.