adl agile aging algorithms analysis apprenticeship architect architecture architecture-description-languages artificial-intelligence bach bibtex-import blackboards body-of-knowledge book business case-study code code-analysis communication compiler complexity components computer-science concepts concurrency criteria curriculum cvs data-mining data-structures decay decisions definition description design design-patterns development differencing distributed-systems documentation domain-knowledge dynamic-impact-analysis education english enterprise escher evaluation evolution example extreme-programming failures formal-methods geography glossary godel graph guidelines ideas impact-analysis implementation information-hiding interconnection interviews introduction java knowledge languages layers linux math methods metrics models modules music notations object-oriented-programming open-source optimization papers patterns philosophy practice process product-lines programming proofs proposal rationale read reconstruction recursivity refactoring requirements reverse-engineering rup self-managed-systems software software-architecture software-design software-engineering software-evolution sorting standard survey swebok systems team techniques testing textbook theory theory-of-computation tools traceability uml unix validation version-history view viewpoint visualization writing xp z