Um
padrão de arquitetura que fornece um tamplate
extensível para aplicações em um domínio. [BOO2000].
Conjunto
de classes que cooperam e compõem um projeto reutilizado para uma classe específica
de software. Um framework
fornece uma orientação talvez melhor encapulsamente arquitetônica
do software, através do particionamento do projeto em
classes abstratas e da definição de suas responsabilidades e colaborações. Um desenvolvedor customiza o framework, para uma aplicação particular, através da
especialização e da composição de instâncias de classes do mesmo [GAM2000].