A cognitive model for software architecture complexity