REAPROVEITAMENTO NA ARQUITETURA DE SOFTWARE

REAPROVEITAMENTO NA ARQUITETURA DE SOFTWARE

Desenvolver um software, um aplicativo, criar um código e afins é sempre um desafio. São sequencias de zeros e uns combinados para criar o novo e, mais que isso, um novo útil. Independente de qual seja essa utilidade, um programa de gestão, um app mobile, um aplicativo de navegação, essas sequências de números proporcionam um mundo de possibilidades.

Pode-se ir ainda mais longe e dizer que desenvolver uma programação se assemelha a desbravar mares desconhecidos, ou de que o trabalho do programador é descobrir a roda todos os dias e, em certa medida, já foi. Mas não mais, ou pelo menos, não para nós da Zydax.

O reaproveitamento de software é uma técnica vital para evitar que aconteça casos de retrabalho no ambiente de programação. Por exemplo, uma equipe é formada para desenvolver um software de controle de estoque para uma empresa, para isso são criadas linhas de código que cumpram o objetivo estabelecido, ao fim de todo o processo de criação, testes, correção e finalização do código, o software está pronto. Se num período seguinte uma outra empresa precise de um software, mas dessa vez, um software de gestão, porque não reaproveitar a metodologia e funcionalidades do software anterior na criação do novo? Qual a vantagem de começar um novo projeto completamente do zero? Para isso, existe uma gama de conceitos, técnicas e princípios que possibilitam reaproveitamento de software.

Framework é o nome dado ao conjunto de conceitos usados para resolver um problema de domínio específico. Quanto mais frameworks maiores o grau de abstração e a capacidade de identificação de padrões e estruturas replicáveis ao projeto. O SoC (Separation of Concerns) diz respeito a modularização de cada aspecto relevante ao projeto, a divisão de uma aplicação em camadas é um exemplo de utilização, uma vez que separa as preocupações em setores distintos. Por fim, temos o DRY (Don’t Repeat Yourself) que propõe que todo o conhecimento disposto na criação deve possuir uma representação única, livre e dotada de autoridade, dessa forma tornando mais fácil e efetiva a replicação de tais dispositivos.

Um outro ponto importante é entender os conceitos de herança e polimorfismo atribuídos a programação que explicam o que torna o reaproveitamento possível. Por herança entende-se o reaproveitamento de atributos e métodos na hora do desenvolvimento, é o que orienta o trabalho e que consequentemente otimiza o tempo e permite a diminuição das linhas de código. Já o polimorfismo é a capacidade de adaptação que o código apresenta e está associado diretamente ao conceito de herança, ou seja, é pegar os métodos utilizados anteriormente e implementarem de forma diferente, de acordo com o objetivo proposto inicialmente pelo desenvolvedor.

Em última instância de trabalho é necessário que haja uma validação do reuso, é necessário que haja a confirmação da possibilidade de reuso do artefato. Nesse sentido, é preciso avaliar o domínio e o comportamento do artefato em um novo universo de valores, esse novo lugar é chamado de “universo reaproveitável”. Neste novo universo, para que os artefatos funcionem é preciso que ele seja genérico o suficiente para encaixar nos mais variados contextos de aplicação, como também, é preciso que ele seja funcional ao novo universo sem que requeira mudanças muito complexas, a aderência é um fator fundamental a aplicação.

Por fim, é necessário entender que há uma gama de conceitos e técnicas que explicam o reaproveitamento de software e tornam este uma metodologia crucial para um trabalho mais eficiente disposto em menos tempo, com menos gastos e a mesma produtividade. Contudo, deve-se estar atento que a implementação dessa técnica é um trabalho gradual e não uma solução imediata. Depende de estudo, análise, esforço e organização estrutural para que seja posto em prática, mas quando feito em concordância é um diferencial para os desenvolvedores.

Nossos times de engenharia de software (a turma da metodologia) e arquitetura (os especialistas técnicos) trabalham em conjunto, de forma permanente, para extrair e melhorar os principais itens que podem ser reutilizados nos projetos dos nossos clientes e parceiros. Dessa forma nós, da Zydax, garantimos a melhoria contínua e alto nível de satisfação dos projetos que entregamos.