Em se tratando de modelos de desenvolvimento de software,
a parte de um sistema que seja não trivial, quase independente,
substituível, que desempenhe uma função clara e que provenha
a execução de tarefas por meio de um conjunto de interfaces
com alguma abstração lógica é definida como