On the use of knowledge representation techniques for modeling software architectures