  A large number of complex networks, both natural and artificial, share the
presence of highly heterogeneous, scale-free degree distributions. A few
mechanisms for the emergence of such patterns have been suggested, optimization
not being one of them. In this letter we present the first evidence for the
emergence of scaling (and smallworldness) in software architecture graphs from
a well-defined local optimization process. Although the rules that define the
strategies involved in software engineering should lead to a tree-like
structure, the final net is scale-free, perhaps reflecting the presence of
conflicting constraints unavoidable in a multidimensional optimization process.
The consequences for other complex networks are outlined.
