Erori in interpretorul limbajului sail daniel Cioata



Yüklə 476 b.
tarix30.10.2017
ölçüsü476 b.
#21991


Erori in interpretorul limbajului SAIL

  • Daniel Cioata


Despre…

  • LRG

    • din 1999 se ocupa cu inspectia codului programelor
    • principalul scop: calitatea proiectarii programelor orientate pe obiecte
    • tehnici si metode de analiza statica
      • implementate intr-o larga varietate de limbaje
    • in 2002 s-a definit limbajul SAIL
  • SAIL

      • se lucreaza si in prezent
      • doreste sa unifice modalitatile de exprimare ale diferitelor metode inrudite de analiza statica
      • usurinta programarii prin similaritate cu alte limbaje existente (Java, Sql)




Erori in implementarea limbajului SAIL !

  • Interpretorul SAIL este inca imatur

  • Va suferi modificari in intervalul de timp urmator

      • exemplu : refactorizarea pentru o mai buna performanta de timp
  • Initial interpretorul nu dispunea de nici un test

      • orice modificare facuta putea afecta corectitudinea interpretorului
      • eroarea nu putea fi depistata imediat dupa aparitia ei
  • Am realizat o suita de teste pentru eventualele erori

    • Teste impartite pe categorii in functie de tematica


Principalele categorii de teste

  • Operatii asupra tipurilor elementare

  • Operatii asupra tipurilor compuse

      • lucrul cu structuri
      • lucrul cu colectii
  • Lucrul cu instructiunile limbajului

      • select


Operatii asupra tipurilor elementare

  • Tipurile int si real

    • operatii primitive: adunare, scadere, inmultire, impartire
    • respectarea prioritatii intre operatiile primitive
    • testarea unei atribuiri
  • Tipul boolean

    • operatii logice: si, sau
    • instructiunea if
    • atribuire
    • condition = ((age>25) && (redHat==true));
  • Tipul string

    • respectarea ordonarii sirurilor: “abc”<“abd”
    • operatia de concatenare a sirurilor:
    • sir = “Unu”+”Doi”;
    • … rezultatul era sirul vid


Tipuri compuse: Structuri

  • Doua metode de abordare:

  • Operatii de baza:

    • initializarea automata cu valori predefinite
    • listarea unei structuri
    • compararea a 2 structuri
    • referintele nu erau retinute corect:
    • firstAddress = setAddress("Aleea Zambilelor",2,10);
    • secondAddress = setAddress("Aleea Macului",3,2);
    • firstPerson = setPerson(“Dani",21,false,firstAddress);
    • secondPerson = setPerson(“Adi",34,true,secondAddress);
    • output firstPerson ( Adi, 34, true,(Aleea Macului,3,2))
    • output secondPerson( Adi, 34, true,(Aleea Macului,3,2))
  • Accesarea campurilor unei structuri:

    • folosirea operatorului punct pentru a accesa campurile
    • compararea campurilor a doua structuri


Tipuri compuse: Colectii

  • Sunt foarte folosite in SAIL

  • Doua cai de testare:

      • operatii de baza
      • operatii specifice
  • Operatii de baza:

    • creare
    • uniune, intersectie, diferenta
    • iterare
  • Operatii specifice colectiilor:

    • compararea colectiilor
    • aflarea numarului de elemente
    • produsul cartezian, operatie specifica SAIL
    • prodCart = select (*) from cart(Colectia1,Colectia2);
    • …prodCart nu continea toate aranjamentele dintre cele doua colectii date ca parametru


Lucrul cu instructiunile limbajului

  • Principalele instructiuni:

      • iterate
        • iterate (man,iterator) {
        • manNames=manNames+iterator.name;
        • }
      • select
        • specificarea unor campuri pentru selectare
        • secondMan=select (name, age, hasJob) from man;
        • selectarea unor elemente dintr-o colectie cu filtru
        • wom=select (*) from woman where Fiter(age,29);
      • if/else
        • if (firstPerson.name==“Dani”) {
        • output firstPerson;
        • }
        • else { output “Eroare !” }


Lucrul cu functii

  • Testarea functiilor

      • definire
      • apel
      • structura de baza a unei functii
      • valoarea returnata, transmiterea de parametri
      • overloading
      • referintele nu erau retinute corect


Specificatii corecte ?

  • Comparatia dintre elementele unei structuri se refera la valorile lor si nu la identitatea lor fizica

  • In urma testelor a rezultat ca comparatia se face prin referinta !

  • Produsul cartezian dintre o colectie si ea insasi nu este posibil

  • Person[] col1,col2;

  • . . . . .

  • col1=col2;

  • cartCol=select (*) from cart(col1,col2);



Concluzii si dezvoltari ulterioare

  • Test – un program SAIL

      • usor de inteles
      • ruleaza rapid
      • nu este necesara prezenta unui mediu special
      • Au fost depistate erori de implementare
      • In urma modificarilor viitoare aspura interpretorului limbajului SAIL, dupa aplicarea testelor, se pot identifica imediat eventualele erori aparute
  • 2 tipuri de testare

  • testarea functionala dublata de testarea automatizata



Intrebari, va rog...




Yüklə 476 b.

Dostları ilə paylaş:




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2022
rəhbərliyinə müraciət

    Ana səhifə