Technological Soft Goals

David Cuykendall
Click for Index Page
Technological soft goals are requirements that specify criteria that can be used to judge the operation of a system, rather than specific behaviors. These are often called "non-functional requirements" that should be contrasted with functional requirements that define specific behavior or functions.

The plan for implementing functional requirements is detailed in the system design. The plan for implementing non-functional requirements is detailed in the system architecture.

Why soft? Normally a goal is a very strict and clear logical criterion. It is satisfied when all sub-goals are satisfied. But in non-functional requirements you often need more loosely defined criteria, like satisficeable or unsatisficeable.

The term satisficing was first coined by Herbert Simon with this definition: Soft goals are goals that do not have a clear-cut criterion for their satisfaction: they are satisficed when there is sufficient positive and little negative evidence for this claim, while they are unsatisficeable in the opposite case.

Broadly, functional requirements define what a system is supposed to do. Non-functional requirements define how a system is supposed to be. Functional requirements  are usually in the form of "system shall do requirement." In contrast, non-functional requirements are in the form of "system shall be requirement," an overall property of the system as a whole or of a particular aspect and not a specific function.

The systems' overall properties commonly mark the difference between whether the system has succeeded or failed. Non-functional requirements are often called qualities of a system. Other terms are "constraints", "quality attributes", "quality goals", "quality of service requirements" and "non-behavioral requirements.” Informally these are sometimes called the "ilities," from attributes like stability and portability.

A quality, that is a non-functional requirement, can be divided into two main categories: 1. Execution qualities, such as security and usability, which are observable at run time. 2. Evolution qualities, such as testability, maintainability, extensibility and scalability, which are embodied in the static structure of the software system.