12.07.2015 Views

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

SHOW MORE
SHOW LESS

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 5. <strong>JCML</strong> - JAVA CARD MODELING LANGUAGE 87Figura 5.6: Estrutura para Geração de Código wrapper.5.2.1 Abordagem wrapper para <strong>JCML</strong>cSeja uma classe com um conjunto de predicados P 1 ..P n , os quais representam as propriedadesda especificação, pré-condição, pós-condição ou invariante. Primeiro, as propriedadessão transformadas em um único predicado, como por exemplo, P ≡ P 1 ∧P 2 ∧ P 3 ∧ P n , depois, são gerados os métodos de verificação. Os predicados de umapré-condição serão transformados em métodos de verificação de pré-condição, o mesmoocorrendo para as demais construções. As contruções para invariante geram métodosde verificação de invariante. Os predicados de construções diferentes geram métodos deverificação diferentes.Semelhante ao JMLc, um método wrapper tem o mesmo nome e assinatura do métodooriginal. O método wrapper chama os métodos para checar o invariante ou pré-condiçãoe depois executa o método original. A Figura 5.6 apresenta a estrutura da classe após acompilação do código com <strong>JCML</strong>c. Os predicados da especificação são transformadosem código <strong>Java</strong> <strong>Card</strong> e inseridos no código original. São gerados métodos de verificaçãoe os respectivos comandos para execução desses métodos. Como a abordagem utilizadapelo compilador JML é uma abordagem na qual são criadas funções de verificação, nãofoi utilizada a abordagem de geração de código e verificação in-line.Um método verificador de pré-condição checa as propriedades definidas na especificação.Caso uma das propriedades de pré-condição seja violada, uma exceção de précondiçãoé lançada. Seja m um método declarado na classe C com assinatura T 0 m(T 1 a 1 ,T 2 a 2 , .. , T n a n ), assume-se que m pode lançar uma exceção do tipo RequiresException,

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!