1.8 The Requirements Hierarchy

Figure 1.7: Computing levels imply a requirements hierarchy

The evolution of computing implies a requirements hierarchy (Figure 1.7). If the hardware works, then software becomes the priority; if the software works, then people’s needs become important; and when people’s needs are fulfilled, then social requirements arise. As one level‘s issues are met, those of the next appear, just as climbing one hill reveals another. As hardware over-heating problems are solved, software data locking problems arise. As software response times improve, user response times become the issue. Companies like Google and E-bay still seek customer satisfaction, but customers in crowds have community needs like fairness, i.e. higher levels come to drive success.

In general, the highest system level defines its success; e.g. social networks need a community to succeed. If no community forms, it does not matter how easy to use, fast or reliable the software is. Lower levels are necessary to avoid failure but not sufficient to define success.





Reduce community overload, clashes. Increase productivity, synergy, fairness, freedom, privacy, transparency.

Unfairness, slavery, selfishness, apathy, corruption, lack of privacy.


Reduce cognitive overload, clashes. Increase meaning transfer efficiency.

User misunderstands, gives up, is distracted, or enters wrong data.


Reduce information overload, clashes. Increase data processing, storage, or transfer efficiency

Processing hangs, data storage full, network overload, data conflicts.


Reduce physical heat or force overload. Increase heat or force efficiency.

Overheating, mechanical fractures or breaks, heat leakage, jams.

Table 1.2: Computing errors by system level

 Conversely, any level can cause failure; it does not matter how strong the community is if the hardware fails, the software crashes or the interface is unusable. An STS fails if its hardware fails, if its program crashes or if users cannot figure it out. Hardware, software, personal and community failures are all computing errors (Table 1.2). The common feature is that the system fails to perform and in evolution what does not perform, does not survive.

Each level emerges from the previous but fails differently:

  • Hardware systems based on physical energy exchange fail from problems like overheating.
  • Software systems based on information exchange fail from problems like infinite loops.
  • HCI systems based on meaning exchange fail from problems like misunderstanding or information overload.
  • Socio-technical systems based on normative meme exchange fail from problems like mistrust, unfairness and injustice.

Computing as technology fails for technical reasons but, as socio-technology it also fails for social reasons.

Technology is hard, but society is soft. That the soft should direct the hard seems counter-intuitive, but trees grow at their soft tips more than at their hard base. As a tree trunk does not direct its expanding canopy, so today’s social computing advances were undreamt of by its engineering base. Today’s technology designers will find the future of design in level combinations.