Buscar

slides_aula_refatoracao

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 12 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

3/30/2023
1
OPUS GroupLES | DI |PUC-Rio - Brazil
Uma Introdução à Refactoração de Software
Alessandro Garcia
Cronograma – Atividades do Projeto Supervisionado
 Aulas de Introdução a Disciplina e Projeto Supervisionado - ok
 Aulas sobre Projetos Candidatos e Critérios - ok
 Aula tempo para encontro e planejamento das equipes - ok
 Aula de Introdução a Refatoração de Software (hoje)
 Aula sobre Controle de Versões e Git – 4/4
 Defesa do Projeto Escolhido 
 11/4: grupos 1 e 5
 13/4: grupos 3 e 4
 18/4: grupos 2 e 6
 Aula sobre Contribuições no Github (parte 1) – 20/4
March 23 Alessandro Garcia @ OPUS Group 1
3/30/2023
2
Cronograma – Atividades do Projeto Supervisionado
 Aula sobre análise estática – 25/4
 Preparação para análise das refatorações e escolha das refatorações
abertas – 27/4 (reunião interna dos grupos)
 Apresentações sobre Refatorações (atividades 2 e 3) 
 4/5: grupos 1 e 2
 9/5: grupos 3 e 4
 11/5: grupos 5 e 6
 16/5 – reunião interna dos grupos (trabalho na implementação das refatorações)
 18/5 – aula de acompanhamento (resumo dos progressos)
March 23 Alessandro Garcia @ OPUS Group 2
Ordem dos grupos – 1o DIA de apresentações – 11/4
 GRUPO 1 - Matplolib
EDUARDO DANTAS LUNA
GABRIEL DE OLIVEIRA ROSA M MADEIRA
LUCA VASCONCELLOS RIBEIRO
THIAGO LUIS BECKER DA ROCHA
 GRUPO 2 - Jarvis
JHONATAN CAETANO ARRUDA
JOAO ROIZEN FONTANA
LUCAS DO COUTO BARRA TORRES
MATHEUS SAMPAIO MOREIRA
3
3/30/2023
3
Ordem dos grupos – 2o DIA de apresentações – 13/4
 GRUPO 3
ALEXANDRE RODRIGUES BOMFIM JUNIOR
ARTHUR XAVIER TAVARES
CAIO COUTINHO PALMIERI
JOAO PEDRO MONTEIRO MAIA
 GRUPO 4 - Zulip
LUCAS CAPUTO BELLO
MARINA SCHULER MARTINS
SERGIO BERNARDELLI NETTO
WLADIMIR CALAZAM DE ARAUJO G RAMOS
Alessandro Garcia @ OPUS Group 4
Ordem dos grupos – 3o DIA de apresentações – 18/4
 GRUPO 5 - Mockito
BERNARDO BULGARELLI TEIXEIRA
RAFAEL RIBEIRO DE CARVALHO
THOMAZ PASSARELLI ESPIRITO SANTO
 GRUPO 6 
JOÃO PEDRO GUIMARÃES SOARES
LEONARDO ABREU SANTOS
SERGIO GABRIEL VIEIRA BOUCO
5
3/30/2023
4
Apresentação do grupo nos dias 11, 13 e 18
• Escolha do projeto: informe número do grupo e o projeto no Whatsapp
• Tempo de apresentação: 25 a 30 mins no máximo
• seguido por perguntas e respostas do outro grupo e pelos professores (10 a 15 
mins)
• Todos os membros da equipe devem falar ao longo da apresentação
• Objetivos: 
• apresentar as informações básicas e justificativas do projeto escolhido, bem
como seleção inicial de módulos candidatos
• defender e convencer a outra equipe e os professores que o grupo tem
domínio inicial sobre o projeto escolhido, bem como estão motivados em
estudarem e trabalharem neste projeto
• IMPORTANTE: devem começar a trabalhar em paralelo nas atividades 2 
e 3 o quanto antes 
6
Itens para serem incluídos na Apresentação
• Dados gerais sobre o projeto que achar ser pertinente
• incluir informações apresentadas nas 2 aulas sobre descrições dos projetos
• Incluir alguma informação sobre a arquitetura de módulos do 
projeto: idealmente, visual
• explicar sucintamente a arquitetura (ex. REST? Em camadas?) e o papel dos 
módulos principais
• Incluir outras informações importantes disponíveis
• exemplo: quais são os atributos de qualidade importantes neste projeto? 
(readme, discussões dos desenvolvedores, descrições das issues e commits)
7
3/30/2023
5
Itens para serem incluídos na Apresentação
• Apresente em mais detalhes o propósito de um ou mais
módulos
• candidatos do foco do projeto supervisionado
• apresente justificativas da escolha destes módulos candidatos
• use os mesmos critérios usados para escolha dos projetos
• use outros critérios que o grupo julgar pertinente
• quantos desenvolvedores envolvidos recentemente*?
• quantos commits afetando este módulo realizado nos últimos meses*?
8
Itens para serem incluídos na Apresentação
• Tentem instalar o projeto
• Nomes do líder e vice-líder da equipe
• haverá uma rotação? (ex. bimestral)
9
3/30/2023
6
OPUS GroupLES | DI |PUC-Rio - Brazil
Uma Introdução à Refactoração de Software
Alessandro Garcia
Software maintenance and evolution
 software changes everyday
 new features are progressively introduced in existing classes and methods
 modifications to incorporate…
 new frameworks and libraries
 additions or removal of modules
 structural decay of methods, classes or components (e.g., packages)
March 23 Alessandro Garcia @ OPUS Group 11
3/30/2023
7
Symptoms of poor design choices…
… start to accumulate…
… and… 
 hamper the introduction of new features
 disable the possibility of changing frameworks 
or libraries
 hinder “modernization” of software systems 
with new technologies, e.g., (micro)services
March 23 Alessandro Garcia @ OPUS Group 12
250 billions of lines of 
legacy code
March 30, 2023 afgarcia@inf.puc-rio.br 13
[Seacord et al, Modernizing Legacy Systems, 2003]
If code is not progressively and properly refactored...
3/30/2023
8
Why design degradation is important?
39% (out of technical debt 
rejections) were related to design problems
Productivity Reduction
206 out of 1722 changes rejected require refactoring
M. Campos et al. Does Technical Debt Lead to the Rejection of Pull Requests?. SBSI, 2016. 
Refactoring is (should be) part of the routine…
March 23 Alessandro Garcia @ OPUS Group 15
Refactoring is the process of improving the 
structure a software system without 
changing the external behavior
It is a disciplined way to clean up code that 
minimizes the chances of introducing bugs
"Improving the design after it has been 
written"
3/30/2023
9
Refactoring: a set of code transformations
 Rename
 Extract Method
 Inline Method
 Move Method
 Pull up a Method or a Field
 Push down a method or a field
 Extract Interface
 Remove dead code
…
March 23 Alessandro Garcia @ OPUS Group 16
Open source projects: refactoring frequency
 Is structural quality a common concern?
17
23 projects
(different domains)
15 projects > 40 KLOC each
29,318 refactorings
 1,270 per system
various detectors of code smellstwo refactoring 
detectors
3/30/2023
10
Improving structural quality…
… is a frequent target of refactorings
18
Extract method 7,517
Move field 4,356
Inline method 1,528
Move method 1,404
Pull up method 629
Pull up field 465
Extract superclass 342
Extract interface 133
Push down method 114
Push down field 78
Categorias de refatoração
 é intencional ou não intencional
 é pura ou entrelaçada com outras mudanças (no 
mesmo 
 é simples ou composta (quantas transformações?)
 é manual ou apoiada ou pela IDE
March 23 Alessandro Garcia @ OPUS Group 19
3/30/2023
11
Smells as Hints
 “A code smell or anomaly is a 
surface indication of a deeper 
design problem, observed in a 
program's low-level structure” 
[Fowler 1999]
 Anomalous micro-strututures: 
classes, methods, attributes, etc..
 Catalog of 22 code smell types
Examples of code anomaly types
 Good Classes
 Long Methods
 Feature Envies
 Duplicated Code
 Speculative Generality
 Lazy Class
 Refused Bequest
 Shotgun Surgery
 Divergent Change
March 23 Alessandro Garcia @ OPUS Group 21
3/30/2023
12
Smelly (anomalous) code …
… is a frequent target of refactorings
22
Extract method 7,517 85.28%
Move field 4,356 77.18%
Inline method 1,528 74.21%
Move method 1,404 74.71%
Pull up method 629 81.24%
Pull up field 465 71.61% 
Extract superclass 342 38.30%
Extract interface 133 48.87%
Push down method 114 85.96%
Push down field 78 74.35%
Static Analyzer
… to detect opportunities for refactoring
Alessandro Garcia @ OPUS Group 23

Continue navegando