Modern software systems are characterized not only by a large number of constituent software entities (e.g. functions, modules, classes), but also by complex networks of dependencies among those entities. Analysis of software networks can help software engineers and researchers to understand and quantify software design complexity and evaluate software systems according to software design quality principles. In this chapter, we firstly give a comprehensive overview of previous research works dealing with analysis of software networks. Then, we present a novel network-based methodology to analyze software systems. The proposed methodology utilizes the notion of enriched software networks, i.e. software networks whose nodes are augmented with metric vectors containing both software metrics and metrics used in complex network analysis. The methodology is empirically validated on enriched software networks that represent large-scale Java software systems at different levels of abstraction.