SlideShare una empresa de Scribd logo
1 de 29
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
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
.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

Más contenido relacionado

La actualidad más candente

Critical Factors in Agile Software Projects para o Agile Brazil (2015)
Critical Factors in Agile Software Projects para o Agile Brazil (2015)Critical Factors in Agile Software Projects para o Agile Brazil (2015)
Critical Factors in Agile Software Projects para o Agile Brazil (2015)Karla Silva
 
Cafe agil em Recife - Agile and Design
Cafe agil em Recife - Agile and DesignCafe agil em Recife - Agile and Design
Cafe agil em Recife - Agile and DesignThoughtworks
 
Scrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento ÁgilScrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento Ágilabacrazy
 
TDD - Desenvolvimento Dirigido a Testes
TDD - Desenvolvimento Dirigido a TestesTDD - Desenvolvimento Dirigido a Testes
TDD - Desenvolvimento Dirigido a TestesNetto Cavalcante
 
Cloud e DevOps, como o Zabbix pode contribuir para este cenário - Zabbix Conf...
Cloud e DevOps, como o Zabbix pode contribuir para este cenário - Zabbix Conf...Cloud e DevOps, como o Zabbix pode contribuir para este cenário - Zabbix Conf...
Cloud e DevOps, como o Zabbix pode contribuir para este cenário - Zabbix Conf...Robert Silva
 
Notification e result pattern
Notification e result patternNotification e result pattern
Notification e result patternAna Manzan
 
O XP não é contra Design com Paulo Caroli, Café Ágil em Recife
O XP não é contra Design com Paulo Caroli, Café Ágil em Recife O XP não é contra Design com Paulo Caroli, Café Ágil em Recife
O XP não é contra Design com Paulo Caroli, Café Ágil em Recife Paulo Caroli
 
Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?Cristiano Schwening
 
Metodologias Ágeis para o Desenvolvimento de Software
Metodologias Ágeis para o Desenvolvimento de SoftwareMetodologias Ágeis para o Desenvolvimento de Software
Metodologias Ágeis para o Desenvolvimento de SoftwareAdolfo Neto
 
Eduardo Rocha - Criando produtos invisíveis
Eduardo Rocha - Criando produtos invisíveis   Eduardo Rocha - Criando produtos invisíveis
Eduardo Rocha - Criando produtos invisíveis Agile Trends
 
Bate-papo com Especialista Terra XP
Bate-papo com Especialista Terra XPBate-papo com Especialista Terra XP
Bate-papo com Especialista Terra XPWildtech
 

La actualidad más candente (15)

Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 
Critical Factors in Agile Software Projects para o Agile Brazil (2015)
Critical Factors in Agile Software Projects para o Agile Brazil (2015)Critical Factors in Agile Software Projects para o Agile Brazil (2015)
Critical Factors in Agile Software Projects para o Agile Brazil (2015)
 
Modelagem Ágil
Modelagem ÁgilModelagem Ágil
Modelagem Ágil
 
Cafe agil em Recife - Agile and Design
Cafe agil em Recife - Agile and DesignCafe agil em Recife - Agile and Design
Cafe agil em Recife - Agile and Design
 
Scrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento ÁgilScrum e o Ambiente de Desenvolvimento Ágil
Scrum e o Ambiente de Desenvolvimento Ágil
 
Métodos Ágeis
Métodos ÁgeisMétodos Ágeis
Métodos Ágeis
 
TDD - Desenvolvimento Dirigido a Testes
TDD - Desenvolvimento Dirigido a TestesTDD - Desenvolvimento Dirigido a Testes
TDD - Desenvolvimento Dirigido a Testes
 
Cloud e DevOps, como o Zabbix pode contribuir para este cenário - Zabbix Conf...
Cloud e DevOps, como o Zabbix pode contribuir para este cenário - Zabbix Conf...Cloud e DevOps, como o Zabbix pode contribuir para este cenário - Zabbix Conf...
Cloud e DevOps, como o Zabbix pode contribuir para este cenário - Zabbix Conf...
 
Notification e result pattern
Notification e result patternNotification e result pattern
Notification e result pattern
 
O XP não é contra Design com Paulo Caroli, Café Ágil em Recife
O XP não é contra Design com Paulo Caroli, Café Ágil em Recife O XP não é contra Design com Paulo Caroli, Café Ágil em Recife
O XP não é contra Design com Paulo Caroli, Café Ágil em Recife
 
Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?Muita gestão e pouca engenharia, por onde anda o XP?
Muita gestão e pouca engenharia, por onde anda o XP?
 
Metodologias Ágeis para o Desenvolvimento de Software
Metodologias Ágeis para o Desenvolvimento de SoftwareMetodologias Ágeis para o Desenvolvimento de Software
Metodologias Ágeis para o Desenvolvimento de Software
 
DevOps - visão geral
DevOps - visão geralDevOps - visão geral
DevOps - visão geral
 
Eduardo Rocha - Criando produtos invisíveis
Eduardo Rocha - Criando produtos invisíveis   Eduardo Rocha - Criando produtos invisíveis
Eduardo Rocha - Criando produtos invisíveis
 
Bate-papo com Especialista Terra XP
Bate-papo com Especialista Terra XPBate-papo com Especialista Terra XP
Bate-papo com Especialista Terra XP
 

Similar a Palestra sobre Arquitetura de Software

tdc-2022-poa-quem-tem-medo-low-code.pdf
tdc-2022-poa-quem-tem-medo-low-code.pdftdc-2022-poa-quem-tem-medo-low-code.pdf
tdc-2022-poa-quem-tem-medo-low-code.pdfDouglas Siviotti
 
Pipeconf no CoffeOps Campinas
Pipeconf no CoffeOps CampinasPipeconf no CoffeOps Campinas
Pipeconf no CoffeOps CampinasAécio Pires
 
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceEncontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceCarolina Karklis
 
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...Felipe Nascimento
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareNorberto Santos
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme ProgrammingRodrigo Branas
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioRalph Rassweiler
 
Apresentação de BDD com SpecFlow e Selenium
Apresentação de BDD com SpecFlow e SeleniumApresentação de BDD com SpecFlow e Selenium
Apresentação de BDD com SpecFlow e SeleniumRafael Cruz, MCT, MBA
 
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)André Dias
 
Como funciona uma empresa ágil de desenvolvimento de software
Como funciona uma empresa ágil de desenvolvimento de softwareComo funciona uma empresa ágil de desenvolvimento de software
Como funciona uma empresa ágil de desenvolvimento de softwareElvis Lima
 
Sonarqube
SonarqubeSonarqube
SonarqubeCDS
 
Introdução: eXtreme Programming
Introdução: eXtreme ProgrammingIntrodução: eXtreme Programming
Introdução: eXtreme ProgrammingDenis L Presciliano
 
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu SoftwareDevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu SoftwareAndré Dias
 
Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Rennan Martini
 
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016Renato Groff
 

Similar a Palestra sobre Arquitetura de Software (20)

tdc-2022-poa-quem-tem-medo-low-code.pdf
tdc-2022-poa-quem-tem-medo-low-code.pdftdc-2022-poa-quem-tem-medo-low-code.pdf
tdc-2022-poa-quem-tem-medo-low-code.pdf
 
Pipeconf no CoffeOps Campinas
Pipeconf no CoffeOps CampinasPipeconf no CoffeOps Campinas
Pipeconf no CoffeOps Campinas
 
Falando sobre DevOps no azure
Falando sobre DevOps no azureFalando sobre DevOps no azure
Falando sobre DevOps no azure
 
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresceEncontrando equilíbrio do DDD enquanto sua aplicação cresce
Encontrando equilíbrio do DDD enquanto sua aplicação cresce
 
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
Apresentação: Utilização de Metodologias Ágeis para Adaptação de um Processo ...
 
Tendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de SoftwareTendências e Dicas para o Desenvolvimento de Software
Tendências e Dicas para o Desenvolvimento de Software
 
XP - Extreme Programming
XP - Extreme ProgrammingXP - Extreme Programming
XP - Extreme Programming
 
Arquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócioArquitetura web para sistemas de negócio
Arquitetura web para sistemas de negócio
 
Apresentação de BDD com SpecFlow e Selenium
Apresentação de BDD com SpecFlow e SeleniumApresentação de BDD com SpecFlow e Selenium
Apresentação de BDD com SpecFlow e Selenium
 
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
Utilizando metologias ágeis com VSTS: Scrum e XP, YES WE CAN! (ALM204)
 
Engenharia de Software Aula 1 - Intro
Engenharia de Software Aula 1 - IntroEngenharia de Software Aula 1 - Intro
Engenharia de Software Aula 1 - Intro
 
Como funciona uma empresa ágil de desenvolvimento de software
Como funciona uma empresa ágil de desenvolvimento de softwareComo funciona uma empresa ágil de desenvolvimento de software
Como funciona uma empresa ágil de desenvolvimento de software
 
Sonarqube
SonarqubeSonarqube
Sonarqube
 
Introdução: eXtreme Programming
Introdução: eXtreme ProgrammingIntrodução: eXtreme Programming
Introdução: eXtreme Programming
 
Metodologias Ageis
Metodologias AgeisMetodologias Ageis
Metodologias Ageis
 
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu SoftwareDevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
DevOps Summit Brasil: +10 Ferramentas para Melhorar a Qualidade do seu Software
 
Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)Introdução a Metodologia XP (E Xtreme Programming)
Introdução a Metodologia XP (E Xtreme Programming)
 
DDD
DDDDDD
DDD
 
Agile User Experience
Agile User ExperienceAgile User Experience
Agile User Experience
 
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
 

Palestra sobre Arquitetura de Software

  • 1. Palestra e debate sobre Arquitetura de Software Sobre o DNAD2013 Por André Zanatta Borgonovo
  • 4. 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
  • 5. .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
  • 6. 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.
  • 7. 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
  • 8. 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?
  • 9. Implementando RESTful SOA com DDD Por Daniel Moreira Yokoyama Behavior-centric Data-centric ? REST DDD
  • 10. 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
  • 11. Construindo uma API de dados esportivos que responde a 6000 req/s Por Rafael Martins
  • 12. 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 ...
  • 13. 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
  • 14. 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
  • 15. 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
  • 16. 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
  • 17. 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
  • 18. 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
  • 19. Checklist de Acessibilidade  Etiquetar todos elementos  Navegação por teclados  Esquema de cores  Verificação com leitores de tela
  • 20. 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
  • 21. 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)
  • 22. 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
  • 23. 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
  • 24. CQRS aplicado para construção de aplicações de alto desempenho usando Windows Azure
  • 25. Painel de Programação Funcional Participantes • Elemar Jr. • Fabio Galuppo • Pedro Teixeira • Vinicius Hana • Plínio Balduino • Rodrigo Vidal Algumas linguagens funcionais
  • 26. 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”
  • 27. Cálculo Fatorial Exemplo em C# Exemplo em F#
  • 28. 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
  • 29. 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