Engenharia de Software em Destaque: Antipadrões de Projeto.
Introdução
Vamos retomar os temas de Engenharia de Software, uma das áreas mais clássicas de Tecnologia da Informação (TI). Atendendo ao pedido de um querido amigo concurseiro, o artigo de hoje vai falar sobre antipadrões de projeto.
O tema é bem raro de ser discutido. Se você é novo na área de TI, talvez nunca tenha ouvido falar em antipadrões. Mais atípico ainda é a sua cobrança em provas. Porém, acredite se quiser: as bancas estão incluindo esse tópico nos editais. Se cai na prova, então tem que estudar.
Recomendamos que leia este artigo caso esteja estudando para provas específicas de TI, especialmente carreiras de Desenvolvimento de Sistemas. Se o seu foco é área Fiscal ou pretende realizar provas concorridas que contemplem TI, permaneça conosco também. Veja o roteiro:
- O que são Antipadrões?
- Classificações dos Antipadrões
- Antipadrões Principais
- Mapa Mental
Para compreender o artigo de hoje, é importante que você já tenha noções prévias de padrões de projeto e orientação a objetos. Sem dúvidas, o assunto de hoje é bem “faca na caveira”, com pré-requisitos técnicos.
Fique tranquilo, porque a leitura será rápida e objetiva, do jeito que você gosta. Você vai gastar apenas alguns minutos e ganhar muito conhecimento na frente da concorrência. Chega de enrolação e vamos lá!
Tempo de leitura aproximada: 5 a 10 minutos
O que são Antipadrões?
Um antipadrão é uma resposta a um problema que é contraprodutiva, ineficiente ou ineficaz na prática. Em outras palavras, é uma solução que não deve ser adotada, pois poderá causar problemas em algum momento.
Se você já estudou padrões de projeto, os antipadrões são o oposto do que se recomenda fazer. Em uma analogia com Star Wars, eles são o “lado negro da Força”.
Classificações dos Antipadrões
Os antipadrões podem assumir diversas classificações, pois o entendimento não é plenamente consolidado. Vamos falar brevemente apenas sobre duas delas e depois vamos explicar o porquê:
Antipadrões de Design / Arquiteturais: esses antipadrões estão relacionados a decisões na organização de sistemas e componentes, bem como módulos e interações entre componentes.
Antipadrões de Desenvolvimento / Programação: esses antipadrões estão ligados à construção do software, ou seja, ao código-fonte propriamente dito.
Há outras classificações, tais como antipadrões organizacionais, gerenciais, metodológicos, ágeis e até de DevOps. Neste artigo, vamos abordar as que costumam ser cobradas nos editais de concurso, que são antipadrões de design / arquiteturais e de desenvolvimento / programação.
Antipadrões Principais
Nesta seção, vamos detalhar rapidamente os antipadrões mais populares, respeitando o compromisso que fizemos com você de preparar um artigo curto. Embora existam dezenas deles, selecionamos 10 para você aprender conosco.
Você vai reparar que não organizamos os antipadrões pelas classificações. Qual a razão disso? Em primeiro lugar, a cobrança das provas não possui esse foco. Além disso, as divisões dos antipadrões pelas classificações não são uniformes entre os autores.
Contudo, se você deseja muito saber a divisão, tenha em mente que os primeiros são mais próximos do design / arquiteturais e os últimos são mais próximos do desenvolvimento / programação.
Novamente, entendemos que você não deve se preocupar muito com isso. Foque nos antipadrões. Aliás, talvez você até identifique alguns desses antipadrões na sua organização, quem sabe? :) Bom, vamos pular os bastidores e ir direto ao que interessa.
Antipadrões – Parte 1
- Projeto por Comitê: ocorre quando há uma tomada de decisões excessivamente burocrática e lenta, devido à necessidade de aprovação por um grande grupo de pessoas. Isso pode resultar em atrasos significativos no desenvolvimento do projeto e dificuldade em implementar mudanças.
- Sistema Chaminé: ocorre quando um sistema é difícil de se manter em razão de seus componentes mal-relacionados (por exemplo, um componente central se torna um gargalo para todas as comunicações). Isso pode resultar em problemas de desempenho e escalabilidade.
- Grande Bola de Lama: ocorre quando o sistema não possui uma estrutura reconhecível, com diferentes módulos e funcionalidades fortemente acoplados. Isso dificulta a manutenção e escalabilidade, tornando as mudanças e correções trabalhosas.
- Martelo de Ouro/Dourado: baseado na confiança de que uma solução específica é universalmente aplicável. Em outras palavras, a solução é aplicada em todos os projetos, em vez de buscar soluções adequadas para casos específicos.
- Reinventar a Roda: consiste na criação de soluções personalizadas para problemas comuns, ignorando bibliotecas ou frameworks existentes. Isso pode resultar em duplicação de esforços, maior complexidade e falta de benefícios das melhores práticas da comunidade.
COMPARE: Veja que Martelo de Ouro/Dourado não é a mesma coisa que Reinventar a Roda. No primeiro, uma solução supostamente universal é aplicada em tudo. Em contrapartida, o segundo cria soluções personalizadas a todo momento.
Antipadrões – Parte 2
- Código Espaguete: refere-se a um código complexo e desorganizado, caracterizado por uma teia confusa de interconexões e dependências. Esse antipadrão dificulta a manutenção, leitura e compreensão do código, levando a um aumento nos erros e na dificuldade de implementar recursos.
COMPARE: Embora parecidos, não confunda os antipadrões Grande Bola de Lama e Código Espaguete. O primeiro é mais focado no design / arquitetura do sistema, pois fala da estrutura. Por outro lado, o segundo é mais focado no desenvolvimento / programação.
- Números Mágicos: são valores literais em uso diretamente no código, sem explicação ou contexto, tornando o programa difícil de entender e manter. Esses valores não documentados podem levar a erros e dificultar a adaptação do código a mudanças.
- Complexidade Acidental: ocorre quando uma solução contém uma complexidade desnecessária, que excede o grau de dificuldade relativo à manutenção do sistema. Fato: simplifique as coisas, pois alguém vai programar naquele código depois de você.
- Programação Copiar e Colar: ocorre quando um trecho de código é copiado e colado várias vezes, de maneira inconsequente, com efeitos colaterais. Se o código está repetido, a preferência é por uma solução genérica (função, por exemplo).
- Fluxo de Lava: ocorre quando um trecho de código indesejável continua no programa por conveniência, seja por questões relativas ao custo ou por medo de consequências imprevisíveis após a retirada.
COMPARE: Observe que Programação Copiar e Colar é diferente do Fluxo de Lava. No primeiro, há uma replicação do código, trazendo problemas ao programa por causa da atitude. No segundo, o código já está lá e ninguém quer “meter a mão” para retirar.
Mapa Mental
Calma, pois já estamos acabando. Depois de tanto conteúdo, você precisa de um mapa mental, um banho relaxante e uma boa noite de sono (brincadeira rs). Concurseiro, como você pode presumir, nós vamos ajudar com o mapa.
Aproveite, pois esse formato de resumo para antipadrões de projeto em concursos é raro. Esperamos que goste da síntese que fizemos e armazene o mapa mental da melhor forma, a fim de utilizá-lo posteriormente, em momento oportuno.
Uma última dica antes de terminarmos: se você achou que o mapa mental ficou pequeno demais, então experimente baixar a imagem e dar um zoom. Apostamos um Kit Kat com você como irá melhorar a visualização.
Conclusão
O artigo de hoje apresentou antipadrões de projeto, um tópico extremamente avançado de Engenharia de Software. Se você conseguiu chegar até aqui e entender os conceitos, parabéns! O próximo passo agora é fazer muitas questões para consolidar o entendimento.
Tenha em mente que é fundamental treinar o seu aprendizado por meio de questões. Alunos aprovados realizam milhares de exercícios até conseguir atingir seu objetivo. O acesso ao Sistema de Questões do Estratégia Concursos é feito pelo link: https://concursos.estrategia.com/.
Por fim, se quiser aprofundar o conteúdo ou tirar dúvidas específicas, sugerimos que busque o material do Estratégia Concursos. Nós oferecemos diversos cursos em pdf, videoaulas e áudios para você estudar. Saiba mais por meio do link http://www.estrategiaconcursos.com.br/cursos/.
Bons estudos e até a próxima!
Cristiane Selem Ferreira Neves é Bacharel em Ciência da Computação e Mestre em Sistemas de Informação pela Universidade Federal do Rio de Janeiro (UFRJ), além de possuir a certificação Project Management Professional pelo Project Management Institute (PMI). Já foi aprovada nos seguintes concursos: ITERJ (2012), DATAPREV (2012), VALEC (2012), Rioprevidência (2012/2013), TJ-RJ (2022), TCE-RJ (2022) e CGE-SC (2022/2023). Atualmente exerce o cargo efetivo de Auditora de Controle Externo – Tecnologia da Informação no Tribunal de Contas do Estado do Rio de Janeiro (TCE-RJ), além de ser produtora de conteúdo dos Blogs do Estratégia Concursos, OAB e Carreiras Jurídicas.