A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Run Time Safety Checking MO828 – Tópicos em Engenharia de Software II Profa. Eliane Martins.

Apresentações semelhantes


Apresentação em tema: "Run Time Safety Checking MO828 – Tópicos em Engenharia de Software II Profa. Eliane Martins."— Transcrição da apresentação:

1 Run Time Safety Checking MO828 – Tópicos em Engenharia de Software II Profa. Eliane Martins

2 Safety Assurance Safety x Reliability: validação consiste de processos diferentes Reliability: há formas quantitativas para medir Safety: não há formas diretas para medição Importância do processo: garante o nível de safety

3 Validando Safety Provas de corretude de código: código atende especificação de safety esforço e custos altos Alternativa: garantir que, em execução, o programa não entra em um estado inseguro conhecido pré-condições do estado inseguro não devem ser atendidas pelas pós-condições das rotinas

4 Exemplo: Insulin Pump

5 static void administerInsulin ( ) throws SafetyException { int maxIncrements = InsulinPump.maxDose / 8 ; int increments = InsulinPump.currentDose / 8 ; // currentDose <= InsulinPump.maxDose if (InsulinPump.currentDose > InsulinPump.maxDose) throw new SafetyException (Pump.doseHigh); else for (int i=1; i<= increments; i++){ generateSignal () ; if (i > maxIncrements) throw new SafetyException (Pump.incorrectIncrements); } // for loop } //administerInsulin

6 JAVA: comando assert assert Expressao1 [: Expressao2]; Se Expressao1 for verdadeiro, segue a execução Se Expressao1 for falso, lança um AssertionError Expressao2 (opcional) é passado para o construtor do AssertionError

7 JAVA: comando assert Uso: pré e pós condições, invariantes e salvaguardas Asserções presentes no código podem ser ligadas e desligadas javac -source 1.4 MyClass.java java [-enableassertions | -ea:...] [classname]

8 JAVA: comando assert static void administerInsulin ( ) { int maxIncrements = InsulinPump.maxDose / 8 ; int increments = InsulinPump.currentDose / 8 ; assert currentDose <= InsulinPump.maxDose : Pump.doseHigh; for (int i=1; i<= increments; i++){ generateSignal () ; assert i<= maxIncrements : Pump.incorrectIncrements; } // for loop } //administerInsulin

9 Referências SOMMERVILLE, Ian - Software Engineering, chapter 21.4, 6th edition, Addison-Wesley, 2001 Programming with Assertions http://java.sun.com/j2se/1.4/docs/guide/lang /assert.html GRIES, David - The Science of Programming, Spring Verlag, 1981

10 Perguntas? ? Obrigado! rodrigo.tomita@ic.unicamp.br


Carregar ppt "Run Time Safety Checking MO828 – Tópicos em Engenharia de Software II Profa. Eliane Martins."

Apresentações semelhantes


Anúncios Google