Programação e Fatores de Qualidade -...

30
Introdução à Programação Programação e Fatores de Qualidade

Transcript of Programação e Fatores de Qualidade -...

Introdução à Programação

Programação e Fatores de Qualidade

Qualidade de Software

Quero que você escrevarapidamente um sistema defolha de pagamento quefuncione corretamente, que sejarobusto e que seja rápido. Ah!Pretendo lançar uma outraSem problema,

chefe.

Ferrou!

22

Pretendo lançar uma outraversão deste mesmo programa,daqui a uns 6 meses.

chefe.

Tópicos da Aula

Hoje aprenderemos alguns fatores de qualidade desoftware

Fatores de qualidade externos

Fatores de qualidade internos

Depois aprenderemos algumas técnicas para melhoraralguns fatores de qualidade de um programa

33

Comentários

Refactoring

Especialização com subclasses

Finalmente, iremos mostrar como alguns errosdinâmicos podem ser depurados com comentários

Erros dinâmicos

Depuração com comentários

Impacto econômico e social do

software de qualidade

Disponibilidade de serviços essenciaishome banking

telefoniaSegurança de pessoas

4

Segurança de pessoassistemas de monitoramento de pacientessistemas de controle de tráfego aéreofreios ABS

AS1

Slide 4

AS1 Adriano Sarmento; 4/3/2008

Competitividade das empresasMelhores produtos a um menor custoAtração de novas empresas para a região

Investimentos na região

O impacto na prática

5

Investimentos na regiãoArrecadação de impostos

Crise de Software

Nas 3 primeiras décadas da Computação, apreocupação maior era hardware

Custo de processamento e armazenamento de dados

Desafio atual é melhorar qualidade e custo dosoftwareProblemas

25% dos projetos são cancelados

66

25% dos projetos são canceladosO tempo e custo de desenvolvimento é bem maior do que oestimado

em 53% dos projetos

75% dos sistemas não funcionam como planejado

A manutenção e reutilização são difíceis e custosas

A produtividade dos profissionais da área de software nãotem acompanhado a demanda por seus serviços

Causas da Crise de Software

EssênciasComplexidade crescente dos sistemasDificuldade e custos de formalização

7

Uma linha de código do sistema de controle delançamento do ônibus espacial da NASA custa1.000 dólares!

Essências não podem ser evitadas

Dificuldade de Formalização

8

Causas da Crise de Software

AcidentesMá qualidade das linguagens, ferramentas emetodologiasProblemas gerenciais (pessoas, riscos, etc.),políticos, e organizacionais

9

Pouca comunicação entre o cliente e odesenvolvedorManutenção de software, geralmente não éconsiderada como parte do ciclo de software

Acidentes PODEM ser evitados!!!

Fatores de Qualidade de Software

Qualidade de software é uma combinação devários fatoresEstes fatores podem ser classificados em:

Fatores ExternosQualidades percebidas pelos usuários de um software

Usuários incluem: usuário final e aquela pessoa que

1010

Usuários incluem: usuário final e aquela pessoa quecontratou o desenvolvimento do softwareEx: corretude, eficiência, reusabilidade, etc

Fatores InternosQualidades percebidas somente por profissionais desoftware que têm acesso ao código do softwareEx: modularidade, legibilidade, etc

Alguns Fatores Externos

Corretude é a capacidade do software executar deforma correta todas as tarefas que foram pedidasnos requisitos e especificação do software

Robustez é a capacidade do software funcionar,mesmo em situações não previstas na especificação

É o complemento de corretude

11

Robustez

11

Especificação

Corretude

Alguns Fatores Externos

Extensibilidade é a facilidade em que o softwarepode ser alterado para que atenda novas exigênciasda especificação

Software está em constante mudança≈70% de custo do software é a fase de manutençãoMudanças de requisitos são responsáveis por ≈ 50% dasatividades de manutenção

1212

atividades de manutenção

Reusabilidade é a capacidade que o software temde ser usado em novas aplicações.

Este uso pode ser de partes do software ou dele todoGrande impacto no tempo de desenvolvimento de softwareMenor tempo de desenvolvimento é importante parasucesso do software

Alguns Fatores Externos

Eficiência é a capacidade do software de otimizar autilização dos recursos de hardware

Muitas vezes requer um bom conhecimento do hardwareonde o software será executadoPode tornar a implementação do software dependente demaisda plataforma alvo

1313

Facilidade de Uso é uma qualidade que diz respeito afacilidade com que usuários com diferentes perfisconseguem aprender a utilizar o software e resolver osproblemas desejados

Engloba também o aprendizado de instalação, operação emonitoramentoRepresenta economia para a empresa que utiliza o softwareem relação aos custos de treinamento

Outros Fatores Externos

PortabilidadeEscalabilidadeIntegridade e segurança

14

Integridade e segurançaCompatibilidadeFlexibilidadeTestabilidade

Alguns Fatores Internos

Um software é modular se ele é construído àpartir de elementos autônomos conectados

Modularidade � Reusabilidade e Extensibilidade

Legibilidade de um programa é a facilidade

1515

Legibilidade de um programa é a facilidadecom que profissionais de software conseguementender o código do programa

Documentação é importantePadrões de codificação devem ser seguidosLegibilidade � Reusabilidade e Extensibilidade

Algumas Considerações sobre Qualidade

Fatores internos �Fatores externosSoftwares são utilizados em aplicações dos maisdiversos domíniosFreqüentemente, não se pode obter todos os fatoresde qualidade

Diferentes fatores podem ser conflitantes

1616

Diferentes fatores podem ser conflitantesEx: Freqüentemente para aumentar a eficiência, código doprograma deve ser mais específico a uma plataforma, oque diminui a reusabilidade do código

Algumas Considerações sobre Qualidade

O que foi que aconteceu? Eu pisei no freio e ele demorou um século para ser acionado

Eu ouvi dizer que este sistema novo de controle de freio, pelo menos, é mais reusável

1717

Cabe ao desenvolvedor avaliar quais

fatores são mais importantes

de acordo com a aplicação

Comentando um Programa

Um programa deve ser bem documentadoDocumentação externa para usuáriosDocumentação no próprio programa

Aumenta a legibilidade

1818

Comentário é um mecanismo oferecido pelas linguagens de programação que permite que o programador expresse em linguagem natural a lógica pensada para escrever um programa ou

um trecho de programa

Comentando um Programa

Usa-se o termo inline documentation paracomentários em um programaDevem ser incluídos para explicar o propósitodo programa e algumas partes deleComentários não afetam o funcionamento do

1919

Comentários não afetam o funcionamento doprograma

São ignorados na hora da execução

Dica: Comente o código enquanto o estiver escrevendo, senão há uma forte probabilidade

de não o fazer depois

Comentários em Java

Há 3 formas de incluir comentários em Java:Comentários de uma linha

// Este é um comentário de uma linha

Precedido de //Precedido de //Precedido de //Precedido de //

Comentários de múltiplas linhasDeve estar entre /* */Deve estar entre /* */Deve estar entre /* */Deve estar entre /* */

2020

/* Este tipo de comentário só termina

quando o asterisco barra é encontrado */

Deve estar entre /* */Deve estar entre /* */Deve estar entre /* */Deve estar entre /* */

Comentários Javadoc

/** Isto é um comentário javadoc comment */

Deve estar entre /** */Deve estar entre /** */Deve estar entre /** */Deve estar entre /** */

Javadoc é uma ferramenta que gera documentação Javadoc é uma ferramenta que gera documentação Javadoc é uma ferramenta que gera documentação Javadoc é uma ferramenta que gera documentação externaexternaexternaexterna

Reuso de Código

Reusabilidade é um fator importante paraacelerar o desenvolvimento de um sistemaOO é uma metodologia que facilita o reusoReuso pode se dar de várias formas:

Classe inteira

2121

Classe inteiraUma classe é cliente de outra

Alguns atributos e/ou métodosTrechos de programa ou métodos

Reuso de Código

Existem muitas técnicas existentes parareutilizar código ou pelo menos aumentar opotencial de reusoUma “técnica” infelizmente muito difundida é ocopy & paste

2222

Solução rápida e “boa” para quem não quer pensarSolução péssima para a manutenção do sistema

Se uma alteração for requerida, esta também deverá serpropagada por todos os trechos repetidosSe um bug for encontrado, terá de ser corrigido em todosos outros códigos repetidos

Melhor do que isto é usar Refactoring

Refactoring

Refactoring consiste em uma série detécnicas que reestruturam o código dosoftware, aumentando o potencial de reuso,extensibilidade e legibilidade

O comportamento do software continua o

2323

O comportamento do software continua omesmo, só muda a estruturaEx: especialização com subclasses, extractmethod, rename, generalização comparâmetros, inline method, etc

Exemplo de Refactoring: Especialização

Especializando com SubclassesComportamento

objetos da subclasse comportam-secomo os objetos da superclasse

Reuso de Código

2424

Reuso de Códigoa descrição da superclasse pode serusada para definir a subclasse

Extensibilidadealgumas operações da superclasse

podem ser redefinidas na subclasse

Exemplo de Refactoring: Especialização

Em Java, utilizamos a palavra reservadaextends para informar que uma classe ésubclasse da outra

public class MySubclass extends MyClass

2525

Mecanismo para definição de herança esubtipos

Erros Dinâmicos

Erros que acontecem em tempo de execução,geralmente são mais difíceis de depurar do que errosestáticosAlguns possíveis erros

Tenta-se manipular algum arquivo que não existaEstouro de memória

26

Estouro de memóriaDivisão por zeroManipular uma referência NULA

NullPointerException

A referência obtida pode ser null

Não está associada a nenhum objetoO método não pode ser executadoÉ levantada a exceção NullPointerException de JavaNullPointerException de Java

Muito cuidado! Isso não deve acontecer!

Depurando Erros Dinâmicos

Java possui mecanismos que facilitam tratar esteserros (exceções)IDEs existentes dão um bom suporte para depurarestes tipos de erros

Integram depuradores (debuggers)Permitem inspecionar linha por linha do programa

28

Permitem inspecionar linha por linha do programaOutra forma, freqüentemente utilizada, é comentarpartes do código para isolar (detectar onde está oerro)

Se ao comentar uma parte de código, o programapassa a funcionar normalmente, consegue-sereduzir o espaço de código a ser depurado

Resumindo ...

Fatores de qualidade de softwareFatores de qualidade externos

Fatores de qualidade internos

Técnicas para melhorar alguns fatores de qualidade deum programa

Comentários

2929

Comentários

Refactoring

Depuração de erros dinâmicos

Erros dinâmicos

Depuração com comentários