The thesis addresses the problem of efficiently generating graphs that have the two properties that are typical for real-world graphs: scale-freeness and the small-world property. The challenge is to achieve both properties, although it is in fact already difficult to obtain one of them without generating additional artificial patterns in the graphs. Both sequential and distributed algorithms will be considered.