Decision-making is increasingly difficult due to the level of change and uncertainty that is prevalent in software development environments [16]. Accompanying this is the growing multidisciplinary field of decision theory concerned with the way in which decisions are made and alternatives considered [5]. The process of making decisions was previously viewed as a rational process where clearly defined steps were taken to identify optimal decisions [24]. The major assumption was that decision-makers were fully informed and rational [13].
Decision makers are also assumed to have complete information about a problem whilst identifying all possible solutions. Bazerman [3] identifies the following typical steps of a rational decision-making process.
- Define the problem: Understand the problem and not just its symptoms.
- Identify the criteria: Accommodate multiple decision parameters.
- Weight the criteria: According to views of importance.
- Generate alternatives: Identify possible alternative courses of action.
- Rate the criteria for each alternative: How well does each alternative meet the criteria
- Calculate the optimal solution: Multiply ratings by the criterion weighting.
In rational decision-making theory it is assumed that when people have complete information about a problem, they can identify all possible solutions, and then choose the one that will maximize the outcome of their efforts. This model is useful when explaining routine decisions, and when used in association with other theoretical frameworks or approaches [22]. The rational approach does concede that decisions often lack information about problem definition and what constitutes relevant criteria.