Introdução
No mundo da Tecnologia que vivemos existe uma gama de soluções e técnicas para o desenvolvimento mais rápido e mais eficiente de sistemas que atende. Podemos citar principalmente, os quesitos de redução de custos, time-to-market, Internet das Coisas (IOT) e computação em nuvem (cloud computing). Tais instrumentos são conhecidos como Framework, Bibliotecas de classes, SOA, ESB, Middleware, Sistema Distribuído, SAAS, PAAS, entre outros. Devido a variedade de técnicas de desenvolvimento e de plataformas de tecnologia, há um desafio para o desenvolvedor em escolher qual delas é a mais apropriada para o seu processo de desenvolvimento de sistemas. Assim, deve sempre objetivar a melhor relação custo-benefício nos quesitos relacionados à curva de aprendizagem, à metodologia, à eficiência, eficácia e efetividade e ao suporte, referentes à solução escolhida.
Premissas básicas para estado da arte
Vantagens e Benefícios
Padronização de processos: obriga o desenvolvedor a seguir um padrão de desenvolvimento, garantindo as boas práticas de desenvolvimento, qualidade e produtividade.
Boas práticas de desenvolvimento: desenvolvimento iterativo, incremental e entrega contínua (ter a capacidade de colocar seu software em produção a qualquer momento de forma simples).
Reuso dos processos: evita a redundância dos processos e aumenta a produtividade.
Flexibilidade e Extensibilidade dos componentes: permite a incorporação de novas funcionalidades que não existem no framework, sem afetar a sua essência.
Qualidade: fazer algo que se apresenta tal como é na realidade.
Segurança: garante a segurança do funcionamento da camada de nível mais baixo e abstrai a complexidade para aquele que programa.
Curva de aprendizagem: diminui o tempo despendido para alcançar sua proficiência.
Produtividade: garante a eficiência e efetividade do resultado pretendido.
Redução de custo: permite criar resultados de qualidade com baixo custo.
Redução de time-to-market: viabiliza que um determinado produto e/ou serviço solicitado pelo mercado seja entregue o quanto antes, porém com qualidade.
Tolerância a falhas: permite monitorar em tempo real as falhas não previstas e alertá-las sem afetar o funcionamento da estrutura como um todo.
Escalabilidade vertical e horizontal: permite adicionar mais recursos (vertical) ou servidores/nós (horizontal) para aumentar a capacidade de processamento.
Model-View-Controller (MVC)
É uma arquitetura ou padrão que permite separar as camadas de apresentação, negócio e dados, visando facilitar a solução de um problema maior. Isto é indispensável para os desenvolvedores manterem os códigos organizados, especialmente quando uma equipe está trabalhando em uma mesma aplicação.
As três camadas que compõe a arquitetura MVC são: Modelo, Visão e Controladora.
Modelo: é utilizado para manipular as informações e executar as regras de negócio.
Visão: é responsável por tudo que o usuário final visualiza, isto é, a interface, a informação, não importando sua fonte de origem, sendo exibida graças à camada de visão.
Controladora: é responsável pela interação entre as camadas “Visão” e “Modelo”. A sua principal função é controlar todo o fluxo de informações que passa pelo sistema.
A sua utilização gera benefícios para o desenvolvedor tais como:
1 – Reuso do código.
2 – Padronização do código, permitindo o trabalho de equipe no mesmo projeto.
3 – Facilidade de manutenção e clareza dos códigos.
Os principais frameworks do mercado implementam o padrão MVC.
SOA
É uma arquitetura de software orientada a serviços, alinhada diretamente aos objetivos de negócio de uma organização. Com o intuito de proporcionar maior agilidade na implementação de novos serviços e na reutilização dos ativos existentes.
“SOA é uma abordagem arquitetural corporativa que permite a criação de serviços de negócio interoperáveis que podem facilmente ser reutilizados e compartilhados entre aplicações e empresas.” (Gartner Group)
Os principais benefícios que a arquitetura SOA proporciona para a otimização de desenvolvimento de sistemas para uma organização são:
Reutilização de software: permite que a organização reaproveite as funcionalidades existentes para implementação de novos serviços, evitando a redundância e dando maior agilidade.
Produtividade: o reuso permite ao desenvolvedor poder reutilizar os serviços em outros projetos, diminuindo o tempo de desenvolvimento.
Flexibilidade: por ser orientado a serviços, que geralmente possui baixo acoplamento, permite agregar novas mudanças e/ou evolução dos sistemas com mais facilidade.
Interoperabilidade: disponibiliza serviços independentemente da plataforma e tecnologia.
Integração: integração com outros serviços e sistemas legados.
Abstração: abstrai a complexidade da implementação do serviço, permitindo que o gestor de negócio visualize melhor o serviço.
Alinhamento com negócio: gestores de negócio visualizam os processos alinhados com a tecnologia.
Governança: permite maior transparência na gestão dos negócios de uma organização.
ESB
Enterprise Service Bus (ESB) é um barramento de serviços corporativos, que abstrai a complexidade na implementação da camada de infraestrutura de um sistema empresarial de mensagens.
ESB é um dos mais importantes componentes de SOA. É um software de infraestrutura que torna os serviços de negócios reutilizáveis e amplamente disponíveis para usuários, aplicações, processos e outros serviços.
Os principais benefícios do ESB são: roteamento de mensagens, requisição de serviços e conversão de protocolos de transporte.
Framework
Framework, em desenvolvimento de software, é uma abstração que une códigos comuns entre vários projetos de software, provendo uma funcionalidade genérica.
Middleware
Middleware atua como mediador/integrador entre diversas tecnologias de software no mundo heterogêneo onde as informações de diferentes fontes são processadas simultaneamente, mesmo que tenham as diferenças de protocolos, plataformas, arquiteturas, ambientes e sistemas operacionais. Podemos dizer também que trata-se de uma API (Conjunto de rotinas e padrões de programação), que compõem, uma abstração de protocolos de comunicação e camada de infraestrutura.
Sistema Distribuído
É uma coleção de computadores/nós e softwares interconectados por uma rede, projetados para resultar em uma aplicação integrada. Também pode ser visto como um conjunto de computadores independentes entre si que se apresenta para os usuários como um sistema único e integrado.
SAAS
Software como Serviço (SaaS) é uma forma de distribuição e comercialização de software. É muito comum na computação em nuvem (cloud computing). Esse modelo permite que a empresa contrate um plano de assinatura e utilize os programas necessários para os negócios.
PAAS
Platform as a Service (PaaS) é um ambiente de desenvolvimento e implantação no qual não é necessário gerenciar, fazer a manutenção nem garantir a segurança do servidor, optando por uma plataforma pronta.
IOT
Internet das Coisas (IOT) é uma interação entre objetos físicos que se comunicam, enviando, coletando e recebendo informações entre si. Ou seja, é uma rede de objetos físicos capaz de reunir e transmitir dados entre eles.