2 - Motivação para arquitetura em camadas

Imagine que você é um arquiteto de software responsável pelo desenvolvimento de um sistema que apresenta o estado de um disco primário para usuário em seu computador. Este sistema deve criar um gráfico para o disco apresentando os blocos com cores diferentes para representar os blocos vazios, os que estão sendo utilizados, os que estão com algum tipo de problema e assim por diante.

Este sistema não deve ser difícil de ser implementado uma vez que você já tem o domínio de como esta apresentação funciona. Você rapidamente identifica quais as chamadas de sistemas devem ser utilizadas e desta forma todas as operações são rapidamente identificadas.

Pela facilidade que você encontrou para o desenvolvimento deste sistema, você opta por desenvolvê-lo de forma monolítica, ou seja, um grande sistema com todas as funcionalidades necessárias. O programa principal chama o componente de apresentação para apresentar as informações para o usuário, e este programa identifica cada bloco para apresentar o seu estado. Ao final você tem um grande programa que executa todas as operações. Este sistema pode ser representado de forma simplificada pela figura a seguir.

Entretanto, justamente quando você agendou a apresentação para o seu cliente, um novo requisito surgiu. Agora, o cliente gostaria de apresentar o mapeamento do disco para um outro sistema operacional. Com isso, todas as chamadas do programa principal para identificar o estado de cada bloco do disco deverão ser modificadas. Adicionalmente, o cliente ainda gostaria de apresentar o resultado em um gráfico de pizza e não em um gráfico de barra como você havia implementado. O que fazer? Veja a seguir.

Copyright © 2016 AIEC.