1. One or more computer-readable storage media comprising computer-executable instructions for performing a method comprising: for a software program comprising a plurality of software components, receiving an indication of affinity between at least two of the software components; for the software components, generating respective map elements representing the software components; placing the map elements within a map representing the software program based on the affinity; and displaying the map representing the software program; wherein the placing comprises: placing map elements representing the software components (C) in the map at respective locations via a heuristic configured to minimize ∑ ( c 1 , c 2 ) ∈ C ⁢ Affinity ⁡ ( c 1 , c 2 ) × Distance ⁡ ( c 1 , c 2 ) ; wherein Affinity (c 1 ,c 2 ) comprises an affinity between two software components c 1 and c 2 out of the software components C, and Distance(c 1 ,c 2 ) comprises a distance between map elements representing the two software components c 1 and c 2 .