Leitura. Capítulo 7 (Prog. Orient. a Obj. usando Java - 4th Edition)



Documentos relacionados
HERANÇA. Prog. Orientada a Objetos em Java

Gerenciamento da Integração (PMBoK 5ª ed.)

PROJETO (OU DESIGN) DO SOFTWARE Diagrama de Estrutura

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

GUIA DE AVALIAÇÃO DE CLIENTES PARA PROGRAMA DE RECUPERAÇÃO PÓS-DESASTRE

Práticas de. Engenharia de Software. Givanaldo Rocha de Souza

Resolução da lista de exercícios de casos de uso

Separação de Interesses Programação Estruturada e Programação Orientada a Objetos Entrelaçamento de Código Espalhamento de Código

Escalas. Antes de representar objetos, modelos, peças, A U L A. Nossa aula. O que é escala

Como fazer a Renovação de Matrícula online no Sistema Acadêmico

Cotagem de dimensões básicas

Teclado. Mike McBride Anne-Marie Mahfouf Tradução: Lisiane Sztoltz

Soluções de Retrofit Modernize, aumentando confiabilidade e eficiência do seu equipamento

Conceitos básicos da linguagem C

ITIL v3 - Operação de Serviço - Parte 1

Eventualmente tutores podem desafiar a coragem e independência de seus pares através de atividades de competição entre todos, mudando de vínculo

Processos de Software

Integração de livros fiscais com o Microsoft Dynamics AX 2009

Engenharia de Software II

Apostilas OBJETIVA Atendente Comercial / Carteiro / Op. Triagem e Transbordo CORREIOS - Concurso Público º CADERNO. Índice

2 Engenharia de Software

QUALIDADE DE SOFTWARE

Exercícios de Revisão Java Básico

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Algoritmos e Programação Parte Teórica

Tópicos Avançados em Banco de Dados Gerenciamento de Transações em Banco de Dados. Prof. Hugo Souza

1 Introdução. Componentes Usuários. Provedor de Serviços. Figura 1.1 Ambiente de oferecimento de serviços

Equipe OC- Olimpíadas Científicas

3 Qualidade de Software

5 Apresentando a linguagem C

Como fazer um jogo usando o editor de apresentação

Influenciam nossa percepção; ajudam-nos a organizar e a coordenar a Classes estimulam projeto centrado em dados:

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Coleta de Dados: a) Questionário

Construindo Relacionamentos

Modem e rede local. Guia do Usuário

Medição tridimensional

- Aulas 57, 58, 59 e 60 - Técnicas de programação. Funções

Conceitos Básicos de Rede. Um manual para empresas com até 75 computadores

Modem e rede local. Guia do usuário

Desenvolvimento de Sistemas Tolerantes a Falhas

GESTÃO ESTRATÉGICA DE CUSTOS EM SAÚDE. Os custos das instituições

Engenharia de Software II

Unidade 8: Padrão MVC e DAO Prof. Daniel Caetano

ADMINISTRAÇÃO I. Família Pai, mãe, filhos. Criar condições para a perpetuação da espécie

Capítulo 4 Gerenciamento de Memória

Microsoft Access: Criar consultas para um novo banco de dados. Vitor Valerio de Souza Campos

Laudon & Laudon Essentials of MIS, 5th Edition. Pg. 2.1

Carga horária : 4 aulas semanais (laboratório) Professores: Custódio, Daniel, Julio foco: introdução a uma linguagem de programação Linguagem Java

MANUAL DE PROCEDIMENTOS MPR/SGP-500-R00 ARQUIVAMENTO DE PROCESSOS NA SGP

Planejamento Estratégico

Conectar diferentes pesquisas na internet por um menu

Configurações das notificações do sistema. Mike McBride Tradução: Lisiane Sztoltz

Chaves. Chaves. O modelo relacional implementa dois conhecidos conceitos de chaves, como veremos a seguir:

Prática 19 e 20 Características de um bom jogo

AGILIDADE ORGANIZACIONAL

Início Rápido para o Templo

compreensão ampla do texto, o que se faz necessário para o desenvolvimento das habilidades para as quais essa prática apresentou poder explicativo.

BSC Balance Score Card

Judgment Você toma milhares de decisões todos os dias, das mais simples às mais importantes. Quais serão as certas?

Unidade 5: Sistemas de Representação

UMA PEQUENA EMBALAGEM, UM GRANDE IMPACTO

Modem e rede local. Guia do Usuário

Módulo 12 Gerenciamento Financeiro para Serviços de TI

CentreWare Web e superior Agosto de P Xerox CentreWare Web Identificar e Aplicar o Firmware Patch para Escanear

2.6 Como ensinar às crianças a usar a Bíblia?

3.1 Definições Uma classe é a descrição de um tipo de objeto.

UNIVERSIDADE ESTADUAL DA PARAÍBA CENTRO DE CIÊNCIAS E TECNOLOGIA DEPARTAMENTO DE QUÍMICA CURSO DE LICENCIATURA EM QUÍMICA LINDOMÁRIO LIMA ROCHA

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

POC 13 - NORMAS DE CONSOLIDAÇÃO DE CONTAS

Ferramenta de Apoio ao Jogo 2 (Ensino da Leitura) incluído nos Jogos da Mimocas

Conceito e Processo do Planejamento Estratégico

Cinco restrições de desenvolvimento/teste que afetam a velocidade, o custo e a qualidade dos seus aplicativos

Modem e rede local. Manual do utilizador

PORTABILIDADE NUMÉRICA UMA SOLUÇÃO ORIENTADA PELA SIMPLICIDADE, QUALIDADE E BAIXO CUSTO

MANUAL DO PEP ATUALIZADO EM PROPOSTA ELETRÔNICA DE PREÇOS REFERENTE A VERSÃO DO PEP:

Para criar uma nova apresentação: 1.Escolha a opção Apresentação em Branco Clique no botão Ok

Processos de gerenciamento de projetos em um projeto

Exemplo: Na figura 1, abaixo, temos: Clique aqui para continuar, que é a primeira atividade que você precisa realizar para iniciar seus estudos.

Programação Orientada a Objetos: Lista de exercícios #1. Bruno Góis Mateus

Marketing Pessoal. Uma visão de si mesmo

Curso Juventude Brasileira e Ensino Médio Inovador. Manual do ambiente Moodle

A Era dos Mosquitos Transgênicos

Psicologia Social. É a área da Psicologia que procura estudar a interação social.

Bem vindos à técnica CRC

Configurando o Controle dos Pais no Windows Vista

Copyright Proibida Reprodução. Prof. Éder Clementino dos Santos

Introdução. Gerência de Projetos de Software. Sumário. Sistemas de Informação para Processos Produtivos

Cotagem de elementos

Manifeste Seus Sonhos

Nesta seção apresentamos protótipos que desenvolvemos com o objetivo de levantar os requesitos necessários para um sistema para apresentações

TIPOS DE RELACIONAMENTOS

segredos para vencer com Análises

O Que é um Produto? Capítulo 8. Produtos, Serviços e Experiências. O Que é um Serviço? Estratégia de Produtos e Serviços

UFG - Instituto de Informática

A avaliação será baseada nos conteúdos deste roteiro. Bons estudos!

Versão 1.0 O DIÁRIO DE CLASSE ELETRÔNICO QUE PUBLICA INFORMAÇÕES NA WEB

Transcrição:

QUALIDADE DE CÓDIGO

Leitura Capítulo 7 (Prog. Orient. a Obj. usando Java - 4th Edition)

Principais conceitos a serem abrangidos slide 3 Design baseado na responsabilidade Acoplamento Coesão Refatoração

Alterações de software slide 4 O software não é como um romance que é escrito uma vez e, então, mantém-se inalterado. O software é estendido, corrigido, mantido, portado, adaptado O trabalho é feito por diferentes pessoas ao longo do tempo (em geral, décadas).

Mude ou morra slide 5 Há apenas duas opções de software: Ambas são continuamente mantidas; ou morrem. O software que não puder ser mantido será jogado fora.

Qualidade de código slide 6 Há dois conceitos importantes para a qualidade de código: Acoplamento Coesão 2008 by Pearson Education Programãção orientada com objetos JAVA Uma introdução prática utilizando o BlueJ Barnes Kölling

Acoplamento slide 7 O acoplamento se refere às ligações entre distintas unidades de um programa. Se duas classes dependem rigorosamente de muitos detalhes uma da outra, dizemos que são fortemente acopladas. Nosso objetivo é o acoplamento fraco.

Coesão slide 8 A coesão refere-se ao número e à diversidade de tarefas pelas quais uma única unidade de uma aplicação é responsável. Se cada unidade é responsável por uma única tarefa lógica, dizemos que ela tem alta coesão. A coesão se aplica a classes e métodos. Buscamos a alta coesão.

Design de classes Acoplamento, coesão e design baseado em responsabilidade

Acoplamento fraco slide 10 Se duas classes dependem rigorosamente de muitos detalhes uma da outra, dizemos que são fortemente acopladas O acoplamento fraco possibilita: entender uma classe sem ler outras mudar uma classe sem afetar outras assim: melhora a capacidade de manutenção

Alta coesão slide 11 Se cada unidade é responsável por uma única tarefa lógica, dizemos que ela tem alta coesão. A alta coesão possibilita: entender o que uma classe ou método faz usar nomes descritivos reusar classes ou métodos

Coesão de métodos slide 12 Um método deve ser responsável por apenas uma tarefa bem definida.

Coesão de classes slide 13 As classes devem representar uma entidade única, bem definida.

Duplicação de código slide 14 Duplicação de código: é um indicador de design ruim dificulta a manutenção pode levar à introdução de erros durante a manutenção

Duplicação de código Ambos tem as linhas de código: System.out.println("You are " + currentroom.getdescription()); System.out.print("Exits: "); if(currentroom.northexit!= null) { System.out.print("north "); } if(currentroom.eastexit!= null) { System.out.print("east "); } if(currentroom.southexit!= null) { System.out.print("south "); } if(currentroom.westexit!= null) { System.out.print("west "); } System.out.println();

Duplicação de código Baixa coesão Duplicação de código é sintoma de baixa coesão printwelcome imprime a mensagem de boas vindas & imprime a localização atual goroom altera a localização atual & imprime a localização atual Os métodos fazem 2 coisas (baixa coesão) Solução: Criar um método printlocationinfo que imprime a localização atual Usá-lo em printwelcome e goroom

Design baseado na responsabilidade slide 17 Questão: onde adicionar um novo método (que classe)? Cada classe deve ser responsável por manipular seus próprios dados. A classe que deter os dados deve ser responsável por processá-los. RDD resulta em acoplamento fraco.

Localizando alterações slide 18 Um objetivo de reduzir o acoplamento e o design baseado na responsabilidade é o de localizar alterações. Quando uma alteração é necessária, deve ser afetado o menor número de classes possível.

Pensando à frente slide 19 Ao elaborar o design de uma classe, tentamos pensar que é provável que alterações sejam feitas no futuro. Nosso objetivo é facilitar essas alterações.

Coesão de métodos slide 20 Um método deve ser responsável por apenas uma tarefa bem definida. Exemplo de métodos coesos?

Coesão de métodos slide 21 Um método deve ser responsável por apenas uma tarefa bem definida.

Coesão de classes slide 22 As classes devem representar uma entidade única, bem definida.

Refatoração slide 23 Quando as classes são mantidas, é freqüente a adição de código. Classes e métodos tendem a tornar-se mais longos. Ocasionalmente, classes e métodos devem ser refatorados para manter a coesão e o fraco acoplamento.

Refatorando e testando slide 24 Ao refatorar o código, separe o processo de refatorar daquele de fazer outras alterações. Primeiro faça apenas a refatoração, sem alterar a funcionalidade. Teste antes e depois de refatorar para assegurar que tudo está funcionando.

Perguntas sobre design slide 25 Perguntas comuns: Qual deve ser o comprimento de uma classe? Qual deve ser o comprimento de um método? Essas perguntas podem ser respondidas considerando a coesão e o acoplamento.

Diretrizes de design slide 26 Um método é muito longo se executar mais de uma tarefa lógica. Uma classe é muito complexa se representar mais de uma entidade lógica. Nota: essas são diretrizes elas ainda deixam muitas alternativas para o designer.