Академический Документы
Профессиональный Документы
Культура Документы
Introduo
Cada vez mais sistemas so controlados por software. Portanto, importante garantir que o software tem qualidade satisfatria para seu ramo de atuao. O que qualidade de software...? Qualidade um conjunto de propriedades a serem satisfeitas em determinado grau, de modo que este satisfaa s necessidades dos usurios.
Introduo
Fatores de qualidade de Software: Confiabilidade Eficincia Usabilidade etc
Motivao
Existncia de servios prestados por software e que direta ou indiretamente afetam a vida de todos
Qualidade de software no pode ser tratada como assunto secundrio
muito mais barato atingir boa qualidade por construo do que depois ter de refazer ou corrigir problemas!
Desenvolvimento
Abordagem de tentativa e erro (desenvolver um pouco, testar um pouco, eliminar algumas falhas e prosseguir...)
Pequenos programas destinados a avaliar uma idia, ou usados para apreender uma linguagem, podem ser desenvolvidos com sucesso sem que siga um processo cuidadoso.
Programa mais complexo, ou que requer uma qualidade mais elevada, no pode ser desenvolvido segundo esta abordagem!
Exige uma etapa de projeto muito bem realizada!
Fatores de qualidade
Funcionalidade Confiabilidade Usabilidade Eficincia Manutenibilidade Portabilidade
Tempo Recursos
Qualidade de cdigo
Escrever corretamente um cdigo
Reduo de defeitos Facilita a manutenco do cdigo Facilita trabalho em equipe
Qualidade de cdigo
Escrever corretamente um cdigo
Evitando cdigos que Reduo de defeitos podem levar a erros Facilita a manutenco do cdigo Facilita trabalho em equipe
Qualidade de cdigo
Escrever corretamente um cdigo
Reduo de defeitos Facilita a manutenco do cdigo Facilita trabalho em equipe
Inspees
As inspees so exames minuciosos no cdigo e outros artefatos do projeto Inspeo de cdigo uma anlise esttica
Podem ser usadas para encontrar erros e anomalias Podem ser usados para verificar se h desvio com relao a padres e estilos de codificao Tambm podem ser usadas para avaliar a qualidade do software, verificando se o mesmo est bem escrito e bem documentado
Teste
Objetivo: encontrar erros no software uma anlise dinmica Visa verificar se o sistema funciona corretamente para um dado conjunto de casos de teste e se atende aos requisitos do usurio Os testes podem somente mostrar a presena de erros, mas no sua ausncia!
Legibilidade e manutenibilidade
Legibilidade
Legibilidade: Facilidade de ler e escrever programas Contrrio a intuio, programas so muito mais lidos por pessoas do que por processadores de linguagens. Conseqentemente, deveriam ser redigidos de forma a serem facilmente explorados, lidos e compreendidos
Legibilidade
Legibilidade influi:
desenvolvimento e depurao de programas manuteno de programas desempenho de equipes de programao Abstrao de dados Comandos de controle Modularizao de programas Documentao Convenes
Exemplo em Java: nomes de classes iniciam por letra maiscula, nomes de atributos usam letras minsculas
Padres de Programao
Estabelecem:
Regras que devem ser aplicadas obrigatoriamente Excees que estabelecem condies especiais que determinam a aplicao alternativa a uma regra Recomendaes que devem ser seguidas na medida do possvel
A adoo de padres pode ser comprovada com inspees que verificam a conformidade com o padro
Padres definem
Regras para escolha de nomes Constantes Nmero mximo de if aninhados
R: No aninhar if com mais de 3 nveis Mdulos formados por 35 a 50 instrues
Tamanho mnimo e mximo para um mdulo Uso da linguagem padro Estilo de programao
Estilo de programao
Conjunto de diretrizes usadas ao codificar um programa com o propsito de facilitar a leitura do cdigo e compreenso do cdigo Base: bom senso e experincia, aliadas consistncia
Estilos de codificao
Cada linguagem de programao possui um estilo de escrita conhecido e aceito pela comunidade Um estilo se aprende observando cdigo escrito por outras pessoas Programao em dupla (pair-programming) ajuda a ter um cdigo mais legvel e melhor escrito
Convenes
Palavras reservadas escritas em minsculo e ressaltadas com cor ou negrito no programa (while, if, else) Os identificadores, funes padro e procedimentos so escritos em minsculas, mas com primeira em maiscula (Escrever) Os identificadores definidos pelo programador com maisculas e minsculas (LerVetor, ListaNumeros)
Convenes do Java
Convenes usadas em Java Classes em maisculas Janela Objetos em minsculas janelaPrincipal Mtodo com verbo no infinitivo Desenhar( )
Comentrios
Comentrios destinam-se a acrescentar informao a um programa, quando esta informao no evidente, ao ler-se um cdigo. Comentrios aumentam a inteligibilidade de um programa Comentrio com as operaes abstratas representadas por aquele bloco de cdigo
Comentrios
Maus comentrios (listados pelo grau de nocividade) Comentrio obsoleto (no atualizado) Nenhum comentrio Comentrio irrelevante Comentrio que explica o que a instruo faz (A = 1, // Faz A igual a 1. ), assuma que o leitor conhece o suficiente sobre a linguagem Comentrio errado
Classes de comentrios
Comentrios de controle de configurao
Indicam os programadores que criaram e/ou alteraram o programa, as datas em que foram aceitos o programa original e as diversas alteraes, bem como o estado (verso ou modificao do mesmo) Contm cdigo desativado e facilmente reativvel, cuja finalidade auxiliar nas fases de tese, verificao e validao Descrevem o que o programa ou mdulo faz, que algoritmo usa, quais as restries e/ ou requisitos de uso, etc.
Comentrios de instrumentao
Comentrios gerais
Leiaute de programa
O leiaute deve refletir a estrutura lgica do programa O objetivo principal a legibilidade (no a esttica) O leiaute deve ser consistente e resistente a modificaes
Ex: Usar { } depois de um if, mesmo que seja para conter uma nica instruo, facilita a posterior adio de outras instrues, caso venham a ser necessrias
Leiaute de programa
Espaamento Endentao (alinhamento, recuos e tabulao) Linhas em branco Tamanho das linhas
Endentao
R: A endentao das estruturas de controle deve ocupar de 2 a 4 espaos R: A endentao pode ser feita por tabulaes.
Neste caso, indicar o fato em um comentrio colocado no inicio do programa, que indica o nmero de espaos De preferncia, no usar tabulao, para evitar a necessidade de configurar tabulao nos editores e facilitar a redistribuio de cdigo
Estilo preferencial
Endentao: preferencial
Usa-se as chaves mesmo que estas no sejam necessrias!
While (<expressao>) { <instrucao 1>; <instrucao 2>; } } if (<expressao>) { <instrucao 1>;
Linhas em branco
R: Instrues correlatas devem ser agrupadas, sem linhas me branco ou endentao desnecessria R: Pelo menos uma linha em branco deve separar um comentrio do cdigo precedente Blocos de comentrio devem ser separados de bloco de cdigo
Tamanho de linhas
R: Linhas de cdigo no devem exceder 80 caracteres Quando a instruo no cabe em uma linha, parti-la em duas ou mais linhas nos pontos de menor impacto sobre a legibilidade
If (<condicaoMuitoLonga1>) & (<condicaoMuitoLonga2>) {
v = <parte 1 da expressaoMuitoLonga>+ <parte 2 da expressaoMuitoLonga>;
Tamanho de linhas
R: Linhas de cdigo no devem exceder 80 caracteres Quando a instruo no cabe em uma linha, parti-la em duas ou mais linhas nos pontos de menor impacto sobre a legibilidade Ponto de quebra:
If (<condicaoMuitoLonga1>) & (<condicaoMuitoLonga2>) { v = <parte 1 da expressaoMuitoLonga> + <parte 2 da expressaoMuitoLonga>; }
- Depende da LP - Sugestes: logo aps a vrgula, fora de parnteses, mostrando que a linha est incompleta!
Outra opo usar um parmetro por linha, mesmo quando for curto. Facilita a visualizao dos parmetros, mas ocupa mais espao!
Documentao: motivao
Nem sempre cdigo-fonte bem organizado e claro suficiente para compreenso rpida e fcil, por isso:
Inserir pistas no cdigo atravs de comentrios Amarrar o cdigo-fonte s especificaes, ou com documentos relacionados
// lao de contagem de bits // vide docR001.doc pgina 17 While (i > n) ...
Documentao
Diferentes objetivos Programadores: manuteno do cdigo -> manual de manuteno Operadores/usurios: rodar programa, inserir dados e extrair resultados - > manual do usurio
Manual do usurio
Tornar o SW mais acessvel e disponvel Na forma de manual, introduz as principais funes do SW, como instalar, detalha cada funo Manual de ajuda on-line: includo no programa
Manual de manuteno
Conhecido como documentao do sistema Mais tcnico do que o do usurio Inclui: especificaes originais, diagramas usados no projeto (DFD, ER, classes, sequncia, etc.) Problemas graves: a construo e atualizao desta documentao j que a especificao muda, diferentes solues podem ser testadas... A documentao requer atualizao contnua
Manual de manuteno
Documentao interna (dentro do cdigo)
Cabealhos de programas Nomes significativos Comentrios significativo (relativos a funo do programa, das rotinas) Especificao do software Diagrama que mostra estrutura hierrquica de mdulos Explicaes de frmulas complexas Especificao dos dados a serem processados (arquivos, ED, BD) Formatos de telas usadas para interface
Comentrios nos mdulos Comentrios em cdigos complicados (algoritmos complexos) Descrever claramente e com preciso os modelos de dados e as ED usadas para represent-los, assim como operaes realizadas por cada procedimento Documentar como ltima etapa no uma boa prtica documente a medida que avana
Bibliografia
Staa, Arndt von. Programao Modular. Ed. Campus, 2000. Aguilar, L. Joyanes. Fundamentos de Programao: Algoritmos, Estruturas de Dados e Objetos. Ed. McGrawHill, 2008. Koscianski, A. Soares, M. Qualidade de Software. Novatec, 2007.