JCML - Java Card Modeling Language: Definição e ... - Ifrn
JCML - Java Card Modeling Language: Definição e ... - Ifrn
JCML - Java Card Modeling Language: Definição e ... - Ifrn
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
CAPÍTULO 4. APLICABILIDADE DE JML A JAVA CARD 7201 private void checkPre$Nome_Metodo$Nome_Classe(byte x)02 throws RequiresException03 {04 if(!(x > 0))05 RequiresException.throwIt(RequiresException.SW_REQUIRES_ERROR);06 }Figura 4.11: Condições para geração de código• Não gerar métodos de verificação para especificações vazias. Por exemplo, se umaclasse não contém especificação para o invariante, o método de checagem de invariantenão deve ser gerado. Da mesma forma, o método wrapper não deve incluir achamada a este método, onde há intenção de verificar a satisfação do invariante.• Não gerar e chamar métodos de verificação para especificações definidas como true.• Se a especificação a ser checada é expressa apenas em termos de expressões puramente<strong>Java</strong>, então, o código de verificação usado deve ser um condicional, negandoa expressão. Por exemplo, uma pré-condição do tipo x > 0, na qual x é o parâmetrodo método, o método a ser gerado é definido como na Figura 4.11.• O usuário pode escolher o que deve ser gerado para verificação no cartão. Por exemplo,se apenas a pré-condição for escolhida, então, nenhum método de verificaçãopara invariante ou pós-condição será gerado.• Se a especificação não for satisfeita durante a execução, uma exceção, que herda daclasse <strong>Card</strong>RuntimeException, é lançada.4.4 ConclusãoEste capítulo analisou a aplicação de especificação JML em <strong>Java</strong> <strong>Card</strong>, mostrando imcompatibilidadesreferentes à linguagem e ao compilador JML. O objetivo principal nestaanálise foi mostrar que a estrutura atual do JML não é compatível com o ambiente <strong>Java</strong><strong>Card</strong> no âmbito da verificação em tempo de execução. Isso ocorre pois componentes decódigo gerado pelo compilador JML não estão definidos no ambiente de execução <strong>Java</strong><strong>Card</strong>.Devido às restrições da JML e ao tipo de código gerado por seu compilador, se fez