View
1.063
Download
2
Embed Size (px)
Como Podemos Salvar o Corao do Software
Jorge Oleques
ApresentaoPs Graduando em Engenharia de Software pela InfNet/FGVGraduado em Analise e Desenvolvimento de Sistemas pela FTECBrasilDesenvolvedor JavaDesenvolvedor PHPScrum MasterPO - Product Owner
Blog: joleques.blogspot.com.brTwitter: @jorgeolequesGitHub : github.com/jolequesEmail : joleques@gmail.com
SumarioIntroduoFatores de RiscoSinaisTransioPilares Para TransioTeste de UnidadeRefactoryPadres GRASPExemplos e Discusso Concluso
Quando um software traz consigo um comportamento complexo e desprovido de um bom design, torna-se difcil refatorar ou combinar elementos. Comeam a aparecer duplicaes a partir do momento em que o desenvolvedor no mostra confiana em prever todas as implicaes de uma mudana.(Erick Evans, 2010,DDD 2Ed)Introduo
Fatores de RiscoColesterol AltoHipertenso ArterialDiabetesFumoEstresse
Fatores de RiscoRegras de Negcio espalhadaCdigo RuimDomnio mal modeladoFalta da Linguagem nicaProblemas na OO
SinaisCorpoSensao de presso no peitoSuor frio e intensoDesconforto acompanhado de tonturaDesmaioNuseasFalta de ar
SinaisSoftwareManuteno difcilCdigo duplicado Mtodo longo Classe grande Lista de parmetros longaCdigo difcil de entenderDificuldade de adicionar novas funcionalidades
Corao SaudvelCada Coisa no seu lugarCdigo LimpoLinguagem UbiquaCoberto por testes
Transio Escrever cdigo que possa ser entendido e executado por uma mquina fcil, todavia escrever cdigo que possa ser lido e entendido por humanos bem mais complexo (Joshua Kerievsky)
Pilares Para TransioTestes de Unidade RafactoryPadres GRASP
Teste de Unidade Para refatorar, o primeiro passo sempre o mesmo. Eu preciso construir um conjunto slido de testes para cada sesso do cdigo...
...eu sou humano e ainda cometo erros. Ento, eu preciso de testes slidos.Martin Fowler, 1999
TDD (Test Drive Development)
Maior qualidade do cdigoDiminuio dos BUGsOrientao na criao do modeloMaior cobertura do cdigo
Benefcios do TDD
RefactoryDevido dificuldade para se manter um cdigo considerado ruim, um cronograma de entrega de um produto poder atrasar em vista do tempo extra que ser necessrio para realizar a tarefa de alterao no cdigo.(MARTIN, 2009).
RefactoryMelhoria ContinuaEliminar Maus CheirosCdigo LimpoModelo Flexvel
Tipos de RefatoraoExtrair Mtodo (Extract Method)Mover Mtodo (Move Method)Mover Atributo (Move Field')Extrair Classe (Extract Class)Encapsular Atributo (Encapsulate Field)Renomear Mtodo (Rename Method)Subir Mtodo (Pull Up Method)Subir Atributo (Pull Up Field)Descer Mtodo (Push Down Method)Descer Atributo (Push Down Field)Extrair Sub-classe (Extract Subclass)Extrair Super-classe (Extract Superclass)
Padres GRASP (General Responsibility Assignment Software Pattern)"Entender responsabilidades essencial para o bom projeto orientado a objetos". (Martin Fowler)
GRASPPrincpios Fundamentais para a Atribuio de Responsabilidades em projetos OOQualidadeNo sobrecarregar Objetos
Padres GRASPEspecialista da InformaoCriadorAlta CoesoBaixo AcoplamentoControlerPolimorfismoInveno Pura IndireoVariaes Protegidas
Exemplos e DiscussoQuem ama a prtica sem teoria como um marinheiro navegando sem os lemes e sem bussola, no sabendo assim nunca onde vai chegar..(Leonardo da Vinci)
Especialista da InformaoAlta CoesoBaixo Acoplamento
Problema: Dado que exista pelo menos uma vaga nas salas da prova escolhida pelo candidato, quando o candidato realizar a inscrio, ento o candidato deve ser inserido na sala e a inscrio realizada. Exemplos e Discusso - Expert
Cdigo LegadoExemplos e Discusso - Expert
Teste de UnidadeExemplos e Discusso - Expert
RefactoryExtrair Mtodo (Extract Method)Mover Mtodo (Move Method)Renomear Mtodo (Rename Method)Exemplos e Discusso - Expert
Cdigo RefatoradoExemplos e Discusso - Expert
Diminuio das dependnciasFlexibilidade do CdigoCdigo Limpo e Claro
AnliseExemplos e Discusso - Expert
Problema: Dado que eu saiba o tipo de fase, Quando eu listar as Provas ou os Candidatos, Ento o sistema pode apresentar as provas para o candidato escolher ou montar relatrio com os candidatosExemplos e Discusso - Variao ProtegidaVariao ProtegidaPolimorfismo
Cdigo LegadoExemplos e Discusso - Variao Protegida
Cdigo LegadoExemplos e Discusso - Variao Protegida
Teste de UnidadeExemplos e Discusso - Variao Protegida
Extrair Classe (Extract Class)Extrair Super-classe (Extract Superclass)Descer Mtodo (Push Down Method)RefactoryExemplos e Discusso - Variao Protegida
Cdigo RefatoradoExemplos e Discusso - Variao Protegida
Diminuio das dependnciasFlexibilidade do CdigoDiminuio da ComplexidadeCdigo Limpo e Claro
AnliseExemplos e Discusso - Variao Protegida
Cdigo LegadoExemplos e Discusso Inveno Pura
Teste de UnidadeExemplos e Discusso Inveno Pura
Extrair Classe (Extract Class) Extrair Mtodo (Extract Method)RefactoryExemplos e Discusso Inveno Pura
Cdigo RefatoradoExemplos e Discusso Inveno Pura
Diminuio das dependnciasManuteno SimplesCdigo Limpo e Claro
AnliseExemplos e Discusso Inveno Pura
Diminuio das dependnciasManuteno SimplesCdigo Limpo e Claro
AnliseExemplos e Discusso Inveno Pura
ConclusoDiminuio das dependnciasManuteno SimplesCdigo Limpo e ClaroFlexibilidade do CdigoDiminuio da Complexidade
ConclusoProjeto Legado
ConclusoProjeto Refatorado
ObrigadoBlog: joleques.blogspot.com.brTwitter: @jorgeolequesGitHub : github.com/jolequesEmail : joleques@gmail.com
*************
Recommended
View more >