Baixe o app para aproveitar ainda mais
Prévia do material em texto
11 Prof. Heitor A. X. Costa – Grupo de Pesquisa em Engenharia de Software (PqES) – DCC/UFLA Curso de Curso de Engenharia de Engenharia de Software ISoftware I �������� �������� �������� �������� ���� � ���������� � ���������� � ���������� � ������ 2Prof. Heitor A. X. Costa – Grupo de Pesquisa em Engenharia de Software (PqES) – DCC/UFLA ImplementaçãoImplementação � Artefatos Utilizados – Projeto Técnico – Componentes Produzidos e Reutilizados – Componentes de Teste – Plano de Desenvolvimento (para liberação) � Tarefa pode ser difícil pois, – Projetistas podem não ter abordado as facilidades da plataforma e do ambiente de programação – As estruturas e as relações em tabelas e gráficos não são diretas – O código deve ser escrito de maneira compreensível – Aproveitar vantagens do projeto, das estruturas de dados e da linguagem de programação – Criar programas reutilizáveis 3Prof. Heitor A. X. Costa – Grupo de Pesquisa em Engenharia de Software (PqES) – DCC/UFLA ImplementaçãoImplementação � Conhecer os padrões e os procedimentos da organização para escrever código � Padrões para você X Padrões para os outros � Todo projeto é de pouco valor, se a modularidade não for contemplada no código � Ter em mente que o código deve refletir o que foi especificado no projeto � Diretrizes de Programação – Criatividade – Projeto é um guia ���� o programador deve ter flexibilidade 22 4Prof. Heitor A. X. Costa – Grupo de Pesquisa em Engenharia de Software (PqES) – DCC/UFLA ImplementaçãoImplementação � Muitas vezes, ter código que execute o mais rápido possível: – Custo para escrever esse código pode ser mais alto e levar mais tempo para ser desenvolvido – Custo do tempo necessário para testar o código, cuja complexidade exige mais casos de testes e dados sobre os testes – Custo de tempo para entender o código – Custo de tempo para modificar o código � Assim, é necessário equilibrar – Tempo de execução – Qualidade do projeto – Padrões – Requisitos 5Prof. Heitor A. X. Costa – Grupo de Pesquisa em Engenharia de Software (PqES) – DCC/UFLA ImplementaçãoImplementação � Reutilização: Produtor X Consumidor – Consumidor de Componentes Reutilizáveis � O componente realiza a função ou fornece os dados de que você precisa? � Se uma pequena modificação for exigida, ela será menor do que construir o componente do início? � O componente é bem documentado, de modo que você possa entendê-lo sem ter de verificar a implementação linha por linha? � Há um registro completo do teste do componente e do histórico da revisão, de modo que você pode estar certo de que ele não contém falhas? – Produtor de Componentes Reutilizáveis � Tornar o componente geral, usando parâmetros e prevendo condições similares � Separar dependências, de modo que partes que precisem ser modificadas sejam isoladas das que permanecem da mesma maneira � Manter a interface genérica e bem definida � Incluir informações sobre falhas encontradas e resolvidas � Utilizar convenções claras de nomes � Documentar as estruturas de dados e os algoritmos � Manter as partes de comunicação e tratamento de erro separadas e fáceis de serem modificadas 6Prof. Heitor A. X. Costa – Grupo de Pesquisa em Engenharia de Software (PqES) – DCC/UFLA ImplementaçãoImplementação � Documentação – Conjunto de descrições que explicam a um leitor o que os programas fazem e como o fazem – Documentação Interna � é o material descritivo escrito diretamente no código � Cabeçalho � Comentários ao longo do programa � Nome significativo de variáveis � Formatação interna do código � Documentação dos dados – Documentação externa � demais documentações � Descrição do problema � Descrição dos algoritmos � Descrição dos dados 33 7Prof. Heitor A. X. Costa – Grupo de Pesquisa em Engenharia de Software (PqES) – DCC/UFLA ImplementaçãoImplementação � I3 = i3 +1 // incrementar contador � I3 = i3 +1 // ajustar contador para ler o próximo caso � contadorCaso = contadorCaso + 1 � z = (a * b) + 0,5 * a * (b – 40,0) � salarioSemana = (valorHora * horas) + 0,5 * valorHora * (horas - 40,0) 8Prof. Heitor A. X. Costa – Grupo de Pesquisa em Engenharia de Software (PqES) – DCC/UFLA ImplementaçãoImplementação 9Prof. Heitor A. X. Costa – Grupo de Pesquisa em Engenharia de Software (PqES) – DCC/UFLA ImplementaçãoImplementação 44 10Prof. Heitor A. X. Costa – Grupo de Pesquisa em Engenharia de Software (PqES) – DCC/UFLA ImplementaçãoImplementação import java.io.*; class TesteFor { public static void main (String args[]){ int j; int numero; String linha; BufferedReader entrada; BufferedWriter saida; for (j = 0; j <= 10; j++){System.out.println(j);} for (j = 0; j < 10; j++){System.out.println(j);} entrada = new BufferedReader(new InputStreamReader(System.in)); saida = new BufferedWriter(new OutputStreamWriter(System.out)); for (j = 0; j <= 10; j++){ System.out.println("Entre numero:"); try{ linha = entrada.readLine(); numero = Integer.valueOf(linha).intValue(); System.out.println("Numero: " + numero); } catch (Exception e) {System.out.println(e);}}}} 11Prof. Heitor A. X. Costa – Grupo de Pesquisa em Engenharia de Software (PqES) – DCC/UFLA ImplementaçãoImplementação import java.io.*; class TesteFor { public static void main (String args[]){ int j; int numero; String linha; BufferedReader entrada; BufferedWriter saida; for (j = 0; j <= 10; j++){ System.out.println(j); } for (j = 0; j < 10; j++){ System.out.println(j); } 12Prof. Heitor A. X. Costa – Grupo de Pesquisa em Engenharia de Software (PqES) – DCC/UFLA ImplementaçãoImplementação entrada = new BufferedReader(new InputStreamReader(System.in)); saida = new BufferedWriter(new OutputStreamWriter(System.out)); for (j = 0; j <= 10; j++){ System.out.println("Entre numero:"); try{ linha = entrada.readLine(); numero = Integer.valueOf(linha).intValue(); System.out.println("Numero: " + numero); } catch (Exception e) { System.out.println(e); } } } } 55 13Prof. Heitor A. X. Costa – Grupo de Pesquisa em Engenharia de Software (PqES) – DCC/UFLA ImplementaçãoImplementação if (isSpecialDeal()) { total = price * 0.95; send(); } else { total = price * 0.98; send(); } if (isSpecialDeal()) total = price * 0.95; else total = price * 0.98; send(); double disabilityAmount() { if (_seniority < 2) return 0; if (_monthsDisabled > 12) return 0; if (_isPartTime) return 0; } double disabilityAmount() { if (isNotEligableForDisability()) return 0; } 14Prof. Heitor A. X. Costa – Grupo de Pesquisa em Engenharia de Software (PqES) – DCC/UFLA ImplementaçãoImplementação Object lastReading() { return readings.lastElement(); } Reading lastReading() { return (Reading) readings.lastElement(); } public String _name private String _name; public String getName() {return _name;} public void setName(String arg) {_name = arg;} Documento como a convenção de codificação deve ser seguido para que seu código seja mais legível e fácil de manipular por você ou por terceiros. Este documento explica o por quê da necessidade de convenção para codificação, organização de arquivos, endentação, comentários, declarações, statements, espaços, convenções para nomenclaturas, estilos de variáveis, como declarar, quais nomes mais fáceis. Enfim, mantendo um padrão coeso de regras, sua vida de programador fica mais fácil
Compartilhar