O design estrutural na arquitetura de software não acontece por acaso. Ele é composto principalmente por duas atividades fundamentais: a análise de características arquiteturais e o design de componentes lógicos. Mas o que exatamente são essas características e como elas moldam os sistemas que construímos?