DEV Community

Thiele Nunes
Thiele Nunes

Posted on

Separation of concerns: A separação de conceitos ou separação de preocupações

Hoje em dia, estudos afirmam que 80% do valor gasto com sofware é relacionado a manutenção de aplicações. Mas esse tempo pode ser poupado já no inicio do trabalho.

O que é?

  • Um princípio da engenharia de software, que visa separar preocupações, modularizar aplicação de forma que cada módulo esteja focado em resolver apenas um único problema.

  • O foco desse conceito é separar preocupações, para resolver uma de cada vez.

  • Estes conceitos, quando combinados, atingem um objetivo principal que, na maioria das vezes, é um software, uma página da Web ou um hardware.

  • A Separação de Conceitos normalmente ocorre em softwares de grande porte ou em projetos que são desenvolvidos em mais de uma linguagem de programação.

Para que serve?

  • Esse conceito é imprescindível para quem deseja ter uma arquitetura madura;
  • Geralmente quando se inicia a saga de um desenvolvedor, foca-se muito em linguagens de programação, algoritmos, banco de dados, enfim, tudo é muito novo. O foco é fazer o código rodando, a tela funcionando e posteriormente, uma vez já agindo profissionalmente, ver o nosso cliente feliz.
  • Com o passar do tempo nos deparamos com um tempo maior para dar manutenção, códigos que se repetem, concertos que causam erros, ou seja, começamos a ter pesadelos com um mau design de software. É aqui que entra esse conceito.
  • Programadores Web praticam a Separação de Conceitos indiretamente. Para construir uma página, diferentes linguagens são utilizadas, cada uma com um propósito em particular. Geralmente, para esses projetos, são utilizadas 4 linguagens: HTML, CSS, PHP e JavaScript, nas quais poderemos intitulá-las como agentes de “conceitos”.

Quais são os efeitos positivos e negativos?

  • Facilidade de organização de tarefas e visualização de resultados;
  • Algumas situações podem se tornar mais burocráticas;
  • Maior organização das atividades.

Qual o exemplo prático?

Image description

** Seguindo a ideia de programação web, a separação de conceitos que ocorre nesse caso indiretamente é:**

Iniciamos com a divisão de pastas, começando com o HTML, que é utilizado para estruturar e formatar o conteúdo de uma página, como a inserção de tabelas e marcação de sessões (título, cabeçalho e corpo). A linguagem CSS, por sua vez, edita a apresentação do conteúdo gerado pela linguagem HTML, fornecendo estilos baseados em identificadores (id) e classes (class) dos componentes da página. O back-end (“retaguarda”) de uma página, responsável por manipular informações do banco de dados e executar operações de tratamento e envio de informações são feitas pela linguagem PHP. E, por fim, o JavaScript é empregado para executar scripts do lado do cliente, comportando-se de forma assíncrona para alterar a exibição do conteúdo sem comunicação com o servidor.

Links de apoio:

Link 01

Link 02

Top comments (0)