31 outubro, 2015

Plataformas Emergentes

Plataformas emergentes


  • Plataformas móveis: em 2014 o número de smartphones superou o de desktops, consolidando a plataforma mobile junto com desktop e web.
  • IoT: smartwatch, google glass, tênis com sensores, transporte urbano. 
  • Redes sociais: números nunca antes visto de interatividade social. Ex: Facebook, whatsapp.

Todas essas plataformas levam a uma convergência denominada pelo Gartner Group como o Nexus das Forças. Sinaliza uma tendência tecnológica que deve direcionar todo o desenvolvimento de aplicações corporativas.


Plataformas - Open group


  • 1a. Plataforma: foi até meados dos anos 80, possuia milhares de usuários suportados por mainframes
  • 2a. Plataforma: até inicio do sec. XXI, suportado pelo PC, Internet, e Cliente/Servidor. Possuia centenas de milhões de usuários. Riqueza de interação.
  • 3a. Plataforma: Bilhões de usuários. Suportado por banda larga, dispositivos móveis, serviços em nuvem, big data, internet das coisas. Traz desafios importantes em tecnologia, já que Java e .NET por exemplo, não consegue lidar com a 3a. plataforma.


Plataforma Javascript

  • As tecnologias Javascript e HTML5 foram repensada e redesenvolvidas para fazer aplicações interativas e que podem ser representadas para qualquer tipo de dispositivo.
  • Javascript se tornou uma plataforma com todo um conjunto de elementos existentes em plataformas estabelecidas, Ex:
    • Componentes
    • Frameworks MVVM
    • Servidores
    • Testes de unidade
    • Gerenciadores de pacotes
    • Layouts responsivos
    • Linguagens de script
    • IDEs
  • Bibliotecas Javascript
    • Jquery
    • Sencha
    • ExtJS
    • Kendo UI
    • Angular
  • Framework MVVM JS: Diferente das paginas JSF, o trafego de dados entre o servidor é muito menor ao usar um framework javascript. O Controller fica no browser.
    • Backbone
    • AngularJS
    • Ember
    • Knockout
  • Servidores de aplicação JS
    • NodeJS
    • SilkJS
  • Testes de Unidade JS
    • QUnit
    • Mocha
    • Jasmine
    • Arquilian
  • IDEs JS
    • Senha Architect
    • WebStorm
  • Gerenciamento de Pacotes JS
    • Bower
    • Jam
    • Npm
  • Framework CSS
    • Less
    • Bootstrap
    • Foundation
  • Linguagens de Script JS
    • CoffeeScript
    • Parse
    • TypeScript


















24 outubro, 2015

Plataformas .NET e LAMP

Tecnologias básicas de plataforma .NET

ASP.NET

Tecnologia para o desenvolvimento de aplicações Web.
  • Razor: linguagem de marcação para escrita de páginas ASP.NET
  • Windows Forms: tecnologia para desenvolvimento de aplicações desktop
  • Smart Clients: tecnologia para facilitar a distribuição e atualização de aplicações desktop

ADO.NET

Tecnologia para interoperabilidade e persistência de dados com banco de dados relacionais
  • Entity Framework: tecnologia para mapeamento ORM em .NET
  • nHibernate: tecnologia de terceiros para ORM em .NET

WCF

  • Tecnologia para componentização e exposição de serviços em ambiente .NET
  • Especificar quais os protocolos suportados (HTTP/REST, SOAP, TCP, Named Pipes, entre outros)
  • Suporta serviços que operam no IIS ou diretamente sobre o Windows (Service Host)

IIS

  • Servidor Web
  • Servidor de aplicações baseados em ASP.NET e código gerenciado .NET

Windows Azure

  • Plataforma para hospedagem de aplicações para nuvens públicas e privadas
  • Suporta .NET, Java e LAMP
  • Linux e Windows

Tecnologias avançadas de plataforma .NET

Mensagens - MSMQ

Tecnologia para a criação de aplicações baseadas em mensagens em tecnologias Windows e .NET

Active Directory

Tecnologia para suporte a autenticação e autorização federada de usuários em aplicações
Suporte a LDAP e Kerberos

APP Fabric Caching

Tecnologia para suporte a cache distribuído de aplicações .NET

Microsoft BizTalk

  • Barramento de serviço (ESB) com suporte intensivo a tecnologias Windows
  • Possui mais de 30 conectores a recursos corporativos legados (ex SAP ou COBOL)
  • Suporte a orquestrações BPMS

Plataforma LAMP

  • Termo genérico que denota o desenvolvimento de aplicações em ambiente Linux, Apache httpD, MySQL e PHP;
  • Generalizado para sinalizar o uso de tecnologias rápidas e simples para o desenvolvimento de aplicações Web;
  • Generalizado para linguagens dinâmicas: python, ruby, groovy. 
  • Banco de dados abertos: MariaDb ou PostgreSQL
  •  Linux (SUSE, Redhat, outros) e Windows

PHP

  • Linguagem para desenvolvimento de aplicações Web
  • Valores: Simplicidade e produtividade
  • Ambientes de produtividade com CakePHP suportam técnicas de aceleração com Scaffolding

Aplicações de scaffolding

  • Ruby/Ruby on Rails
  • Python/Django
  • Groovy/Grails
  • Java/Play Framework


Plataforma .NET

O que é o .NET Framework?
  • Aplicações Gerenciadas - aplicações ficam num ambiente gerenciado
  • .NET Framework - conjunto de bibliotecas que facilitam desenvolvimento de aplicações
  • Sistema Operacional Windows - existem variações para linux também

Diferente do Java EE, que somente especifica as tecnologia e a implementação é feita por terceiros. A plataforma .NET fornece tanto as especificações como as implementações.

.NET tem suporte a multilinguagem, mais comuns são C# e VB.NET















19 outubro, 2015

Plataformas Java EE

Tecnologias básicas de Java EE

JSF

"A tecnologia Java Server Faces é um framework de componentes no lado servidor para interfaces de usuários Web baseada em tecnologia Java", Java EE 6 Tutorial

JSF é uma especificação, a implementação é o PrimeFaces, RichFaces, IceFaces.

Cuida da renderização de páginas web. É multicamadas e multi-plataforma. 

Servlets

"Um servlet é uma classe da linguagem Java que é usada para estender as capacidades de servidores que hospedam aplicações por meio de um modelo de programação requisição-resposta", Java EE 6 Tutorial

Faz a ligação entre a lógica de negócio e as páginas web. Faz roteamento, auditoria, transações

JAX-WS

"Provê a funcionalidade para serviços Web grandes baseado nos protocolos comuns WS-*", Java EE 6 Tutorial

Usado para integração com outros sistemas
É apenas uma especificação Apache CXF, JBOSS WebServices

JAX-RS

"Provê a funcionalidade para serviços web no estilo RESTful", Java EE 6 Tutorial
É apenas uma especificação, um exemplo de implementação é o Apache Jersey

JPA

"A API de persitência Java provê facilidades de mapeamento objeto relacional para gerenciar dados relacionais em aplicações Java", Java EE 6 Tutorial


Tecnologias avançadas de Java EE


EJB

É um componente servidor que encapsula a lógica de negócio de uma aplicação
Adiciona poderes a uma classe e permite que a aplicação se torne muito escalável.

Vantagens

  • Controle transacional automático
  • Capacidade de operar em ambientes distribuidos
  • Facilita a montagem do estilo arquitetural de microserviços ou implantações SOA (é comparável ao WCF nesse sentido) 

JMS

É uma API Java que permite que aplicações criem, enviem, recebam ou leiam mensagens
É uma especificação e pode ser comparado ao MQServices da IBM ou MSMQ da Microsoft.
Implementação dessa especificação é o Apache MQ

JTA

Permite que aplicações acessem transações de uma maneira independente de implementações específicas.
É um controle de transação global, por exemplo, fazer o controle da transação para enviar dados a receita e salvar esses dados no banco local. Nesse caso, não adianta fazer controle da transação somente no banco de dados.

JCA

A arquitetura de conectores Java EE permite que componentes Java EE interajam com sistemas legados. Ex. SAPCC.
É uma alternativa mais avançada quando o JAX-WS ou JAX-RS não nos permite fazer a integração com sistemas legados.



Plataforma Java EE

É uma das principais plataformas para desenvolver Web e Distribuído. A plataforma Java EE pode ser representada por uma imagem:





O Java EE é na verdade um conjunto de especificações coordenado por um conjunto de empresas, por isso, o Java EE não representa uma tecnologia específica.

Os servidores de aplicação para o Java EE mais conhecidos são:
  • Apache Tomcat
  • JBOSS Web Server
  • JBOSS Application Server
  • IBM WebSphere WebServer
  • IBM WebSphere Application Server
  • Oracle Application Server



12 outubro, 2015

Estilos e Plataformas Arquiteturais

Plataformas arquiteturais

Representa um arranjo tecnológico das escolhas técnicas realizadas pelo time e que leva a implementação da solução no software.

Estilo arquitetural

A função de uma arquitetura vai determinar a forma do componente a ser montado. Analogamente, a arquitetura de uma casa a ser montada, vai refletir na sua forma. Portanto, uma casa com telhado fazendo um ângulo acentuado refletiu a intenção de evitar a neve se deposite no telhado da casa. 

A escolha do estilo arquitetural é a maior decisão na definição de uma arquitetura.
Alguns estilos arquiteturais:

  • Cliente-servidor
  • Baseado em cadastros web (Web 1.0)
  • Aplicações Ricas de Internet (Web 2.0)
  • Multicamadas (n-camadas)
  • Baseado em integração de aplicações (EAI)
  • Baseado em serviços
  • Baseado em processos de negócio (BPMS)
  • Baseado em computação em grade (grid computing)

Plataforma arquitetural

É um tipo particular de mecanismo de implementação. É uma solução que representa o primeiro grande produto técnico que vai ser escolhido na arquitetura.

Exemplos concretos
  • Java EE
  • .NET


Escolha de plataformas arquiteturais

Como as plataformas podem ser escolhidas?
Uma solução emocional é usar a tecnologia que já se conhece para ser aplicado em qualquer tipo de problema. Não é uma boa ideia.

Decisão estratégica: Escolha de um carro
  • Antes de escolher um carro, deve-se compreender a real necessidade
  • É importante definir quais os critérios devem conduzir a escolha
Necessidades para compra de um carro
  • "Uso o carro para fins urbanos"
  • "Sou casado e tenho três filhos"
  • "Faço pequenas viagens e minha esposa carrega muita bagagem"
  • "Meu orçamento é limitado a R$ 55.000"
  • "Moro numa cidade quente"
É preciso fazer uma decisão racional!! Nem sempre a escolha final vai agradar, no caso da escolha do carro, sobrou um carro não muito atrativo. Mas a escolha racional é a mais certa de ser feita.

Através de "plugins" podemos modificar a plataforma escolhida para atender melhor nossos requisitos, no caso do carro, após o ter escolhido, podemos adicionar ar-condicionado, airbag, som, etc. No caso de uma plataforma arquitetural, após ter escolhida Java EE p.ex., pode optar por usar JSF ou PrimeFaces, hibernate ou JPA, etc.












04 outubro, 2015

Modelagem Arquitetural

Modelagem Arquitetural com modelo de visualização 4+1. O objetivo é permitir que arquitetos possam capturar, comunicar e expressar de uma forma simples e visual como arquitetura foi pensada para seus times.


  • Visualização lógica - perspectiva do usuário final e representa os grandes blocos de construção de um software, os pacotes.
  • Visualização de implementação - perspectiva para os desenvolvedores através de diagramas e componentes da UML
  • Visualização do implantação - topologia física, descrita através do diagrama de implantação.


Visualização Lógica

Objetivo é capturar os principais elementos/módulo de um sistema e como estão relacionados.

Diagrama de pacote

O objetivo é exprimir como dois ou mais pacotes se comunicam ou dependem um do outro. 
  • Dependência entre pacotes (linha pontilhada e seta aberta)
  • Um pacote dentro do outro - todo/parte 
  • O diagrama de pacotes permite expressar não só a decomposição funcional de um sistema como também padrões arquiteturais, p.ex. MVC.
  • É possível expressar também uma arquitetura n-camadas.

Visualização de Implementação

  • Expressa os componentes de uma aplicação
  • Componentes são DLLs, libs, archives, assembly, JARs, WARs que constituem fisicamente uma aplicação

Diagrama de componentes

  • Um componente na UML2 é uma classe estereotipada: <<component>>
  • Um componente pode representar qualquer tipo de software como ex. um banco de dados, um servidor de aplicação, servidor web, DLL, JAR
  • Dependência é igual aos pacotes (linha pontilhada e seta aberta)
  • Através da ligação interface requerida e interface fornecida é possível expressar mais informações no diagrama, do que somente dependência. Ex. browser tem uma interface requerida HTTP e IIS tem uma interface fornecida HTTP.
  • Quadrado no componente é chamado "porto"

Visualização de Implantação

Permite expressar a visão topológica, implantação ou rede de um projeto. Representa como um software vai ser instalado e manifestado dentro máquinas na rede onde será hospedado e acessado pelos usuários.

  • Tem um caráter físico topológico, por isso fala de uma linguagem mais próxima da linguagem de produção, da infra.
  • Permite expressar elementos de hardware, processadores, dispositivos e redes de comunicação.
  • Permite mostrar onde os componentes vão residir.

"Nodo" como elemento básico

  • É sempre um retângulo em 3D
  • Representa um elemento físico, um hardware com capacidade de processamento, ex: iPhone 5S, Samsung Galaxy Tab 3, ATM, Servidor de Banco de Dados
  • No diagrama a associação é representada como uma linha contínua
  • Dentro de um Nodo, podemos ter vários componentes com dependência, etc.








Mecanismos Arquiteturais

Permite que o arquiteto possa escolher tecnologias de forma correto no projeto.


  • Um mecanismo arquitetural representa uma solução comum para um problema recorrente.
  • Um mecanismo liga requisitos arquiteturais a soluções técnicas, que podem ser expressas com a visão 4+1
  • Os requisitos do projeto influenciam os mecanismos de análise, desenho e implementação.
    • Mecanismos de analise: representa a solução independente de tecnologia
    • Mecanismos de desenho: a solução com algum viés tecnológico
    • Mecanismo de implementação: solução concreta

Exemplo

Requisito arquitetural:
Dados cadastrais devem estar disponíveis indefinidamente para consulta ou modificação.

Baseado nesse requisito, o mecanismo de analise seria a persistência dos dados, já que é uma solução comum no desenvolvimento de software.

Já o mecanismo de desenho, influenciado pelo de análise, terá algum viés tecnológico, ele poderia por exemplo ser um banco de dados relacional ou um arquivo de texto, mas ainda não tem o nome da tecnologia em si.

O mecanismo de implementação como terá uma solução concreta, esse requisito poderia ser implementado com o MS SQLServer.


Exemplo - Hotel ACME

Requisito arquitetural:
Usuários devem ser corretamente identificados
Restrições:

  • A solução de segurança deve ser baseada em padrões abertos
  • As senhas não devem trafegar sobre a rede
  • A empresa já utiliza soluções Microsoft

Mecanismo de Análise
  • Os projetistas estudam materiais técnicos sobre autenticação 
  • A autenticação é a solução técnica (padronizada) para credenciar usuários do sistema
Mecanismo de Desenho
  • As soluções Kerberos e LDAP são elencadas, pois são padrões abertos
  • O Kerberos é escolhido, pois não trafega senhas sobre a rede.
Mecanismos de Implementação
  • Dado que a empresa já possui produtos MS, escolhemos um produto MS que suporta o protocolo Kerberos
  • Active Directory com Kerberos