• Save
Arquitetura de Software e o DNAD2013
Upcoming SlideShare
Loading in...5
×
 

Arquitetura de Software e o DNAD2013

on

  • 262 views

Palestra e debate sobre arquitetura de software com base em algumas das palestras apresentadas no DNAD2013.

Palestra e debate sobre arquitetura de software com base em algumas das palestras apresentadas no DNAD2013.

Statistics

Views

Total Views
262
Views on SlideShare
262
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Arquitetura de Software e o DNAD2013 Arquitetura de Software e o DNAD2013 Presentation Transcript

  • Palestra e debate sobre Arquitetura de Software Sobre o DNAD2013 Por André Zanatta Borgonovo
  • Programmer's Happy Day!
  • Desenvolvedor Sênior @azborgonovo azborgonovo@gmail.com André Zanatta Borgonovo View slide
  • Agenda Um Case de Machine Learning Implementando RESTful SOA com DDD Construindo uma API de dados esportivos que responde a 6000 req/s Sobre o DNAD2013 Encerramento O que aprendi em 5 anos de pesquisa em TDD? Desenvolvendo aplicações acessíveis na plataforma .NET Survey sobre Programação Concorrente com .NET CQRS aplicado para construção de aplicações de alto desempenho usando Windows Azure Painel de Programação Funcional Arquitetura evolutiva na prática View slide
  • .NET Architects Days 2013 • MAIOR evento de arquitetura de software do Brasil • Sem fins lucrativos • Assuntos técnicos, conceituais, práticos e acadêmicos • Interessados na melhoria da qualidade e produtividade em software • NÃO limita-se ao framework .NET ou a tecnologias Microsoft
  • Disclaimer AS INFORMAÇÕES E OPINÕES EXPRESSAS NESTA APRESENTAÇÃO SÃO DE RESPONSABILIDADE DO PRÓPRIO AUTOR. EM MOMENTO E DE MANEIRA ALGUMA PRETENDE-SE QUE AS INFORMAÇÕES PRESENTES NESTES SLIDES SEJAM CONSIDERADAS DE RESPONSABILIDADE OU OPNIÕES DIRETAS DE UM OU MAIS PALESTRANTES DO DNAD2013. ESTA APRESENTAÇÃO FOI FEITA COM O INTUITO DE COMPARTILHAR O CONHECIMENTO E EXPERIÊNCIA QUE PUDE TER NO DNAD2013.
  • Um Case de Machine Learning Por Guilherme Silveira • Métodos • Regressão linear • Polinômios • Demais funções • Algoritmos de Classificação • Capacidade de Evolução (treino) • Quantos mais dados, melhor a solução • Algoritmo para solução de problemas • Previsibilidade de resultados • Probabilidades e Estatísticas • Margens de erro • Redes neurais
  • Um Case de Machine Learning Possíveis perguntas para um robô: • Estou pagando um preço justo por este produto? • Qual seria o valor justo (estimativa)? • O e-mail é spam? • Essa movimentação é uma fraude? • Qual a nota o aluno vai tirar na prova final? • Quanto tempo os alunos precisarão para esta prova? • Como algum dado se agrupa?
  • Implementando RESTful SOA com DDD Por Daniel Moreira Yokoyama Behavior-centric Data-centric ? REST DDD
  • Implementando RESTful SOA com DDD Domain-Driven Design • Pareamento entre negócio, modelo e código • NÃO é apenas o uso de building blocks • Modelagem estratégica • Bounded Contexts • Context Map • Anti-Corruption Layer • Open Host Service • Published Language APIs RESTful HTTP Method URL GET /api/products GET /api/products/1 POST /api/products PUT /api/products/1 DELETE /api/products/1
  • Construindo uma API de dados esportivos que responde a 6000 req/s Por Rafael Martins
  • NGINX Sobre O Nginx é um servidor web rápido, leve, e com inúmeras possibilidades de configuração para melhoria performance • Consome menos memória que o Apache, pois é “event-based web server” ao invés de “process-based server” • Pode trabalhar junto com o Apache • Considerado o maior servidor HTTP, responsável por 12,81% dos servidores de HTTP e IMAP/POP3 (Netcraft/2013) Quem usa NGINX? • Dropbox • Netflix • Facebook • Netflix • SourceForge • Groupon • TED • Instagram • Intel • Wordpress ...
  • Considerações sobre APIs Consistência • Seu cliente é um desenvolvedor • Dados consistentes • Informações claras • Boa documentação Performance • Escalabilidade • Tamanho e quantidade de arquivos • Set mínimo e set máximo • Cache • Expiração ativa (remover vínculo entre tabelas) - NoSql • Consulta em memória
  • Arquitetura evolutiva na prática Por Denis Ferrari Questões: • O que fazer? • Quando fazer? • Em que ordem fazer? • Qualidade de um projeto = • Qualidade dos seus programadores • Não quantidade de programadores • Arquitetura tem seu momento • Keep It Simple, Stup#@! • Domain-Driven Design • Permitir que evolua
  • O que aprendi em 5 anos de pesquisa em TDD? Por Mauricio Aniche “Dizem que TDD melhora o design de um software. Mas como ele faz isso? Como acontece a sua ’magia’?” Mantra
  • Respostas e Conclusões "TDD dá retorno constante sobre os possíveis problemas existentes no atual projeto de classes. É tarefa do desenvolvedor perceber esses problemas e melhorar o projeto de acordo." "Se está difícil testar, é porque, provavelmente, há um problema de projeto ou implementação em se código." “O segredo é perceber, o mais rápido possível, o momento em que escrever o teste passou a ser uma tarefa difícil.” Mauricio Aniche
  • Desenvolvendo aplicações acessíveis na plataforma .NET Por Alexandre Santos Costa “Uma aplicação acessível é aquela que atende o maior tipo de limitações físicas e intelectuais” Alguns Recursos • Leitores de tela • Ampliadores de tela • Alto contraste • Teclado virtual
  • Desenvolvendo aplicações acessíveis na plataforma .NET Desenvolvimento Web standards Semântica ARIA (Accessible Rich Internet Application) Interações Teclado SIM Mouse NÃO para deficientes visuais Informações • Nome • Valor • Estado • Comportamento (roles) • Descrição imagens Problema Áreas dinâmicas
  • Checklist de Acessibilidade  Etiquetar todos elementos  Navegação por teclados  Esquema de cores  Verificação com leitores de tela
  • Desenvolvendo aplicações acessíveis na plataforma .NET “Para uma pessoa sem deficiência a tecnologia tornaram as coisas fáceis. Para uma pessoa com deficiência torna as coisas possíveis.” Mary Pat, IBM
  • Survey sobre Programação Concorrente com .NET Por Fabio Galuppo Ideias • Era dos multicores • Novos dispositivos • Economia de energia • Cloud computing • Abstrações do paralelismo (frameworks)
  • CQRS aplicado para construção de aplicações de alto desempenho usando Windows Azure Por Elemar Junior Command-query Separation (CQS) (Bertrand Meyer) • Command – Mudando o estado do objeto que o define, mas não retornando valor algum (métodos void); • Query – Retornando o resultado de algum processamento, mas não alterando o estado do objeto que o define (no side- effects) CQRS: Visão Geral
  • Command-query Responsability Segregation Quando é aplicável? Em domínios colaborativos: • Conjunto amplo de agentes (usuários); • Pequeno (proporcionalmente) conjunto de dados; • Onde o bloqueio de dados é necessário (concorrência); • Bloqueio de usuários não é necessário e/ou possível. Ideias • Novos dispositivos • Renderização no cliente, mas lógica mínima no cliente Tecnologias • MongoDb (NoSql) • Lucene (Indexação de busca) • Windows Azure
  • CQRS aplicado para construção de aplicações de alto desempenho usando Windows Azure
  • Painel de Programação Funcional Participantes • Elemar Jr. • Fabio Galuppo • Pedro Teixeira • Vinicius Hana • Plínio Balduino • Rodrigo Vidal Algumas linguagens funcionais
  • Painel de Programação Funcional Linguagens Funcionais • Retornam funções ao invés de valores • Linq e Lambda são exemplos de paradigma funcional no C# • Paradigmas de programação: • Programação estruturada • Programação orientada a objetos • Programação funcional • Linguagens multiparadigma Dica “Um bom programador não precisa conhecer várias linguagens, mas sim conhecer diversos paradigmas de programação”
  • Cálculo Fatorial Exemplo em C# Exemplo em F#
  • Algumas conclusões pessoas & dicas  É importante aprender sobre qualidade e padrões (DDD, TDD, CQRS...)  Mas não se limitar ou prender-se a estes padrões  Conhecer outros paradigmas de programação (aka linguagens funcionais)  Aprender como seu software utiliza seu hardware
  • Obrigado! “Para cultivar a sabedoria, é preciso força interior. Sem crescimento interno, é difícil conquistar a autoconfiança e a coragem necessárias. Sem elas, nossa vida se complica. O impossível torna-se possível com a força de vontade.” Dalai Lama