180 likes | 272 Views
x <-- findmax(s, n) = PRE n : 1..MAXINT-1 & s : seq(MININT..MAXINT) & size(s) >= n THEN ANY y WHERE y : 1..n & !z.(z : 1..n => s(y) >= s(z)) THEN x := y END END. #include <iostream> #include <stdlib.h> using namespace std; int main() { int k, m ;
E N D
x <-- findmax(s, n) = PRE n : 1..MAXINT-1 & s : seq(MININT..MAXINT) & size(s) >= n THEN ANY y WHERE y : 1..n & !z.(z : 1..n => s(y) >= s(z)) THEN x := y END END • #include <iostream> • #include <stdlib.h> • using namespace std; • int main() • { • int k, m ; • cout << "A 2*x+3 fuggveny ertekeinek az osszege m-tol, k-darab\n" ; • cout << "az m erteke: "; cin >> m; cout << "a k erteke: "; cin >> k; • int sum = 0; • for (int i=m; i<=m+k; i++){ • sum += 2*i+3; • } • cout << "\nA 2*x+3 fuggveny ertekek osszege " << m << "-tol " << k << "-darab: " << sum << "\n"; • return 0; • } „…hogy ne robbanjon fel…” Neumann Nap 2005 ELTE-IK-PSZT Dr. Istenes Zoltán ANY u WHERE u : seq(MININT..MAXINT) & size(u) = size(s) & #f.(f : 1..size(s) >->> 1..size(s) & !j.(j : 1..size(s) => s(f(j)) = u(j))) & !i.(i : 1..size(s)-1 => u(i) <= u(i + 1)) THEN t := u END
Csak egy kis C++ program…(1) #include <iostream> #include <stdlib.h> using namespace std; int main() { int k, m, sum ; cout << "A 2*x+3 fv. értékeinek az összege m-tól, k-darab"; cout << "m erteke: "; cin >> m; cout << "k erteke: "; cin >> k; for (int i=m; i<=m+k; i++){ sum += 2*i+3;} cout << "A 2*x+3 fv. értékek összege " << m << "-tól " << m+k << "-ig: " << sum return 0;} első teszteléskor kiderül, „csak elfelejtettük”… sum = 0; szemantikai hiba, „mindenki tudja”… ; fordító jelzi, szintaktikai hiba
Csak egy kis C++ program…(2) #include <iostream> #include <stdlib.h> using namespace std; int main() { int k, m , sum=0 ; cout << "A 2*x+3 fv. értékeinek az összege m-tól, k-darab"; cout << "m erteke: "; cin >> m; cout << "k erteke: "; cin >> k; for (int i=m; i!=m+k; i++){ sum += 2*i+3;} cout << "A 2*x+3 fv. értékek összege " << m << "-tól " << k << " darab: " << sum; return 0;}
„Ha egy változó túlcsordul…” e) At 36.7 seconds after H0 (approx. 30 seconds after lift-off) the computer within the back-up inertial reference system, which was working on stand-by for guidance and attitude control, became inoperative. This was caused by an internal variable related to the horizontal velocity of the launcher exceeding a limit which existed in the software of this computer. ARIANE 5 - Flight 501 Failure - Report by the Inquiry Board for (int i=m; i!=m+k; i++){ sum += 2*i+3;}
B módszer (the B method) komplett fejlesztőeszközök, B specifikációkat szerkeszteni, ellenőrizni, bizonyítandó tételeket készíteni és azokat bizonyítani lehet velük. B-Toolkit / Atelier-B van formális szintaktikája és formális szemantikája kifejezhetőek a különféle tulajdonságok és feltételek, bemutathatóak azok bizonyítása illetve működése formális "A B egy módszer szoftverrendszerek tervezésére és megvalósítására" J.R. Abrial
Bizonyítások „láncolata”… Absztrakt gép specifikáció Egy szinten belüli „koherencia” Finomítás 1. Finomítás ... Finomítás n. „megfelelés” az előző szintnek Megvalósítás C/Java forráskód
implementáció specifikáció
„Halmaz, típus, helyettesítés” INVARIANT beir TAN INITIALISATION beir:= OPERATIONS kiirat(diak)= PRE diakbeir THEN beir:=beir-{diak} END; Az invariánst „megőrzi” az inicializálás… [beir:= ]beir TAN TAN A művelet „formális” definiciója: [PRE P THEN G END] Q P [G] Q Az invariánst „megőrzi” a művelet… beir TAN diak beir [PRE diak beir THEN beir:=beir-{diak} END]beir TAN beir TAN diak beir diak beir [beir:=beir-{diak}]beir TAN beir TAN diak beir [beir:=beir-{diak}]beir TAN beir TAN diak beir beir-{diak} TAN
B módszer alkalmazása Párizsi metro 14-es vonal program által irányított… félformális és formális módszerek rendszer modellezés UML tervminták „Formális módszerek a szoftvertechnológiában” 100.000 sor B specifikáció 87.000 sor ADA kód 28.000 bizonyított tétel
Összefoglalás igény a „nagy” és „biztonságos” informatikai rendszerek iránt formális eszközök/módszerek szükségesek a biztonságkritikus és a bizonyíthatóan helyes rendszerek tervezésekor B módszer formális módszerek alkalmazása The B method : http://vl.fmnet.info/b/ A tárgy weboldala : http://quasar.inf.elte.hu/oktatas/formalis Az előadás : http://quasar.inf.elte.hu/egyeb/rendezvenyek/neumann_nap_2005