SlideShare uma empresa Scribd logo
1 de 42
Gerenciando o ciclo de vida das
suas aplicações em larga escala
Visão Geral (2019
40 Engenheiros de Software
30 Repositórios
22 Pull Requests / dia
146 Pipelines Executados / dia
141k Linhas de Código
Coverage médio de 76%
Luiz Guilherme Bauer Fraga Moreira, 32 anos, Arquiteto e Engenheiro de
Software na
● Cientista da Computação, formado pela Universidade do Sul de Santa Catarina;
● Trabalho com .NET a mais de 10 anos;
● 15 anos de experiência no mercado de desenvolvimento de softwares;
Desafios
1
Uniformidade na arquitetura e API’s
2
Qualidade do código (Orientação a objetos,
Boas Praticas, SOLID, etc)
3
Validação se a arquitetura está sendo
respeitada
4
Garantia que os testes estão passando e
cobertura real do código
O que é Arquitetura?
Requisitos
Arquitetura
Arquitetura / Padrões
- Christopher Alexander criou um catálogo de
“idéias” (patterns) de arquitetura, com prós e
contras.
Arquitetura / Padrões
Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.
Alan Perlis, American Scientist and first recipient of the Turing Award
Cyclomatic Complexity
A complexidade é inferida medindo o número de
caminhos linearmente independentes através do
programa. Quanto maior o número, mais complexo
o código.
C#: If/else, loops (for, while, etc).
Single Responsibility Principle (SRP)
Uma classe ou módulo deve ter um, e apenas um,
motivo para ser alterado.
Stable-Abstractions Principle (SAP)
Um componente deve ser tão abstrato quanto
estável.
Stable-Dependencies Principle (SDP)
Dependa na direção da estabilidade.
Stable-Dependencies Principle (SDP)
Stable-Dependencies Principle (SDP)
Stable-Dependencies Principle (SDP)
Stable-Dependencies Principle (SDP)
Acyclic Dependencies Principle (ADP)
Não permitir ciclos no gráfico de dependência
entre componentes
Acyclic Dependencies Principle (ADP)
Acyclic Dependencies Principle (ADP)
Micro Arquitetura
Você consegue detectar/prevenir/quantificar arquivos de fonte gigantescos? Classes
gigantescas/complexas? Métodos gigantescos/complexos?​
Você consegue detectar/prevenir/quantificar métodos com muitos ifs aninhados?​
Se você terceirizar... Como que você garante que não vais receber um “macarrão”?
(acoplamento & coesão oks?)​
Macro Arquitetura
Você consegue garantir que a arquitetura está sendo respeitada?
Você consegue quantificar o tamanho dos seus sistemas e sub-sistemas?
Você consegue identificar novos sub-sistemas?
Data Structure Matrix
O sistema ao lado viola o Acyclic Dependency
Principle
Diagram Rule - Exemplo MVP
O sistema usa Model-View-Presenter corretamente​? Pode
recusar código que viole a arquitetura MVP.
Diagram Rule - Exemplo DIP
O sistema usa o Dependency Inversion Principle?
Pode recusar código que viole o DIP
Diagram - Exemplo Tangles
Esteira de Build
Keep a Lid On it (Kaloi)
Ferramentas
O SonarQube é uma plataforma de código aberto
desenvolvida pela SonarSource para inspeção
contínua da qualidade do código para realizar
revisões automáticas com análise estática de
código para detectar bugs, códigos cheirosos e
vulnerabilidades de segurança em mais de 20
idiomas de programação. O SonarQube oferece
relatórios sobre código duplicado, padrões de
codificação, testes de unidade, cobertura de
código, complexidade de código, comentários,
bugs e vulnerabilidades de segurança.
Open Source
https://www.sonarqube.org/
Understand fornece informações pertinentes
sobre o seu código. Veja rapidamente todas as
informações sobre funções, classes, variáveis, etc.,
como elas são usadas, chamadas, modificadas e
interligadas. Veja facilmente as árvores de
chamada, métricas e referências.
995$ Ano
https://scitools.com/
Srccheck
Utilitários de linha de comando para checar as
métricas do código-fonte gerado (via SciTools
Understand) e/ou publicar histogramas, kiviats e
gráficos de dispersão dessas métricas.
Open Source
https://github.com/sglebs/srccheck
Structure101 é um ambiente de desenvolvimento
de arquitetura ágil (ADE) que permite que a equipe
de desenvolvimento de software organize uma
base de código.
Construindo seu modelo direto do código, o
Structure101 capacita os arquitetos a trabalharem
com a equipe para manter regras de arquitetura,
diagramas e listas de ações que organizam uma
base de código em uma hierarquia modular com
baixo e controlado acoplamento.
2.500$ Ano
https://structure101.com/
Considerações
Se você não domina a ferramenta, não adianta​
Se você não entende a métrica, não adianta​
Se você não se preocupa em melhorar as métricas, não adianta​
Por si só a ferramenta não vai melhorar nada. Pessoas capacitadas, sim!
Obrigado.

Mais conteúdo relacionado

Semelhante a Dev rioclaro gerenciando o ciclo de vida das suas aplicações em larga escal

TDC Connections 2022 - .NET + Microsserviços: alternativas open source para d...
TDC Connections 2022 - .NET + Microsserviços: alternativas open source para d...TDC Connections 2022 - .NET + Microsserviços: alternativas open source para d...
TDC Connections 2022 - .NET + Microsserviços: alternativas open source para d...Walter Coan
 
.NET + Microsserviços: alternativas open source para descomplicar a vida | TD...
.NET + Microsserviços: alternativas open source para descomplicar a vida | TD....NET + Microsserviços: alternativas open source para descomplicar a vida | TD...
.NET + Microsserviços: alternativas open source para descomplicar a vida | TD...Renato Groffe
 
Arquitetura, uma questão de "estilo"?
Arquitetura, uma questão de "estilo"?Arquitetura, uma questão de "estilo"?
Arquitetura, uma questão de "estilo"?Vanilson Buregio
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareeros.viggiano
 
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, Brazil
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, BrazilResearch Group on High Performance Computing - MDCC/UFC - Fortaleza, Brazil
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, BrazilHeron Carvalho
 
Codacy, CodeClimate, Sonarqube @ 5º DevOps Inside RJ
Codacy, CodeClimate, Sonarqube @ 5º DevOps Inside RJCodacy, CodeClimate, Sonarqube @ 5º DevOps Inside RJ
Codacy, CodeClimate, Sonarqube @ 5º DevOps Inside RJThiago Barradas
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Eric Gallardo
 
Saam & arquiteturas_iu_halan
Saam & arquiteturas_iu_halanSaam & arquiteturas_iu_halan
Saam & arquiteturas_iu_halanHalan Ridolphi
 
Visão Geral Arquiteturade Software
Visão Geral Arquiteturade SoftwareVisão Geral Arquiteturade Software
Visão Geral Arquiteturade Softwareelliando dias
 
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoComunidade NetPonto
 
[CLASS 2014] Palestra Técnica - Silvio Rocha
[CLASS 2014] Palestra Técnica - Silvio Rocha[CLASS 2014] Palestra Técnica - Silvio Rocha
[CLASS 2014] Palestra Técnica - Silvio RochaTI Safe
 
Seminário - Arquitetura de software para computação ubíqua
Seminário - Arquitetura de software para computação ubíquaSeminário - Arquitetura de software para computação ubíqua
Seminário - Arquitetura de software para computação ubíquaRubens Matos Junior
 
Indo alem do_mvc_node_js
Indo alem do_mvc_node_jsIndo alem do_mvc_node_js
Indo alem do_mvc_node_jsgustavobeavis
 
Mercado de trabalho
Mercado de trabalhoMercado de trabalho
Mercado de trabalhomentrixmax
 
aula1introducaoarquitetura.pdf
aula1introducaoarquitetura.pdfaula1introducaoarquitetura.pdf
aula1introducaoarquitetura.pdfAntonio Lobato
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a AspectosRicardo Terra
 
Aula 1 introdução à engenharia de software1 (1)
Aula 1   introdução à engenharia de software1 (1)Aula 1   introdução à engenharia de software1 (1)
Aula 1 introdução à engenharia de software1 (1)Tiago Vizoto
 

Semelhante a Dev rioclaro gerenciando o ciclo de vida das suas aplicações em larga escal (20)

TDC Connections 2022 - .NET + Microsserviços: alternativas open source para d...
TDC Connections 2022 - .NET + Microsserviços: alternativas open source para d...TDC Connections 2022 - .NET + Microsserviços: alternativas open source para d...
TDC Connections 2022 - .NET + Microsserviços: alternativas open source para d...
 
.NET + Microsserviços: alternativas open source para descomplicar a vida | TD...
.NET + Microsserviços: alternativas open source para descomplicar a vida | TD....NET + Microsserviços: alternativas open source para descomplicar a vida | TD...
.NET + Microsserviços: alternativas open source para descomplicar a vida | TD...
 
Arquitetura, uma questão de "estilo"?
Arquitetura, uma questão de "estilo"?Arquitetura, uma questão de "estilo"?
Arquitetura, uma questão de "estilo"?
 
Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, Brazil
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, BrazilResearch Group on High Performance Computing - MDCC/UFC - Fortaleza, Brazil
Research Group on High Performance Computing - MDCC/UFC - Fortaleza, Brazil
 
Codacy, CodeClimate, Sonarqube @ 5º DevOps Inside RJ
Codacy, CodeClimate, Sonarqube @ 5º DevOps Inside RJCodacy, CodeClimate, Sonarqube @ 5º DevOps Inside RJ
Codacy, CodeClimate, Sonarqube @ 5º DevOps Inside RJ
 
Treinamento ASP.NET 2014
Treinamento ASP.NET 2014Treinamento ASP.NET 2014
Treinamento ASP.NET 2014
 
Saam & arquiteturas_iu_halan
Saam & arquiteturas_iu_halanSaam & arquiteturas_iu_halan
Saam & arquiteturas_iu_halan
 
Macro Arquitetura de Software
Macro Arquitetura de SoftwareMacro Arquitetura de Software
Macro Arquitetura de Software
 
Visão Geral Arquiteturade Software
Visão Geral Arquiteturade SoftwareVisão Geral Arquiteturade Software
Visão Geral Arquiteturade Software
 
Estratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de VersãoEstratégias de Estruturação de Código-fonte e Controlo de Versão
Estratégias de Estruturação de Código-fonte e Controlo de Versão
 
[CLASS 2014] Palestra Técnica - Silvio Rocha
[CLASS 2014] Palestra Técnica - Silvio Rocha[CLASS 2014] Palestra Técnica - Silvio Rocha
[CLASS 2014] Palestra Técnica - Silvio Rocha
 
Seminário - Arquitetura de software para computação ubíqua
Seminário - Arquitetura de software para computação ubíquaSeminário - Arquitetura de software para computação ubíqua
Seminário - Arquitetura de software para computação ubíqua
 
Indo alem do_mvc_node_js
Indo alem do_mvc_node_jsIndo alem do_mvc_node_js
Indo alem do_mvc_node_js
 
Mercado de trabalho
Mercado de trabalhoMercado de trabalho
Mercado de trabalho
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
aula1introducaoarquitetura.pdf
aula1introducaoarquitetura.pdfaula1introducaoarquitetura.pdf
aula1introducaoarquitetura.pdf
 
Programação Orientada a Aspectos
Programação Orientada a AspectosProgramação Orientada a Aspectos
Programação Orientada a Aspectos
 
Aula 1 introdução à engenharia de software1 (1)
Aula 1   introdução à engenharia de software1 (1)Aula 1   introdução à engenharia de software1 (1)
Aula 1 introdução à engenharia de software1 (1)
 
Extreme Programming
Extreme ProgrammingExtreme Programming
Extreme Programming
 

Dev rioclaro gerenciando o ciclo de vida das suas aplicações em larga escal

  • 1. Gerenciando o ciclo de vida das suas aplicações em larga escala
  • 2. Visão Geral (2019 40 Engenheiros de Software 30 Repositórios 22 Pull Requests / dia 146 Pipelines Executados / dia 141k Linhas de Código Coverage médio de 76%
  • 3. Luiz Guilherme Bauer Fraga Moreira, 32 anos, Arquiteto e Engenheiro de Software na ● Cientista da Computação, formado pela Universidade do Sul de Santa Catarina; ● Trabalho com .NET a mais de 10 anos; ● 15 anos de experiência no mercado de desenvolvimento de softwares;
  • 4. Desafios 1 Uniformidade na arquitetura e API’s 2 Qualidade do código (Orientação a objetos, Boas Praticas, SOLID, etc) 3 Validação se a arquitetura está sendo respeitada 4 Garantia que os testes estão passando e cobertura real do código
  • 5. O que é Arquitetura?
  • 7. Arquitetura / Padrões - Christopher Alexander criou um catálogo de “idéias” (patterns) de arquitetura, com prós e contras.
  • 9. Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it. Alan Perlis, American Scientist and first recipient of the Turing Award
  • 10. Cyclomatic Complexity A complexidade é inferida medindo o número de caminhos linearmente independentes através do programa. Quanto maior o número, mais complexo o código. C#: If/else, loops (for, while, etc).
  • 11. Single Responsibility Principle (SRP) Uma classe ou módulo deve ter um, e apenas um, motivo para ser alterado.
  • 12.
  • 13. Stable-Abstractions Principle (SAP) Um componente deve ser tão abstrato quanto estável.
  • 14. Stable-Dependencies Principle (SDP) Dependa na direção da estabilidade.
  • 19. Acyclic Dependencies Principle (ADP) Não permitir ciclos no gráfico de dependência entre componentes
  • 22. Micro Arquitetura Você consegue detectar/prevenir/quantificar arquivos de fonte gigantescos? Classes gigantescas/complexas? Métodos gigantescos/complexos?​ Você consegue detectar/prevenir/quantificar métodos com muitos ifs aninhados?​ Se você terceirizar... Como que você garante que não vais receber um “macarrão”? (acoplamento & coesão oks?)​
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28. Macro Arquitetura Você consegue garantir que a arquitetura está sendo respeitada? Você consegue quantificar o tamanho dos seus sistemas e sub-sistemas? Você consegue identificar novos sub-sistemas?
  • 29. Data Structure Matrix O sistema ao lado viola o Acyclic Dependency Principle
  • 30. Diagram Rule - Exemplo MVP O sistema usa Model-View-Presenter corretamente​? Pode recusar código que viole a arquitetura MVP.
  • 31. Diagram Rule - Exemplo DIP O sistema usa o Dependency Inversion Principle? Pode recusar código que viole o DIP
  • 32. Diagram - Exemplo Tangles
  • 33.
  • 34. Esteira de Build Keep a Lid On it (Kaloi)
  • 35.
  • 37. O SonarQube é uma plataforma de código aberto desenvolvida pela SonarSource para inspeção contínua da qualidade do código para realizar revisões automáticas com análise estática de código para detectar bugs, códigos cheirosos e vulnerabilidades de segurança em mais de 20 idiomas de programação. O SonarQube oferece relatórios sobre código duplicado, padrões de codificação, testes de unidade, cobertura de código, complexidade de código, comentários, bugs e vulnerabilidades de segurança. Open Source https://www.sonarqube.org/
  • 38. Understand fornece informações pertinentes sobre o seu código. Veja rapidamente todas as informações sobre funções, classes, variáveis, etc., como elas são usadas, chamadas, modificadas e interligadas. Veja facilmente as árvores de chamada, métricas e referências. 995$ Ano https://scitools.com/
  • 39. Srccheck Utilitários de linha de comando para checar as métricas do código-fonte gerado (via SciTools Understand) e/ou publicar histogramas, kiviats e gráficos de dispersão dessas métricas. Open Source https://github.com/sglebs/srccheck
  • 40. Structure101 é um ambiente de desenvolvimento de arquitetura ágil (ADE) que permite que a equipe de desenvolvimento de software organize uma base de código. Construindo seu modelo direto do código, o Structure101 capacita os arquitetos a trabalharem com a equipe para manter regras de arquitetura, diagramas e listas de ações que organizam uma base de código em uma hierarquia modular com baixo e controlado acoplamento. 2.500$ Ano https://structure101.com/
  • 41. Considerações Se você não domina a ferramenta, não adianta​ Se você não entende a métrica, não adianta​ Se você não se preocupa em melhorar as métricas, não adianta​ Por si só a ferramenta não vai melhorar nada. Pessoas capacitadas, sim!