A liberdade e a flexibilidade dada pelas API´s

advertisement
UNIVERSIDADE FEDERAL DE SANTA CATARINA
DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA
CURSO DE CIÊNCIAS DA COMPUTAÇÃO
Proposta de Projeto
Programação Concorrente Segura em
Java
Autor
João Vitor Mallmann
Florianópolis, 07 de Abril de 2006
Programação Concorrente Segura em Java
__________________________________
João Vitor Mallmann
(Autor)
__________________________________
José Mazzucco Junior
(Orientador)
1. Tema
A criação de sistemas em tempo real esta cada vez mais em evidencia, sendo
necessário para isso a utilização de softwares que possam agir de forma concorrente,
utilizando-se do conceito de threads pra conseguir tal artifício.
Com a liberdade e a flexibilidade dada pelas API´s (application programming
interfaces), a geração de aplicações utilizando processamento multithread ficou
simplificado, resultando em sistemas defeituosos, devido ao perigo da ocorrência de
condições indesejadas, tais como corridas de hazards, deadlock, livelock e starvation
(negação de serviços infinita).
Desta forma, deve se tomar cuidado com cada tipo de sincronismo utilizado nas
threads dentro da construção de uma aplicação, utilizando uma variedade de regras,
normas e padrões de projeto.
2. Limitações do tema
No trabalho a ser desenvolvido será o usado o pacote de Communicating Threads
for Java (CTJ), threads que se comunicam em Java, que implementa o modelo CSP em
Java, que inclui padrões de threads muito mais simples e confiáveis que o modelo das
threads de Java. O pacote CTJ fornece um pequeno conjunto de padrões de projeto que
é suficiente para programação concorrente em Java. Um importante avanço do CTJ é
que o programador pode usar um grande conjunto de regras para eliminar os hazardas,
deadlocks, livelock, starvation etc. durante o projeto e implementação.
A teoria de processos seqüenciais de comunicação (Communicating Sequential
Processes - CSP) oferece uma notação matemática pra descrever padrões de
comunicação por expressões algébricas e contem evidencias formais para análise,
verificando e eliminando as condições indesejáveis na utilização de threads. Esse
modelo foi provado bem-sucedido para criação de softwares concorrentes para tempo
real e sistemas embarcados.
3. Objetivo geral
Estudar a ferramenta existente que faz a verificação e validação do código de
programas feitos utilizando CSP. Analisar passo a passo as verificações que o programa
faz, verificando se respeita as condições impostas pela teoria de CSP, que eliminam os
problemas comuns da utilização de threads, elaborando um manual de utilização.
Desenvolver algum sistema clássico, jantar dos filósofos por exemplo, utilizando a
teoria de CSP, verificando manualmente e com o programa de validação, se os
resultados obtidos serão os mesmos e estarão de acordo com a teoria. Elaborando uma
documentação sobre a utilização da teoria CSP em Java.
4. Motivação
Devido a grande disseminação da linguagem Java, e sua vasta área de atuação,
verificar se a utilização do pacote CTJ, que implementa a teoria de CSP, elimina o
grande problema na utilização de múltiplas threads, que é a geração de hazardas,
deadlocks, livelock, starvation etc.
Pretendendo difundir a teoria de CSP, sua funcionalidade na pratica, e os custos para
a sua utilização na resolução de problemas computacionais.
5. Problema
O problema abordado nesse trabalho é a eliminação das condições indesejadas
geradas pela utilização de programação multithread. Tais condições são o principal fator
do aumento da complexidade na escrita de códigos que utilizam threads.
6. Desenvolvimento do trabalho
Pesquisa e buscas de referências na literatura para o estudo da teoria de CSP, de
Charles Antony Richard Hoare.
Pesquisa e busca de referências na literatura para o estudo do pacote CTJ
(Communicating Threads for Java).
Desenvolvimento de uma aplicação utilizando o pacote CTJ, para comparações com
códigos que utilizam multithread em Java, e verificação da aplicação com o programa
validador, excluindo a existência de condições indesejáveis no código.
Elaboração de manuais de utilização do pacote CTJ e de seu programa validador.
7. Referências bibliográficas
1. C. A. R. Hoare, "A theory of CSP," Commun. ACM, vol. 21, no. 8, Aug. 1978.
2. Gerald Hiderink, Jan Broenink and André Bakkers, Communicating Threads for
Java, DRAFT, REV. 5, October 2000.
Download