Tradução da especificação SCJ para linguagem de programação C++
Resumo
Sistemas críticos são sistemas em que suas falhas podem causar danos irreparáveis
como colocar a vida de pessoas em risco e por este motivo envolve questões de segurança e
exige uma validação rigorosa no processo de certificação. Processos de certificação são caros
e demorados que seguem leis e regras rigorosas. Com a evolução contínua proporcionada
por linguagens de programação de propósito geral, a facilidade de aprendizado, assim como
a utilização destas linguagens na indústria e acadêmia, pesquisas vem sendo realizadas com o
intuito de adaptar linguagens de programação de propósito gerais para serem utilizadas em aplicações
críticas de tempo real. O objetivo destas adaptações é de tornar o escopo de comandos
das linguagens para desenvolvimento de sistemas críticos mais restritos, como por exemplo,
ao evitar ou reduzir a utilização de recursões. Alguns exemplos dessas adaptações são a Especificação
de Tempo Real Java (Real Time Specification for Java - RTSJ) desenvolvida no ano
de 1998, e a Safety Critical Java (SCJ) que utiliza objetos e conceitos definidos pela RTSJ
com enfoque no desenvolvimento de aplicações para sistemas críticos. Na SCJ foi implementado
o conceito de missões onde cada missão é composto por objetos escalonáveis definidos
pela RTSJ. A portabilidade de uma aplicação desenvolvida em Java é um dos principais fatores
dos quais desenvolvedores desejam utilizá-la. Todavia, existe uma grande dificuldade de
encontrar máquinas virtuais para sistemas críticos embarcados, dificultando a portabilidade da
qual a linguagem Java fornece. Por outro lado, uma aplicação desenvolvida na linguagem de
programação C++ pode ser executada diretamente no dispositivo sem a necessidade de utilizar
uma máquina virtual. Por este motivo, nesta dissertação é apresentada uma tradução da especificação
Safety Critical Java na linguagem de programação C++, com o objetivo de manter o
comportamentos de uma aplicação desenvolvida em SCJ e assim possibilitando a execução de
uma aplicação com requisitos temporais em diversos dispositivos embarcados.