Separation of concerns: A separação de conceitos ou separação de preocupações
Tags: webdev, beginners, programming, career
Published: 2022-06-23 18:54:14

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](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r7nh6rpu3vbagxcirjx9.png)
 

** 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
](https://www.profissionaisti.com.br/entendendo-a-separacao-de-conceitos-separation-of-concerns-soc/)
[Link 02](https://www.profissionaisti.com.br/entendendo-a-separacao-de-conceitos-separation-of-concerns-soc/)