testes de programas concorrentes
Ducenilde Garcias²
Erick Sousa²
Luan Oliveira²
Marcos Freitas2
Wener Sampaio3
RELATÓRIO
Programas concorrentes também conhecidos como programas paralelos consistem em dividir uma aplicação em partes menores para serem executadas por diversos elementos de processamentos, mas precisam interagir entre si para obter um resultado correto.
Programas paralelos são compostos por processos ou threads. Processos são módulos executáveis unicamente, que correm concorrentemente com outros módulos que também estão sendo executados. Os threads por sua vez podem ser executados dentro de um único processo. Então threads é uma forma de um processo dividir a si mesmo em duas ou mais tarefas que podem ser executadas concorrentemente.
A programação concorrente é uma generalização da programação paralela, pois relaxa a necessidade de haver diversos elementos de processamento. Exclusivamente a programação concorrente pode executar em plataformas sequenciais. Antes de serem executados deve se considerar as plataformas a serem executadas durante o desenvolvimento dos programas.
As plataformas paralelas podem ser classificadas combase nos diferentes fluxos (streams) existentes em umsistema computacional. Um fluxo pode ser uma sequência de objetos (por ex. dados) ou de ações (por ex. instruções).Com base nisso, Flynn e Rudd (1996) propõem quatroclasses de arquiteturas paralelas.
✔SISD (Single Instruction, Single Data stream) – São os uniprocessadores.
✔SIMD (Single Instruction, Multiple Data stream) – Processadores Vetoriais.
✔MISD (Multiple Instruction, Single Data stream) –
✔MIMD (Multiple Instruction, Multiple Data stream) – Multicomputadores.
Segundo Taylor et al. (1992) os testes de programas concorrentes apresentam uma das primeiras propostas para a adaptação de técnicas de teste estrutural para aplicação em programas concorrentes. Nessa proposta, é utiliza o grafo de concorrência (ou grafo de alcançabilidade - Reachability