Copyright © Jerzy R. Nawrocki Metody formalne Inżynieria oprogramowania II Wykład 5
J.Nawrocki, Metody formalne Jakość oprogramowania Jakość = zgodność z wymaganiami Philip Crosby (1926 – 2001)
J.Nawrocki, Metody formalne Jakość oprogramowania Jakość projektu (wymagania a projekt) Jakość wykonania (projekt a implementacja)
J.Nawrocki, Metody formalne Cztery filary zapewniania jakości RefaktoryzacjaTestowanie Zarz. konfiguracjąPrzeglądy Jakość oprogramowania
J.Nawrocki, Metody formalne Słabości testowania Testowaniem nie można wykazać braku błędów, można w ten sposób jedynie wykazać ich obecność. Powiedzenie Dijkstry
J.Nawrocki, Metody formalne Dowodzenie poprawności programów C.A.R. Hoare Urodzony: : Filologia klasyczna : Rosyjski (Royal Navy) 1959: Statystyka + program : Moskwa, translacja 1960: Quicksort 1960: Elliott Brothers, Algol : Prof., Belfast 1977: Oxford 1980: ACM Turing Award
J.Nawrocki, Metody formalne Dowodzenie poprawności programów C.A.R. Hoare Hipoteza Hoarea: Dowodzenie programów rozwiązuje problemy poprawności, dokumentacji i kompatybilności. P {Q} R X=n {Y:=silnia(X)} Y=n! ANNA= Annotated Ada
J.Nawrocki, Metody formalne Podejścia do specyfikacji formalnej Metody formalne ModeloweModeloweAksjomatyczneAksjomatyczne Imperatywne DeklaratywneDeklaratywne AlgebraiczneAlgebraiczne
J.Nawrocki, Metody formalne Podejścia do specyfikacji formalnej Metody formalne Model-basedModel-based AxiomaticAxiomatic ImperativeImperative DeclarativeDeclarative AlgebraicAlgebraic
J.Nawrocki, Metody formalne Plan wykładu Formal Methods Model-basedModel-based AxiomaticAxiomatic ImperativeImperative DeclarativeDeclarative AlgebraicAlgebraic Specyfikacje aksjomatyczne Implementacje niestandardowe Specyfikacje bazujące na modelu Sieci Petriego
J.Nawrocki, Metody formalne Plan wykładu Formal Methods Model-basedModel-based AxiomaticAxiomatic ImperativeImperative DeclarativeDeclarative AlgebraicAlgebraic Specyfikacje aksjomatyczne Implementacje niestandardowe Specyfikacje bazujące na modelu Sieci Petriego
J.Nawrocki, Metody formalne Specyfikacje aksjomatyczne scheme DIRECTORY = class type Name, PhoneNo, Dir value empty: Dir, add: Name x PhoneNo x Dir Dir, lookup: Name x Dir PhoneNo, delete: Name x Dir Dir scheme DIRECTORY = class type Name, PhoneNo, Dir value empty: Dir, add: Name x PhoneNo x Dir Dir, lookup: Name x Dir PhoneNo, delete: Name x Dir Dir axiom forall name, name1: Name, t: PhoneNo, d: Dir delete (name, empty) empty delete (name, empty) empty delete (name, add(name1, t, d)) delete (name, add(name1, t, d)) if name = name1 if name = name1 then delete (name, d) then delete (name, d) else add (name1, t, delete (name, d)) else add (name1, t, delete (name, d)) end end axiom forall name, name1: Name, t: PhoneNo, d: Dir delete (name, empty) empty delete (name, empty) empty delete (name, add(name1, t, d)) delete (name, add(name1, t, d)) if name = name1 if name = name1 then delete (name, d) then delete (name, d) else add (name1, t, delete (name, d)) else add (name1, t, delete (name, d)) end end Nie d ?
J.Nawrocki, Metody formalne Specyfikacje aksjomatyczne axiom forall name, name1: Name, t: PhoneNo, d: Dir lookup (name, add(name1, t, d)) lookup (name, add(name1, t, d)) if name = name1 then t if name = name1 then t else lookup (name, d) else lookup (name, d) end end pre name = name1 name d pre name = name1 name d axiom forall name, name1: Name, t: PhoneNo, d: Dir lookup (name, add(name1, t, d)) lookup (name, add(name1, t, d)) if name = name1 then t if name = name1 then t else lookup (name, d) else lookup (name, d) end end pre name = name1 name d pre name = name1 name d scheme DIRECTORY = class type Name, PhoneNo, Dir value empty: Dir, add: Name x PhoneNo x Dir Dir, lookup: Name x Dir PhoneNo, delete: Name x Dir Dir scheme DIRECTORY = class type Name, PhoneNo, Dir value empty: Dir, add: Name x PhoneNo x Dir Dir, lookup: Name x Dir PhoneNo, delete: Name x Dir Dir
J.Nawrocki, Metody formalne Plan wykładu Formal Methods Model-basedModel-based AxiomaticAxiomatic ImperativeImperative DeclarativeDeclarative AlgebraicAlgebraic Specyfikacje aksjomatyczne Implementacje niestandardowe Specyfikacje bazujące na modelu Sieci Petriego
J.Nawrocki, Metody formalne Implementacje niestandardowe type ext_nat_numbers is sorts nat opns 0 nat suc: nat nat _ + _ : nat, nat nat type ext_nat_numbers is sorts nat opns 0 nat suc: nat nat _ + _ : nat, nat nat eqns forall x,y ofsort nat x + 0 = x; x + 0 = x; x + succ(y) = succ(x+y); x + succ(y) = succ(x+y); eqns forall x,y ofsort nat x + 0 = x; x + 0 = x; x + succ(y) = succ(x+y); x + succ(y) = succ(x+y); int zero () int succ (int x) int plus (int x, int y) int zero () int succ (int x) int plus (int x, int y) x plus(x, zero())= x x plus(x, zero())= x x,y plus(x,succ(y))= succ(plus(x,y)) x,y plus(x,succ(y))= succ(plus(x,y)) x plus(x, zero())= x x plus(x, zero())= x x,y plus(x,succ(y))= succ(plus(x,y)) x,y plus(x,succ(y))= succ(plus(x,y)) Nasze oczekiwania: plus(2, 3)= 5 Nasze oczekiwania: plus(2, 3)= 5
J.Nawrocki, Metody formalne Implementacje niestandardowe int zero () int succ (int x) int plus (int x, int y) int zero () int succ (int x) int plus (int x, int y) x plus(x, zero())= x x plus(x, zero())= x x,y plus(x,succ(y))= succ(plus(x,y)) x,y plus(x,succ(y))= succ(plus(x,y)) x plus(x, zero())= x x plus(x, zero())= x x,y plus(x,succ(y))= succ(plus(x,y)) x,y plus(x,succ(y))= succ(plus(x,y)) Nasze oczekiwania: plus(2, 3)= 5 Nasze oczekiwania: plus(2, 3)= 5 int zero () { return 1; } { return 1; } int zero () { return 1; } { return 1; }
J.Nawrocki, Metody formalne Implementacje niestandardowe int zero () int succ (int x) int plus (int x, int y) int zero () int succ (int x) int plus (int x, int y) x plus(x, zero())= x x plus(x, zero())= x x,y plus(x,succ(y))= succ(plus(x,y)) x,y plus(x,succ(y))= succ(plus(x,y)) x plus(x, zero())= x x plus(x, zero())= x x,y plus(x,succ(y))= succ(plus(x,y)) x,y plus(x,succ(y))= succ(plus(x,y)) Nasze oczekiwania: plus(2, 3)= 5 Nasze oczekiwania: plus(2, 3)= 5 int zero () { return 1; } { return 1; } int zero () { return 1; } { return 1; } int succ (int x) { return 2*x; } { return 2*x; } int succ (int x) { return 2*x; } { return 2*x; }
J.Nawrocki, Metody formalne Implementacje niestandardowe int zero () int succ (int x) int plus (int x, int y) int zero () int succ (int x) int plus (int x, int y) x plus(x, zero())= x x plus(x, zero())= x x,y plus(x,succ(y))= succ(plus(x,y)) x,y plus(x,succ(y))= succ(plus(x,y)) x plus(x, zero())= x x plus(x, zero())= x x,y plus(x,succ(y))= succ(plus(x,y)) x,y plus(x,succ(y))= succ(plus(x,y)) Nasze oczekiwania: plus(2, 3)= 5 Nasze oczekiwania: plus(2, 3)= 5 int zero () { return 1; } { return 1; } int zero () { return 1; } { return 1; } int succ (int x) { return 2*x; } { return 2*x; } int succ (int x) { return 2*x; } { return 2*x; } int plus (int x, int y) { return x * y; } { return x * y; } int plus (int x, int y) { return x * y; } { return x * y; }
J.Nawrocki, Metody formalne Implementacje niestandardowe x plus(x, zero())= x x plus(x, zero())= x x,y plus(x,succ(y))= succ(plus(x,y)) x,y plus(x,succ(y))= succ(plus(x,y)) x plus(x, zero())= x x plus(x, zero())= x x,y plus(x,succ(y))= succ(plus(x,y)) x,y plus(x,succ(y))= succ(plus(x,y)) Nasze oczekiwania: plus(2, 3)= 5 Nasze oczekiwania: plus(2, 3)= 5 int zero () { return 1; } { return 1; } int zero () { return 1; } { return 1; } int succ (int x) { return 2*x; } { return 2*x; } int succ (int x) { return 2*x; } { return 2*x; } int plus (int x, int y) { return x * y; } { return x * y; } int plus (int x, int y) { return x * y; } { return x * y; }... ale plus(2,3)= 6 Implementacja spełnia warunki
J.Nawrocki, Metody formalne Plan wykładu Formal Methods Model-basedModel-based AxiomaticAxiomatic ImperativeImperative DeclarativeDeclarative AlgebraicAlgebraic Specyfikacje aksjomatyczne Implementacje niestandardowe Specyfikacje bazujące na modelu Sieci Petriego
J.Nawrocki, Metody formalne Specyfikacje bazujące na modelu Directory = Name TelephoneNo state telbook of dir: Directory end Directory = Name TelephoneNo state telbook of dir: Directory end INIT() ext wr dir: Directory; ext wr dir: Directory; post dir = {}; post dir = {};INIT() ext wr dir: Directory; ext wr dir: Directory; post dir = {}; post dir = {}; m
J.Nawrocki, Metody formalne Specyfikacje bazujące na modelu Directory = Name TelephoneNo state telbook of dir: Directory end Directory = Name TelephoneNo state telbook of dir: Directory end INIT() ext wr dir: Directory; ext wr dir: Directory; post dir = {}; post dir = {};INIT() ext wr dir: Directory; ext wr dir: Directory; post dir = {}; post dir = {}; ADD (name: Name, telno: TelephoneNo) ext wr dir: Directory; ext wr dir: Directory; post dir = dir {name telno}; post dir = dir {name telno}; ADD (name: Name, telno: TelephoneNo) ext wr dir: Directory; ext wr dir: Directory; post dir = dir {name telno}; post dir = dir {name telno}; m
J.Nawrocki, Metody formalne Specyfikacje bazujące na modelu Directory = Name TelephoneNo state telbook of dir: Directory end Directory = Name TelephoneNo state telbook of dir: Directory end INIT() ext wr dir: Directory; ext wr dir: Directory; post dir = {}; post dir = {};INIT() ext wr dir: Directory; ext wr dir: Directory; post dir = {}; post dir = {}; ADD (name: Name, telno: TelephoneNo) ext wr dir: Directory; ext wr dir: Directory; post dir = dir {name telno}; post dir = dir {name telno}; ADD (name: Name, telno: TelephoneNo) ext wr dir: Directory; ext wr dir: Directory; post dir = dir {name telno}; post dir = dir {name telno}; LOOKUP (name: Name) r: TelephoneNo ext rd dir: Directory; ext rd dir: Directory; pre name dom dir; pre name dom dir; post dir (name); post dir (name); LOOKUP (name: Name) r: TelephoneNo ext rd dir: Directory; ext rd dir: Directory; pre name dom dir; pre name dom dir; post dir (name); post dir (name); m
J.Nawrocki, Metody formalne Specyfikacje bazujące na modelu Directory = Name TelephoneNo state telbook of dir: Directory end Directory = Name TelephoneNo state telbook of dir: Directory end INIT() ext wr dir: Directory; ext wr dir: Directory; post dir = {}; post dir = {};INIT() ext wr dir: Directory; ext wr dir: Directory; post dir = {}; post dir = {}; ADD (name: Name, telno: TelephoneNo) ext wr dir: Directory; ext wr dir: Directory; post dir = dir {name telno}; post dir = dir {name telno}; ADD (name: Name, telno: TelephoneNo) ext wr dir: Directory; ext wr dir: Directory; post dir = dir {name telno}; post dir = dir {name telno}; LOOKUP (name: Name) r: TelephoneNo ext rd dir: Directory; ext rd dir: Directory; pre name dom dir; pre name dom dir; post dir (name); post dir (name); LOOKUP (name: Name) r: TelephoneNo ext rd dir: Directory; ext rd dir: Directory; pre name dom dir; pre name dom dir; post dir (name); post dir (name); DELETE (name: Name) ext wr dir: Directory; ext wr dir: Directory; post dir = {name} dir ; post dir = {name} dir ; DELETE (name: Name) ext wr dir: Directory; ext wr dir: Directory; post dir = {name} dir ; post dir = {name} dir ; m
J.Nawrocki, Metody formalne Plan wykładu Metody formalne Model-basedModel-based AxiomaticAxiomatic ImperativeImperative DeclarativeDeclarative AlgebraicAlgebraic Specyfikacje aksjomatyczne Implementacje niestandardowe Specyfikacje bazujące na modelu Sieci Petriego
J.Nawrocki, Metody formalne Carl Adam Petri Ur. 12 lipca 1926 w Lipsku Od 1988: Honorowy Prof. Uniwersytetu w Hamburgu Kommunikation mit Automaten. Petri, C.A., Bonn: Institut für Instrumentelle Mathematik, Schriften des IIM Nr. 2, 1962.
J.Nawrocki, Metody formalne Co to za gra?
J.Nawrocki, Metody formalne Co to za gra?
J.Nawrocki, Metody formalne Co to za gra?
J.Nawrocki, Metody formalne Co to za gra?
J.Nawrocki, Metody formalne Co to za gra?
J.Nawrocki, Metody formalne Co to za gra?
J.Nawrocki, Metody formalne Wprowadzenie Sieci Petriego: Notacja graficzna Dobra podstawa matematyczna Zastosowania : Modelowanie systemów współbieżnych i rozproszonych Protokoły komunikacyjne, sieci komputerowe, systemy produkcyjne, systemy transportu publicznego itp.
J.Nawrocki, Metody formalne TerminologiaMiejsce Przejście Znacznik Łuk wej. Łuk wyj.
J.Nawrocki, Metody formalne Bardzo prosty przykład waiting reading strt_reading stop_reading Czytelnik w bibliotece: czekanie, czytanie.
J.Nawrocki, Metody formalne Bardzo prosty przykład waiting reading strt_reading stop_reading Czytelnik w bibliotece: czekanie, czytanie.
J.Nawrocki, Metody formalne Bardzo prosty przykład waiting reading strt_reading stop_reading Czytelnik w bibliotece: czekanie, czytanie.
J.Nawrocki, Metody formalne Bardzo prosty przykład waiting reading strt_reading stop_reading Czytelnik w bibliotece: czekanie, czytanie.
J.Nawrocki, Metody formalne Bardzo prosty przykład waiting reading strt_reading stop_reading Czytelnik w bibliotece: czekanie, czytanie.
J.Nawrocki, Metody formalne waiting reading strt_reading stop_reading Inny prosty przykład Dwaj czytelnicy w czytelni: czekanie, czytanie.
J.Nawrocki, Metody formalne waiting reading strt_reading stop_reading Inny prosty przykład Dwaj czytelnicy w czytelni: czekanie, czytanie.
J.Nawrocki, Metody formalne waiting reading strt_reading stop_reading Inny prosty przykład Dwaj czytelnicy w czytelni: czekanie, czytanie.
J.Nawrocki, Metody formalne waiting reading strt_reading stop_reading Inny prosty przykład Dwaj czytelnicy w czytelni: czekanie, czytanie.
J.Nawrocki, Metody formalne Przejścia równoległe 2
J.Nawrocki, Metody formalne Przejścia równoległe 2
J.Nawrocki, Metody formalne Przejścia równoległe 2
J.Nawrocki, Metody formalne Przejścia konfliktowe
J.Nawrocki, Metody formalne Przejścia konfliktowe
J.Nawrocki, Metody formalne Przejścia konfliktowe Punkt decyzyjny
J.Nawrocki, Metody formalne Inny przykład while (true) { t 1 ;... t 2 ;... t 3 ; } while (.. t 4..) {... t 5 ;... } Klient Serwer
J.Nawrocki, Metody formalne Inny przykład while (1) { t 1 ;... t 2 ;... t 3 ; } while (..t 4..) {... t 5 ;... } t1t1 t2t2 t3t3 t4t4 t5t5
J.Nawrocki, Metody formalne Inny przykład while (1) { t 1 ;... t 2 ;... t 3 ; } while (..t 4..) {... t 5 ;... } t1t1 t2t2 t3t3 t4t4 t5t5
J.Nawrocki, Metody formalne Inny przykład while (1) { t 1 ;... t 2 ;... t 3 ; } while (..t 4..) {... t 5 ;... } t1t1 t2t2 t3t3 t4t4 t5t5
J.Nawrocki, Metody formalne Inny przykład while (1) { t 1 ;... t 2 ;... t 3 ; } while (..t 4..) {... t 5 ;... } t1t1 t2t2 t3t3 t4t4 t5t5
J.Nawrocki, Metody formalne Inny przykład while (1) { t 1 ;... t 2 ;... t 3 ; } while (..t 4..) {... t 5 ;... } t1t1 t2t2 t3t3 t4t4 t5t5
J.Nawrocki, Metody formalne Inny przykład while (1) { t 1 ;... t 2 ;... t 3 ; } while (..t 4..) {... t 5 ;... } t1t1 t2t2 t3t3 t4t4 t5t5
J.Nawrocki, Metody formalne Inny przykład while (1) { t 1 ;... t 2 ;... t 3 ; } while (..t 4..) {... t 5 ;... } t1t1 t2t2 t3t3 t4t4 t5t5
J.Nawrocki, Metody formalne Inny przykład while (1) { t 1 ;... t 2 ;... t 3 ; } while (..t 4..) {... t 5 ;... } t1t1 t2t2 t3t3 t4t4 t5t5
J.Nawrocki, Metody formalne Inny przykład while (1) { t 1 ;... t 2 ;... t 3 ; } while (..t 4..) {... t 5 ;... } t1t1 t2t2 t3t3 t4t4 t5t5
J.Nawrocki, Metody formalne Inny przykład while (1) { t 1 ;... t 2 ;... t 3 ; } while (..t 4..) {... t 5 ;... } t1t1 t2t2 t3t3 t4t4 t5t5
J.Nawrocki, Metody formalne Inny przykład while (1) { t 1 ;... t 2 ;... t 3 ; } while (..t 4..) {... t 5 ;... } t1t1 t2t2 t3t3 t4t4 t5t5
J.Nawrocki, Metody formalne Systemy operacyjne Jak uniknąć zastoju w systemie? AllocateLP; AllocateHD; UseHDandLP; ReleaseHD; ReleaseLP; LP HD B A
J.Nawrocki, Metody formalne Systemy operacyjne AllocateLP; AllocateHD; UseHDandLP; ReleaseHD; ReleaseLP; LP HD B A
J.Nawrocki, Metody formalne Systemy operacyjne AllocateLP; AllocateHD; UseHDandLP; ReleaseHD; ReleaseLP; LP HD B A
J.Nawrocki, Metody formalne Systemy operacyjne AllocateLP; AllocateHD; UseHDandLP; ReleaseHD; ReleaseLP; LP HD B A
J.Nawrocki, Metody formalne Systemy operacyjne AllocateLP; AllocateHD; UseHDandLP; ReleaseHD; ReleaseLP; LP HD B A
J.Nawrocki, Metody formalne Systemy operacyjne AllocateLP; AllocateHD; UseHDandLP; ReleaseHD; ReleaseLP; LP HD B A
J.Nawrocki, Metody formalne Systemy operacyjne AllocateLP; AllocateHD; UseHDandLP; ReleaseHD; ReleaseLP; LP HD B A
J.Nawrocki, Metody formalne Systemy operacyjne AllocateLP; AllocateHD; UseHDandLP; ReleaseHD; ReleaseLP; LP HD B A
J.Nawrocki, Metody formalne Systemy operacyjne AllocateLP; AllocateHD; UseHDandLP; ReleaseHD; ReleaseLP; LP HD B A
J.Nawrocki, Metody formalne Systemy operacyjne AllocateLP; AllocateHD; UseHDandLP; ReleaseHD; ReleaseLP; LP HD B A
J.Nawrocki, Metody formalne Systemy operacyjne AllocateLP; AllocateHD; UseHDandLP; ReleaseHD; ReleaseLP; AllocateHD; AllocateLP; UseHDandLP; ReleaseLP; ReleaseHD; LP HD B A
J.Nawrocki, Metody formalne Systemy operacyjne AllocateLP; AllocateHD; UseHDandLP; ReleaseHD; ReleaseLP; AllocateHD; AllocateLP; UseHDandLP; ReleaseLP; ReleaseHD; LP HD B A
J.Nawrocki, Metody formalne Systemy operacyjne AllocateLP; AllocateHD; UseHDandLP; ReleaseHD; ReleaseLP; AllocateHD; AllocateLP; UseHDandLP; ReleaseLP; ReleaseHD; LP HD B A
J.Nawrocki, Metody formalne Systemy operacyjne AllocateLP; AllocateHD; UseHDandLP; ReleaseHD; ReleaseLP; AllocateHD; AllocateLP; UseHDandLP; ReleaseLP; ReleaseHD; LP HD B A
J.Nawrocki, Metody formalne Systemy operacyjne AllocateLP; AllocateHD; UseHDandLP; ReleaseHD; ReleaseLP; AllocateHD; AllocateLP; UseHDandLP; ReleaseLP; ReleaseHD; LP HD B A
J.Nawrocki, Metody formalne Systemy operacyjne AllocateLP; AllocateHD; UseHDandLP; ReleaseHD; ReleaseLP; AllocateHD; AllocateLP; UseHDandLP; ReleaseLP; ReleaseHD; LP HD B A
J.Nawrocki, Metody formalne Systemy operacyjne AllocateLP; AllocateHD; UseHDandLP; ReleaseHD; ReleaseLP; AllocateHD; AllocateLP; UseHDandLP; ReleaseLP; ReleaseHD; LP HD B A ?
J.Nawrocki, Metody formalne Problem zastoju AllocateHD AllocateLP use ReleaseHD ReleaseLP AllocateLP AllocateHD use ReleaseLP ReleaseHD HD LP
J.Nawrocki, Metody formalne Problem zastoju AllocateHD AllocateLP use ReleaseHD ReleaseLP AllocateLP AllocateHD use ReleaseLP ReleaseHD HD LP
J.Nawrocki, Metody formalne Problem zastoju AllocateHD AllocateLP use ReleaseHD ReleaseLP AllocateLP AllocateHD use ReleaseLP ReleaseHD HD LP
J.Nawrocki, Metody formalne Problem zastoju AllocateHD AllocateLP use ReleaseHD ReleaseLP AllocateLP AllocateHD use ReleaseLP ReleaseHD HD LP
J.Nawrocki, Metody formalne Systemy operacyjne AllocateLP; AllocateHD; UseHDandLP; ReleaseHD; ReleaseLP; AllocateHD; AllocateLP; UseHDandLP; ReleaseLP; ReleaseHD; LP HD B A
J.Nawrocki, Metody formalne Systemy operacyjne AllocateLP; AllocateHD; UseHDandLP; ReleaseHD; ReleaseLP; AllocateLP; AllocateHD; UseHDandLP; ReleaseLP; ReleaseHD; LP HD B A
J.Nawrocki, Metody formalne Problem zastoju AllocateHD AllocateLP use ReleaseHD ReleaseLP AllocateHD AllocateLP use ReleaseHD ReleaseLP HD LP
J.Nawrocki, Metody formalne Plan wykładu Formal Methods Model-basedModel-based AxiomaticAxiomatic ImperativeImperative DeclarativeDeclarative AlgebraicAlgebraic Specyfikacje aksjomatyczne Implementacje niestandardowe Specyfikacje bazujące na modelu Sieci Petriego
J.Nawrocki, Metody formalne Pytania?
J.Nawrocki, Metody formalne Ocena wykładu 1. Wrażenie ogólne (1 - 6) 2. Za szybko czy za wolno? 3. Czy dowiedziałeś się czegoś ważnego? 4. Co i jak poprawić?