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, wherein each raw complexity value associated with a respective complexity factor from a plurality of complexity factors associated with the software application; a plurality of scoring metrics that map raw complexity values to preliminary complexity scores, wherein each scoring metric is associated with a complexity factor from the plurality of complexity factors; and a plurality of preliminary complexity scores associated with the software application; and 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 from the plurality of complexity factors; calculate the plurality of preliminary complexity scores by calculating a respective preliminary complexity score for each of the complexity factors using the scoring metric and the raw complexity value associated with each of the complexity factors; and calculate a total complexity score for the software application based at least on the plurality of preliminary complexity scores, wherein calculating the total complexity score comprises summing the plurality of preliminary complexity scores.