1. An apparatus for analyzing software application complexity based on a plurality of complexity factors, the apparatus comprising: a memory operable to store: a plurality of raw complexity values associated with a software application, each raw complexity value associated with a respective complexity factor; a plurality of scoring metrics that indicate how preliminary complexity scores for respective complexity factors are calculated, wherein each complexity factor is associated with a respective scoring metric; and a plurality of preliminary complexity scores associated with the software application; a processor communicatively coupled to the memory and operable to: determine the plurality of raw complexity values by determining a respective raw complexity value for each of the complexity factors; calculate the plurality of preliminary complexity scores by calculating a respective preliminary complexity score for each of the complexity factors, the respective preliminary complexity score for each complexity factor calculated by applying the respective scoring metric to the respective raw complexity value; and calculate a total complexity score for the software application based at least on the plurality of preliminary complexity scores.