Paw 2
Abstração
Abstração é a habilidade de concentrar nos aspectos essenciais de um contexto qualquer, ignorando características menos importantes ou acidentais. Em modelagem orientada a objetos, uma classe é uma abstração de entidades existentes no domínio do sistema de software.
Uma classe abstrata é desenvolvida para representar entidades e conceitos abstratos. A classe abstrata é sempre uma superclasse que não possui instâncias. Ela define um modelo (template) para uma funcionalidade e fornece uma implementação incompleta - a parte genérica dessa funcionalidade - que é compartilhada por um grupo de classes derivadas. Cada uma das classes derivadas, completa a funcionalidade da classe abstrata adicionando um comportamento específico.
Resumindo trata-se de um conceito fundamental para conseguir uma boa modularização. A abstração é fundamental para o raciocínio e resolução de problemas, devemos nos importar com os aspectos relevantes do problema em questão. Em programas bem modularizados, cada modulo representa uma abstração existente no contexto do problema.Essa técnica é empregada em sua forma mais simples por funções e procedimentos parametrizados, criando funções genéricas onde resolvem um subproblema.
Testes de Programação
Teste de software é o processo de executar um sistema de maneira controlada, a fim de revelar seus defeitos e avaliar sua qualidade. Um teste unitário consiste em testar unidades individuais de uma aplicação a fim de descobrir defeitos nas mesmas. O nível de abstração destas unidades depende muito do tipo de sistema sendo desenvolvido. O processo de teste unitário deve envolver as seguintes atividades: Planejamento, Especificação e Projeto dos casos de teste, Preparação do código auxiliar e Execução propriamente dita.
Sistemas de software estão sujeitos à constante evolução, bem como as tecnologias sobre as quais eles são construídos. No entanto, faltam métodos e técnicas apropriados