Structural Models for Large Software Systems