Knowledge in software architecture and design