105
1 Inynieria oprogramowania Metody formalne Witam serdecznie na kolejnym wykladzie z „Inynierii oprogramowania”! Tematem dzisiejszego wykladu s metody formalne, czyli metody oparte na matematyce. Metody matematyczne (np. widoczne na slajdzie funkcje trygonometryczne) s szeroko wykorzystywane w wielu obszarach nauk technicznych, wic nic dziwnego, e próbuje si je stosowa równie w inynierii oprogramowania.

Metody formalne

Embed Size (px)

Citation preview

Page 1: Metody formalne

1

In�ynieria oprogramowania

Metody formalne

����������� �� � �

� ������� ������

�����������

� �� ���� �� ���

Witam serdecznie na kolejnym wykładzie z „In�ynierii oprogramowania”!

Tematem dzisiejszego wykładu s� metody formalne, czyli metody oparte na matematyce. Metody matematyczne (np. widoczne na slajdzie funkcje trygonometryczne) s� szeroko wykorzystywane w wielu obszarach nauk technicznych, wi�c nic dziwnego, �e próbuje si� je stosowa� równie� w in�ynierii oprogramowania.

Page 2: Metody formalne

2

In�ynieria oprogramowania

Metody formalne (2)

Plan wykładów

� �� �� �� �� ���� ��� �� � �� ����

� ������������� �� ��

������ �����!��

������� � � �������

������� � � ��������

� �������� ��� �

" � �������������

� ��� #� � ���������� � ����#

" ����� � ����� ���� ������

$ � ��� ���� ���������������� �%

& ��� ��� �����' �� ���� � ��

' � � �������� ��� ���������������� ����

Wykład ten mo�na traktowa� jako rozwini�cie poprzedniego wykładu dotycz�cego j�zyka UML. Zarówno j�zyk UML, jak i metody formalne słu�� do opisu systemów informatycznych i ró�nych ich aspektów.

Page 3: Metody formalne

3

In�ynieria oprogramowania

Metody formalne (3)

Plan wykładów

� �� �� �� �� ���� ��� �� � �� ����

� ������������� �� ��

� � ����� ��!�

()� ��* � � +�� ,-

()� ��* � � +�� ,--

� �������� ��� �

" � �������������

� ��� #� � ���������� � ����#

" ����� � ����� ���� ������

$ � ��� ���� ���������������� �%

& ��� ��� �����' �� ���� � ��

' � � �������� ��� ���������������� ����

Ponadto wykład ten jest równie� – w jakim� sensie – kontynuacj� wykładu nt. kontroli jako�ci oprogramowania.

Page 4: Metody formalne

4

In�ynieria oprogramowania

Metody formalne (4)

Cztery filary zapewniania jako�ci

Refaktoryzacja

Testowanie

Zarz. konfiguracj�

Przegl�dy

Jako�� oprogramowania

Tam mówili�my głównie o testowaniu i przegl�dach. Metody formalne s�trzeci� drog�, chocia� trzeba przyzna�, �e w praktyce droga ta jest rzadko ucz�szczana.

Page 5: Metody formalne

5

In�ynieria oprogramowania

Metody formalne (5)

Jako�� oprogramowania

(���!. / � � �� ��!. � �� �� ����� �

& 0 � �� " �� # � 12 3 4 5 6 4 7 7 2 8

Na wykładzie dotycz�cym kontroli jako�ci była przytoczona definicja jako�ci wg Crosby’ego, zgodnie z któr� jako�� jest rozumiana, jako zgodno�� z wymaganiami. Mo�na powiedzie�, �e idea metod formalnych opiera si�wła�nie na tej definicji jako�ci z tym, �e zakłada si�, i� wymagania zostały sformułowane na gruncie matematycznym (czyli bardzo precyzyjnie) i mo�na metodami matematycznymi zbada�, czy dany program jest zgodny z t�specyfikacj�. Cz�sto przedmiotem takiego badania s� wybrane wła�ciwo�ci programu lub systemu informatycznego.

Page 6: Metody formalne

6

In�ynieria oprogramowania

Metody formalne (6)

Słabo�ci testowania

$ �� ��� �� �� ��� %� �������& # ���' �# ���(��� %� ������ �� )� (# � ���� �������& �� �# ��� !&�

Powiedzenie Dijkstry

Istotno�� metod formalnych wynika z obserwacji Dijkstry, który – jak pewnie Pa�stwo pami�tacie – powiedział, �e testowaniem nie mo�na wykaza�, �e bł�dów nie ma. Jedynie korzystaj�c z metod matematycznych mo�na pokaza�, �e program ma okre�lone wła�ciwo�ci i jest zgodny ze specyfikacj�.

Page 7: Metody formalne

7

In�ynieria oprogramowania

Metody formalne (7)

Dowodzenie poprawno�ci programów

" �* �+ ��, ���

� ���� �-�./ 01 �2.�..

./ 3 4 -�5 ��6 ������ ���� �

./ 3 4 73 8 -�+ � � � � �9+ ��� ��: �;

./ 3 / -�< ����� �����= �)�6 ��� �

./ 3 / 74 2-�� � �������� � ��� �

./ 4 2-�> ' ��� ��

./ 4 2-�? �� �� @ ��� ��� ��* �6 ��4 2

./ 4 8 -�A �����@ ����� �

./ B B -�� C���

./ 8 2-�* " � �$ ' � � 6 * ���

Jedn� z osób, której informatyka zawdzi�cza bardzo wiele jest brytyjski profesor Tony Hoare. Urodził si� w 1934 roku.

Najpierw interesował si� filologi� klasyczn�, potem j�zykiem rosyjskim

W 1959 roku zainteresował si� statystyk� matematyczn� i programowaniem komputerów. Zainteresowania te rozwijał w Moskwie, gdzie badał głównie problemy automatycznej translacji.

Po powrocie do Wielkiej Brytanii w 1960 roku wymy�lił algorytm sortowania znany jako Quicksort i opracował w firmie Elliott Brothers jeden z pierwszych kompilatorów j�zyka Algol 60, który wła�nie został opracowany i którego rozwini�ciem był pó�niej j�zyk Pascal.

W 1968 roku został profesorem w Belfa�cie w Irlandii Północnej, a w 1977 roku przeszedł na Uniwersytet w Oxfordzie.

W 1980 roku został uhonorowany nagrod� Turinga, która jest w informatyce odpowiednikiem nagrody Nobla.

Page 8: Metody formalne

8

In�ynieria oprogramowania

Metody formalne (8)

Dowodzenie poprawno�ci programów

" �* �+ ��, ���

, )�����, ���D�-

E ���� ��)�6 ��� (�

�� F�' ��)�# ��� ��

9 ))��� !� ��

9 ��' � �� ��� �

9 �� )���# �� !� �

Przytoczyłem biografi� prof. Hoara, gdy� wniósł on bardzo wiele do rozwoju metod formalnych. Znana jest tzw. hipoteza Hoare’a, zgodnie z któr�dowodzenie programów rozwi�zuje problemy poprawno�ci, dokumentacji i kompatybilno�ci. Hipoteza ta stanowi dla wielu osób punkt wyj�cia i uzasadnienie prowadzenia bada� w zakresie metod formalnych.

Page 9: Metody formalne

9

In�ynieria oprogramowania

Metody formalne (9)

Dowodzenie poprawno�ci programów

" �* �+ ��, ���

, )�����, ���D�-

E ���� ��)�6 ��� (�

�� F�' ��)�# ��� ��

9 ))��� !� ��

9 ��' � �� ��� �

9 �� )���# �� !� �

A �G > H �+

I J � �G K -J � �� �9I ;H �K J � L

���������������

Profesor Hoare zaproponował tak�e podej�cie do specyfikowania i dowodzenia poprawno�ci programów zwane cz�sto logik� Hoare’a. Wła�ciwo�ci programu (lub fragmentu programu) Q opisuje si� za pomoc�pary predykatów P i R. Predykat P opisuje tzw. warunek wst�pny, natomiast R jest warunkiem ko�cowym. Wyra�enie, które widzimy na slajdzie mo�na przeczyta� w nast�puj�cy sposób: je�eli jest spełniony warunek P, to po wykonaniu instrukcji Q spełniony b�dzie warunek R.

Oto bardzo prosty przykład. Je�eli zmienna X ma warto�� n, to po wykonaniu instrukcji przypisania zmiennej Y wyniku funkcji silnia od X, zmienna Y b�dzie miała warto�� n!.

To podej�cie zostało wykorzystane w praktyce przy definicji j�zyka ANNA słu��cego do specyfikowania programów zapisanych w j�zyku Ada.

Page 10: Metody formalne

10

In�ynieria oprogramowania

Metody formalne (10)

Podej�cia do specyfikacji formalnej

Metody formalne

Modelowe Aksjomatyczne

1��� ,������� � ��8 1��� ,� ���� �� 8

Generalnie formalne metody specyfikowania programów mo�na podzieli� na oparte na modelach i aksjomatyczne. Metody oparte na modelach ka��opisa� zachowanie si� programu za pomoc� zestawu standardowych poj��takich jak zbiór, sekwencja. Natomiast metody aksjomatyczne specyfikuj�program przez podanie zestawu zda�, które maj� by� spełnione przez ka�d�poprawn� implementacj� programu. Przypomina to aksjomaty Euklidesa dotycz�ce geometrii, st�d nazwa „metody aksjomatyczne”.

Page 11: Metody formalne

11

In�ynieria oprogramowania

Metody formalne (11)

Plan wykładu

9 < )���� ��� ����� � ������ �

9 �� )��� �� ��� ��� �� ��� �����

9 < �� �A ��� �6

Plan wykładu jest nast�puj�cy. Najpierw omówimy specyfikacje aksjomatyczne.

Potem przedstawi� zwi�zane z nimi tzw. implementacje niestandardowe. Jest to do�� ciekawe zjawisko o charakterze anomalii, z którego trzeba sobie zdawa� spraw�.

Ostatni� cz��� wykładu chciałbym po�wi�ci� sieciom Petriego, bardzo ciekawej metodzie specyfikowania programów i systemów współbie�nych.

Page 12: Metody formalne

12

In�ynieria oprogramowania

Metody formalne (12)

Plan wykładu

9 < )���� ��� ����� � ������ �

9 �� )��� �� ��� ��� �� ��� �����

9 < �� �A ��� �6

Zaczynamy od specyfikacji aksjomatycznych.

Page 13: Metody formalne

13

In�ynieria oprogramowania

Metody formalne (13)

Specyfikacje aksjomatyczne

��� � � $ �����

� ��� � 24 .8 8 B B 8 8

� �� � � � 24 .8 8 ..8 8

��� 24 .8 8 228 8

Załó�my, �e chcemy opracowa� elektroniczn� ksi��k� telefoniczn�. Ksi��ka, jak to w przykładach akademickich bywa, b�dzie bardzo prosta: z ka�dym nazwiskiem b�dzie zwi�zany numer telefonu.

Page 14: Metody formalne

14

In�ynieria oprogramowania

Metody formalne (14)

Specyfikacje aksjomatyczne

Dir – Ksi��ka telefonicznaName – NazwiskoPhone – Nr telefonu

Przechodz�c do oprogramowania b�dziemy potrzebowali trzy typy danych:

Dir b�dzie oznacza� struktur� danych reprezentuj�c� ksi��k� telefoniczn�,

Name niech oznacza dan� reprezentuj�c� nazwisko abonenta,

Phone natomiast b�dzie typem danych okre�laj�cym numer telefonu.

Page 15: Metody formalne

15

In�ynieria oprogramowania

Metody formalne (15)

E � � �' )9��� � ���E � E ;�

Specyfikacje aksjomatyczne

��� � � $ �����

� ��� � 24 .8 8 B B 8 8

� �� � � � 24 .8 8 ..8 8

E � M � � F%���������� � M ��� � �A � � � M �������

� ��� �

24 .8 8 B B 8 8

Nasza ksi��ka b�dzie oferowa� cztery operacje i ka�da z nich b�dzie funkcj�. Najwa�niejsz� operacj� jest operacja Lookup (po angielsku „poszukaj”) odszukuj�ca w ksi��ce telefonicznej numer telefonu podanego abonenta.

Operacja ta ma dwa parametry wej�ciowe: nazwisko abonenta N i ksi��k�telefoniczn� D, w której nale�y poszuka� numer telefonu.

Wynikiem jest numer telefonu podanego abonenta.

Page 16: Metody formalne

16

In�ynieria oprogramowania

Metody formalne (16)

E � * ��9��� � ���A � � � 5 ��E � E ;�

Specyfikacje aksjomatyczne

��� � � $ �����

� ��� � 24 .8 8 B B 8 8

� �� � � � 24 .8 8 ..8 8

��� � � $ �����

� ��� � 24 .8 8 B B 8 8

� �� � � � 24 .8 8 ..8 8

��� 24 .8 8 228 8

E � M � � F%���������� � M ��� � �A � � � M �������

��� 24 .8 8 228 8

Aby móc dodawa� nowych abonentów do ksi��ki telefonicznej wprowadzimy operacj� Add (po angielsku „dodaj”).

Operacja ta ma trzy parametry wej�ciowe: nazwisko abonenta N, numer telefonu F i ksi��k� telefoniczn� D, do której chcemy doda� informacje o tym abonencie.

Jako wynik dostajemy now� ksi��k� telefoniczn� z dopisan� informacj� o nowym abonencie.

Page 17: Metody formalne

17

In�ynieria oprogramowania

Metody formalne (17)

E � E �����9��� � ���E � E ;�

Specyfikacje aksjomatyczne

��� � � $ �����

� ��� � 24 .8 8 B B 8 8

� �� � � � 24 .8 8 ..8 8

��� � � $ �����

� �� � � � 24 .8 8 ..8 8

E � M � � F%���������� � M ��� � �A � � � M �������

� ��� �

Skoro mo�emy dodawa� nowych abonentów, to powinni�my tak�e móc usuwa� abonentów. W tym celu wprowadzimy operacj� Delete (po angielsku „usu�”).

Parametrami wej�ciowymi dla tej operacji s�:

nazwisko usuwanego abonenta N oraz

ksi��ka telefoniczna D, z której chcemy usun�� informacje o tym abonencie.

W rezultacie dostajemy ksi��k� telefoniczn�, z której informacja o danym abonencie została usuni�ta.

Page 18: Metody formalne

18

In�ynieria oprogramowania

Metody formalne (18)

E � ? � )��9;�

Specyfikacje aksjomatyczne

��� � � $ �����

E � M � � F%���������� � M ��� � �A � � � M �������

Ostatni� operacj� jest operacja Empty. Jest to operacja bezargumentowa. Jej wynikiem jest pusta ksi��ka telefoniczna, do której mo�na co� zapisa� za pomoc� operacji Add.

Page 19: Metody formalne

19

In�ynieria oprogramowania

Metody formalne (19)

Specyfikacje aksjomatyczne

��� � � $ �����

� ��� � 24 .8 8 B B 8 8

� �� � � � 24 .8 8 ..8 8

* ��9N� �� � � � O��N24 .8 8 ..8 8 O�* ��9N� ��� � O��24 .8 8 B B 8 8 O�

? � )��9;;

;

* ��9N� ��� � O��N24 .8 8 B B 8 8 O�* ��9N� �� � � � O��24 .8 8 ..8 8 O�

? � )��9;;

;

? � )��

� ��� �

� �� � � �

* ��

* ��

? � )��

� �� � � �

� ��� �

* ��

* ��

Zauwa�my, �e tak� ksi��k� telefoniczn�, jak j� widzimy na slajdzie mo�na otrzyma� na bardzo wiele sposobów.

Na przykład mo�na do pustej ksi��ki telefonicznej doda� informacj� o Kowalskim, a potem o Malinowskim.

W zapisie funkcyjnym mo�na to przedstawi� jako zło�enie trzech operacji pokazanych na slajdzie.

Mo�na te� do pustej ksi��ki najpierw doda� informacj� o Malinowskim, a potem o Kowalskim.

W zapisie funkcyjnym wygl�dałoby to tak, jak na slajdzie w prawym dolnym rogu.

Page 20: Metody formalne

20

In�ynieria oprogramowania

Metody formalne (20)

Specyfikacje aksjomatyczne

� �� �� � E �+ ? " $ � + K �J

Spróbujmy teraz formalnie opisa� te operacje. Wykorzystamy notacj�RAISE. Nasz� ksi��k� telefoniczn� nazwiemy Directory.

Page 21: Metody formalne

21

In�ynieria oprogramowania

Metody formalne (21)

Specyfikacje aksjomatyczne

� �� �� � E �+ ? " $ � + K �J

���� � ��)� ��� ���A � � ���E �E � M � � F%���������� � M ��� � �A � � � M �������

Typy danych wykorzystywanych przez nasze oprogramowanie s� w tej notacji deklarowane jako „class type” (typy klas).

Page 22: Metody formalne

22

In�ynieria oprogramowania

Metody formalne (22)

Specyfikacje aksjomatyczne

� �� �� � E �+ ? " $ � + K �J

���� � ��)� ��� ���A � � ���E �

: ��' � �� )��-�E ��

E � ? � )��9;�

Dla ka�dej funkcji okre�lana jest tzw. sygnatura, b�d�ca odpowiednikiem nagłówka funkcji. Po nazwie funkcji i dwukropku podawany jest typ warto�ci funkcji. Przykład funkcji bezargumentowej jest podany na slajdzie.

Page 23: Metody formalne

23

In�ynieria oprogramowania

Metody formalne (23)

Specyfikacje aksjomatyczne

� �� �� � E �+ ? " $ � + K �J

���� � ��)� ��� ���A � � ���E �

: ��' � �� )��-�E ��

���-���� ��C�A � � ��C�E ��→→→→ E ��

E � ? � )��9;�

E � * ��9��� � ���A � � � 5 ��E � E ;�

Je�li funkcja ma parametry wej�ciowe, to w sygnaturze opisuje si� je na zasadzie iloczynu kartezja�skiego. Podaje si� nazwy typów kolejnych parametrów oddzielaj�c je mi�dzy sob� symbolem „x”. Sposób opisu 3-parametrowej funkcji Add jest przedstawiony na slajdzie.

Page 24: Metody formalne

24

In�ynieria oprogramowania

Metody formalne (24)

Specyfikacje aksjomatyczne

� �� �� � E �+ ? " $ � + K �J

���� � ��)� ��� ���A � � ���E �

: ��' � �� )��-�E ��

���-���� ��C�A � � ��C�E ��→→→→ E ��

��' )-���� ��C�E ��→→→→ A � � ��

������-���� ��C�E ��→→→→ E �E � ? � )��9;�

E � * ��9��� � ���A � � � 5 ��E � E ;�

E � � �' )9��� � ���E � E ;�

E � E �����9��� � ���E � E ;�

Sygnatury pozostałych funkcji s� zbudowane na podobnej zasadzie.

Page 25: Metody formalne

25

In�ynieria oprogramowania

Metody formalne (25)

Specyfikacje aksjomatyczne

�C � ����� * # ��� �� �.-���� ����-�A � � ����-�E �

��' )�9* # �����9� �� �.������;;�≡≡≡≡ � * # J �� �� �.��� �� �

�� �

��%�� ��' )9* # ���� ����;�6 �� � �� ���� J ����9* # ������;

�� ��' )9* # ���� ����;�J ��

Przejd�my teraz do sformułowania aksjomatów opisuj�cych działanie tych funkcji. Je�eli szukamy numeru telefonu abonenta Abo w pewnej ksi��ce telefonicznej

która powstała z ksi��ki d przez dodanie do niej informacji, �e Abo ma numer telefonu t,

to oczywi�cie szukany numer telefonu jest równy t.

Formalnie mo�na to zapisa� jak na slajdzie.

Page 26: Metody formalne

26

In�ynieria oprogramowania

Metody formalne (26)

Specyfikacje aksjomatyczne

�C � ����� * # ��� �� �.-���� ����-�A � � ����-�E �

��' )�9* # �����9� �� �.������;;�≡≡≡≡ � * # J �� �� �.��� �� �

��� � ��' )�9* # ���;

�� �

��%�� ��' )9* # ���� ����;�6 �� � �� ���� J ����9�� � �������;

�� ��' )9* # ���� ����;�J ���' )9* # ���;�

Je�eli szukamy numeru telefonu Abo w ksi��ce, która powstała z ksi��ki d przez dodanie informacji o innym abonencie ni� Abo,

to musimy szuka� dalej, czyli szuka� informacji o abonencie Abo w „starej”ksi��ce d.

Formalnie, w notacji RAISE, mo�na to zapisa� za pomoc� frazy ELSE pokazanej na slajdzie.

Page 27: Metody formalne

27

In�ynieria oprogramowania

Metody formalne (27)

Specyfikacje aksjomatyczne

� � ' � �� � ���6 �� �� ��)' � �� ��� F%� ������ ��� � �� ��

)' � �F �� F%�� ������ ��� F��

�C � ����� � �� �-���� �

�������9� �� ����� )��;�≡≡≡≡ �� )��

Kolejny aksjomat mo�na sformułowa� nast�puj�co: usuni�cie czegokolwiek z pustej ksi��ki telefonicznej daje pust� ksi��k� telefoniczn�.

Formalnie mo�na to zapisa� jak na slajdzie

Page 28: Metody formalne

28

In�ynieria oprogramowania

Metody formalne (28)

Specyfikacje aksjomatyczne

�C � ����� * # ��� �� �.-���� ����-�A � � ����-�E �

�������9* # �����9� �� �.������;;�≡≡≡≡ � * # J �� �� �.

�� �� �

�� �

��%�� �� ���� J ����9* # ������;

�� ������9* # ���� ����;�J ��

Kolejny aksjomat, dotycz�cy usuwania, mo�na by sformułowa� nast�puj�co: je�eli jaka� ksi��ka powstała z ksi��ki d przez dodanie do niej informacji o numerze telefonu t abonenta Abo,

to usuni�cie abonenta Abo z tej ksi��ki daje star� ksi��k� d.

Za pomoc� notacji RAISE mo�na to zapisa� w sposób pokazany na slajdzie.

Page 29: Metody formalne

29

In�ynieria oprogramowania

Metody formalne (29)

Specyfikacje aksjomatyczne

�C � ����� * # ��� �� �.-���� ����-�A � � ����-�E �

�������9* # �����9� �� �.������;;�≡≡≡≡ � * # J �� �� �.

�� �� �

��� � ����9� �� �.������������9* # ���;;

�� �

��%�� �� ���� J ����9�� � �������;

�� ������9* # ���� ����;�J ����9�� � ������������9* # ���;

Je�eli dana ksi��ka telefoniczna powstała z ksi��ki d przez dodanie informacji o innym abonencie ni� Abo, a my chcemy usun�� z ksi��ki Abo, to tego innego nale�y w ksi��ce pozostawi�, a usun�� Abo ze starej ksi��ki d. Innymi słowy, nale�y ze starej ksi��ki d usn�� abonenta Abo i doda� do wyniku informacj� o tym innym abonencie.

Korzystaj�c z notacji RAISE mo�na to zapisa� w sposób pokazany na slajdzie.

Page 30: Metody formalne

30

In�ynieria oprogramowania

Metody formalne (30)

Specyfikacje aksjomatyczne

�C � ����� * # ��� �� �.-���� ����-�A � � ����-�E �

�������9* # �����9� �� �.������;;�≡≡≡≡ � * # J �� �� �.

�� �� �

��� � ����9� �� �.������������9* # ���;;

�� �

Zastanówmy si�, czy ta definicja jest poprawna. Czy faktycznie okre�la takie zachowanie systemu, jakiego oczekujemy?

Page 31: Metody formalne

31

In�ynieria oprogramowania

Metody formalne (31)

Specyfikacje aksjomatyczne

�C � ����� * # ��� �� �.-���� ����-�A � � ����-�E �

�������9* # �����9� �� �.������;;�≡≡≡≡ � * # J �� �� �.

�� �� �

��� � ����9� �� �.������������9* # ���;;

�� �

* ��9N� ��� � O��N24 .8 8 B B 8 8 O�* ��9N� ��� � O��24 .8 8 B B 8 8 O�

? � )��9;;

;

? � )��� ��� � � ��� � * ��* ��

Załó�my, �e nasza ksi��ka telefoniczna ma dwa zapisy dotycz�ce abonenta Kowalskiego.

Page 32: Metody formalne

32

In�ynieria oprogramowania

Metody formalne (32)

Specyfikacje aksjomatyczne

�C � ����� * # ��� �� �.-���� ����-�A � � ����-�E �

�������9* # �����9� �� �.������;;�≡≡≡≡ � * # J �� �� �.

�� �� �

��� � ����9� �� �.������������9* # ���;;

�� �

* ��9N� ��� � O��N24 .8 8 B B 8 8 O�* ��9N� ��� � O��24 .8 8 B B 8 8 O�

? � )��9;;

;

? � )��� ��� � � ��� � * ��* ��

Zgodnie z podan� definicj� otrzymamy ksi��k� „krótsz�” o jednego Kowalskiego, ale drugi zapis dotycz�cy Kowalskiego pozostanie. Mo�emy zaakceptowa� takie działanie naszego sytemu, albo te� mo�emy odpowiednio zmieni� specyfikacj�. Ten drugi wariant pozostawiam do rozwi�zania w charakterze �wiczenia.

Page 33: Metody formalne

33

In�ynieria oprogramowania

Metody formalne (33)

Plan wykładu

9 < )���� ��� ����� � ������ �

9 �� )��� �� ��� ��� �� ��� �����

9 < �� �A ��� �6

Ze specyfikacjami aksjomatycznymi wi��e si� zjawisko o charakterze anomalii zwane implementacjami niestandardowymi. Postaram si� to wyja�ni� na bardzo prostym przykładzie.

Page 34: Metody formalne

34

In�ynieria oprogramowania

Metody formalne (34)

Implementacje niestandardowe

C�= �2�J �C

� ' ��9P;�J �0

� ' ��90;�J �1

� ' ��91 ;�J �3

Załó�my, �e chcemy napisa� specyfikacj� prostego pakietu wykonuj�cego elementarne operacje arytmetyczne na liczbach naturalnych. Punktem wyj�cia b�dzie dla nas aksjomatyczna definicja operacji arytmetycznych, któr� mo�na znale�� w wielu ksi��kach. Zawiera ona dwa aksjomaty. Po pierwsze, dodanie zera do dowolnej liczby x daje liczb� x.

W drugim aksjomacie wyst�puje poj�cie nast�pnika. Nast�pnik jest to kolejna liczba naturalna wzgl�dem podanej, np. nast�pnikiem 2 jest 3, a nast�pnikiem 3 jest 4. Niech funkcja succ(y) (od angielskiego „successor”, czyli nast�pnik) podaje nast�pnik liczby y.

Page 35: Metody formalne

35

In�ynieria oprogramowania

Metody formalne (35)

Implementacje niestandardowe

C�= �2�J �C

C�= �� ' ��9�;�J �� ' ��9C= �;

P�= �1 �J

P�= �� ' ��90;�J �� ' ��9P�= �0; J �

� ' ��93 ;�J �4

Zgodnie z drugim aksjomatem dodanie do liczby x nast�pnika liczby y daje nast�pnik sumy liczb x i y.

Na przykład 2 + 4 mo�na traktowa� jako sum� 2 i nast�pnika 3. Zgodnie z tym aksjomatem 2 + 4 jest równe nast�pnikowi 2 + 3. Jak wiemy, 2 + 3 = 5 i nast�pnikiem 5 jest 6. Zatem faktycznie zgadza si�: 2 + 4 jest równe 6.

Page 36: Metody formalne

36

In�ynieria oprogramowania

Metody formalne (36)

Implementacje niestandardowe

C�= �2�J �CQ

C�= �� ' ��9�;�J �� ' ��9C= �;Q

� � ����9;

� � � ' �� 9 � � C;

� � )�' � �9 � � C�� � � �;

Załó�my, �e stał� 0 b�dziemy realizowa� jako bezargumentow� funkcj�zero.

Funkcja succ b�dzie miała jeden argument b�d�cy liczb� naturaln� i jej wynikiem te� b�dzie liczba naturalna.

Operacja dodawania b�dzie realizowana jako funkcja plus, która b�dzie miała dwa argumenty b�d�ce liczbami naturalnymi i wynikiem b�dzie te�liczba naturalna (dla uproszczenia posłu�yłem si� tutaj typem int, który obejmuje równie� liczby ujemne, ale z punktu widzenia problemu, o którym chc� powiedzie� nie ma to znaczenia).

Page 37: Metody formalne

37

In�ynieria oprogramowania

Metody formalne (37)

Implementacje niestandardowe

� � ����9;

� � � ' �� 9 � � C;

� � )�' � �9 � � C�� � � �;

∀∀∀∀C )�' � 9C�����9;;J �C

∀∀∀∀C�� )�' � 9C�� ' ��9�;;J �� ' ��9)�' � 9C��;;

C�= �2�J �CQ

C�= �� ' ��9�;�J �� ' ��9C= �;Q

Uwzgl�dniaj�c przyj�ty interfejs dla naszego mikro-modułu, przepisujemy oba nasze aksjomaty zast�puj�c operator dodawania funkcj� plus a stał� 0 funkcj� zero.

Page 38: Metody formalne

38

In�ynieria oprogramowania

Metody formalne (38)

Implementacje niestandardowe

C�= �2�J �CQ

C�= �� ' ��9�;�J �� ' ��9C= �;Q

� � ����9;

� � � ' �� 9 � � C;

� � )�' � �9 � � C�� � � �;

∀∀∀∀C )�' � 9C�����9;;J �C

∀∀∀∀C�� )�' � 9C�� ' ��9�;;J �� ' ��9)�' � 9C��;;

��� ������� �� �-

)�' � 9P��0;J �3

Nasze oczekiwania s� oczywi�cie takie, �e funkcja plus zwróci dla argumentów 2 i 3 warto�� 5. Ale czy na pewno zawsze tak b�dzie?

Page 39: Metody formalne

39

In�ynieria oprogramowania

Metody formalne (39)

Implementacje niestandardowe

� � ����9;

� � � ' �� 9 � � C;

� � )�' � �9 � � C�� � � �;

∀∀∀∀C )�' � 9C�����9;;J �C

∀∀∀∀C�� )�' � 9C�� ' ��9�;;J �� ' ��9)�' � 9C��;;

��� ������� �� �-

)�' � 9P��0;J �3

� � ����9;

G ����' �� �.Q�H

� � � ' �� 9 � � C;

G ����' �� �PRCQ�H

� � )�' � 9 � � C�� � � �;

G ����' �� �CR�Q�H

Załó�my, �e kto� postanowił zrealizowa� nasz mikro-moduł w sposób niestandardowy. Funkcja zero zwraca zawsze warto�� 1.

Funkcja nast�pnika, succ, zwraca liczb� dwa razy wi�ksz� od podanej.

Natomiast funkcja plus zwraca iloczyn podanych liczb.

Page 40: Metody formalne

40

In�ynieria oprogramowania

Metody formalne (40)

Implementacje niestandardowe

� � ����9;

� � � ' �� 9 � � C;

� � )�' � �9 � � C�� � � �;

∀∀∀∀C )�' � 9C�����9;;J �C

∀∀∀∀C�� )�' � 9C�� ' ��9�;;J �� ' ��9)�' � 9C��;;

��� ������� �� �-

)�' � 9P��0;J �3

� � ����9;

G ����' �� �.Q�H

� � � ' �� 9 � � C;

G ����' �� �PRCQ�H

� � )�' � 9 � � C�� � � �;

G ����' �� �CR�Q�H

C��R ��.�����J �C

Poniewa� x razy 1 jest zawsze równe x, zatem pierwszy aksjomat przy tym rozwi�zaniu zawsze b�dzie spełniony.

Page 41: Metody formalne

41

In�ynieria oprogramowania

Metody formalne (41)

Implementacje niestandardowe

� � ����9;

� � � ' �� 9 � � C;

� � )�' � �9 � � C�� � � �;

∀∀∀∀C )�' � 9C�����9;;J �C

∀∀∀∀C�� )�' � 9C�� ' ��9�;;J �� ' ��9)�' � 9C��;;

��� ������� �� �-

)�' � 9P��0;J �3

� � ����9;

G ����' �� �.Q�H

� � � ' �� 9 � � C;

G ����' �� �PRCQ�H

� � )�' � 9 � � C�� � � �;

G ����' �� �CR�Q�H

C��R ��9PR�;�����J �P�R �9CR�;

Prawd� jest tak�e, �e x razy 2y jest zawsze równe 2 razy xy. Czyli nasz mikro-pakiet spełnia tak�e drugi aksjomat.

Page 42: Metody formalne

42

In�ynieria oprogramowania

Metody formalne (42)

Implementacje niestandardowe

∀∀∀∀C )�' � 9C�����9;;J �C

∀∀∀∀C�� )�' � 9C�� ' ��9�;;J �� ' ��9)�' � 9C��;;

��� ������� �� �-

)�' � 9P��0;J �3

� � ����9;

G ����' �� �.Q�H

� � � ' �� 9 � � C;

G ����' �� �PRCQ�H

� � )�' � 9 � � C�� � � �;

G ����' �� �CR�Q�H

)�' � 9P��0;�J �4

Problem polega na tym, �e wywołanie funkcji plus z naszego pakietu dla parametrów 2 i 3 zwróci liczb� 6, a my spodziewamy si� liczby 5. W czym tkwi problem? Prosz� si� nad tym zastanowi�.

Page 43: Metody formalne

43

In�ynieria oprogramowania

Metody formalne (43)

Plan wykładu

9 < )���� ��� ����� � ������ �

9 �� )��� �� ��� ��� �� ��� �����

9 < �� �A ��� �6

Specyfikacje aksjomatyczne i zwi�zane z nimi implementacje niestandardowe dotyczyły programów sekwencyjnych. Ale wiele systemów informatycznych ma charakter współbie�ny. Do ich modelowania wykorzystuje si� sieci Petriego, jedn� z najbardziej popularnych koncepcji dotycz�cych matematycznych podstaw informatyki.

Page 44: Metody formalne

44

In�ynieria oprogramowania

Metody formalne (44)

Carl Adam Petri

� ���.P�� )���./ P4 ��� )� �'

A ��� ��" �* ������� ������������� ��������

@ � � -��� � � �' � �S� �� � ��' � �� �����

� ��� �� �� ���< �� � ���� ��� ���� �����P��./ 4 P�

� ��./ 8 8 -

, � ���A ���� �

� � ��� ����' ��, �� # ' �6 ' �

Autor tego pomysłu, Carl Adam Petri, urodził si� w 1926 roku w Lipsku.

W wieku 36 lat obronił rozpraw� doktorsk� pt. „Komunikacja z automatami”, w której przedstawił pomysł opisu procesów współbie�nych za pomoc�notacji graficznej, opartej na solidnych podstawach matematycznych. Koncepcja, nazwana sieciami Petri’ego, bardzo szybko uzyskała wr�cz niesamowit� popularno�� i była stosowana nie tylko do opisu procesów obliczeniowych, ale tak�e systemów transportowych, produkcyjnych i innych.

Od 1988 roku Carl Petri jest honorowym profesorem Uniwersytetu w Hamburgu.

Page 45: Metody formalne

45

In�ynieria oprogramowania

Metody formalne (45)

Co to za gra?

By� mo�e inspiracj� dla profesora Petri’ego były gry planszowe. Wiele z nich jest, w istocie, opartych na procesach współbie�nych. Na slajdzie mamy plansz� do jednej z bardzo popularnych gier.

W grze tej mo�e bra� udział do czterech graczy. Ka�dy z nich ma po cztery pionki: jeden czerwone, drugi zielone itd.

Ka�dy pionek ma z góry wyznaczon� drog� do przebycia.

Jeden ruch odpowiada przesuni�ciu si� na tej drodze o tyle pozycji, ile oczek pokazuje rzucona kostka. W przypadku zilustrowanym na slajdzie rzucona kostka pokazała dwa oczka.

Teraz do gry wł�czył si� pionek zielony.

On ma swoj� drog� do przebycia po tej planszy.

Je�li rzucona kostka b�dzie miała 6 oczek,

to na planszy pojawi si� nast�puj�ca konfiguracja. Mamy zatem na jednej planszy jakby dwa procesy: czerwony, który jest o dwa miejsca bli�ej celu, i zielony, który jest o sze�� miejsc bli�ej swojego celu. Pewnie Pa�stwo ju�rozpoznali�cie t� gr�. Tak, to gra zwana chi�czykiem.

Page 46: Metody formalne

46

In�ynieria oprogramowania

Metody formalne (46)

Terminologia

� � � ��

� � � ��

Oto najmniejsza sie� Petri’ego. Jak si� za chwil� przekonamy, jest ona pod kilkoma wzgl�dami bardzo podobna do planszy gry w chi�czyka.

Po pierwsze, w sieci Petri’ego mamy miejsca oznaczane kółkami.

Page 47: Metody formalne

47

In�ynieria oprogramowania

Metody formalne (47)

Terminologia

� � � ��

� � � ��

� � � ��

W chi�czyku te� były miejsca z tym, �e miały one kształt kwadracików.

Page 48: Metody formalne

48

In�ynieria oprogramowania

Metody formalne (48)

Terminologia

T � ���� �

� � � ��

A � ��

W sieci Petriego mamy znaczniki, które mog� przechodzi� z miejsca do miejsca.

S� one odpowiednikami pionków w chi�czyku.

Page 49: Metody formalne

49

In�ynieria oprogramowania

Metody formalne (49)

Terminologia

A ��� !� �

A ��� !� �

Znacznik przemieszczaj�c si� z jednego miejsca w drugie przechodzi przez tzw. przej�cie (niektórzy nazywaj� to tranzycj� od ang. transition).

W chi�czyku odpowiednikiem przej�cia jest granica mi�dzy dwoma miejscami. Nie ma ona w tej grze �adnego znaczenia, wi�c jest niezauwa�alna. W sieciach Petriego z przej�ciami mog� by� zwi�zane ró�nego rodzaju akcje. Gdy znacznik przechodzi przez przej�cie, z którym zwi�zano akcj�, to ta akcja jest wtedy wykonywana.

Page 50: Metody formalne

50

In�ynieria oprogramowania

Metody formalne (50)

Terminologia

� � � ��

A ��� !� �

� � � ��

U' ��� �

U' ��� �

Ponadto mamy łuki wej�ciowe i wyj�ciowe. Łuki wej�ciowe zawsze prowadz� od miejsca do przej�cia, a łuki wyj�ciowe od przej�cia do miejsca. Jak wida�, punktem odniesienia jest tutaj przej�cie. Łuki wej�ciowe „wchodz�” do przej�cia, a łuki wyj�ciowe „wychodz�” z przej�cia.

Page 51: Metody formalne

51

In�ynieria oprogramowania

Metody formalne (51)

Terminologia

W sieciach Petri’ego przemieszczenie znacznika z jednego miejsca do drugiego odbywa si� zawsze poprzez przej�cie. Lewa sie� na slajdzie jest �le zbudowana, bo brakuje na niej przej�cia.

Page 52: Metody formalne

52

In�ynieria oprogramowania

Metody formalne (52)

Terminologia

Przej�cia nie mog� nast�powa� bezpo�rednio po sobie. Zawsze po przemieszczeniu znacznika przez przej�cie musi on trafi� do jakiego�miejsca. Lewa sie� na slajdzie jest �le zbudowana, bo mamy dwa, bezpo�rednio po sobie nast�puj�ce, przej�cia.

Page 53: Metody formalne

53

In�ynieria oprogramowania

Metody formalne (53)

Bardzo prosty przykład

� � � 6

���� � 6

�����������

����������

" ������ ���# # � ����-

9 ������ ��

9 ������ ��

Rozwa�my w charakterze przykładu proces opisuj�cy zachowanie si�czytelnika w bibliotece. Upraszczaj�c mo�emy przyj��, �e czytelnik znajduje si� w dwóch stanach: albo czeka na ksi��k�, albo j� czyta. Mo�emy to zamodelowa� za pomoc� nast�puj�cej sieci Petriego.

Ka�demu stanowi odpowiada jedno miejsce: z czekaniem zwi�zane jest miejsce waiting (czyli po angielsku „oczekuj�cy”), natomiast z czytaniem -reading (po angielsku „czytaj�cy”). Czytanie jest poprzedzone wykonaniem akcji start_reading (zacznij czytanie), a ko�czy si� wykonaniem akcji stop_reading (zako�cz czytanie). Znacznik znajduje si� w miejscu waiting, czyli nasz czytelnik teraz czeka.

Page 54: Metody formalne

54

In�ynieria oprogramowania

Metody formalne (54)

Bardzo prosty przykład

� � � 6

���� � 6

�����������

����������

" ������ ���# # � ����-

9 ������ ��

9 ������ ��

Poniewa� czeka, zatem gotowe jest do odpalenia przej�cie start_reading –zaznaczono je na slajdzie kolorem czerwonym. Przej�cie stop_reading nie jest czerwone, bo nie jest ono gotowe do odpalenia, gdy� nie ma znacznika w bezpo�rednio poprzedzaj�cym je miejscu reading.

Page 55: Metody formalne

55

In�ynieria oprogramowania

Metody formalne (55)

Bardzo prosty przykład

� � � 6

���� � 6

�����������

����������

" ������ ���# # � ����-

9 ������ ��

9 ������ ��

Po pewnym czasie dochodzi do odpalenia przej�cia start_reading i znacznik przechodzi do miejsca reading.

Page 56: Metody formalne

56

In�ynieria oprogramowania

Metody formalne (56)

Bardzo prosty przykład

� � � 6

���� � 6

�����������

����������

" ������ ���# # � ����-

9 ������ ��

9 ������ ��

Teraz przej�cie stop_reading jest gotowe do odpalenia, a przej�cie start_reading nie.

Page 57: Metody formalne

57

In�ynieria oprogramowania

Metody formalne (57)

Bardzo prosty przykład

� � � 6

���� � 6

�����������

����������

" ������ ���# # � ����-

9 ������ ��

9 ������ ��

Po odpaleniu przej�cia stop_reading znacznik przechodzi do miejsca waitingi przej�cie start_reading staje si� gotowe do odpalenia. Zatem wrócili�my do konfiguracji sieci, która była na samym pocz�tku.

Page 58: Metody formalne

58

In�ynieria oprogramowania

Metody formalne (58)

Bardzo prosty przykład

E � ������� ����# # � ����-

9 ������ ��

9 ������ ��

Załó�my teraz, �e mamy dwóch czytelników w bibliotece i ka�dy z nich albo czeka, albo czyta. Jak mo�na to zamodelowa� za pomoc� sieci Petri’ego?

Page 59: Metody formalne

59

In�ynieria oprogramowania

Metody formalne (59)

Bardzo prosty przykład

� � � 6

���� � 6

�����������

����������

E � ������� ����# # � ����-

9 ������ ��

9 ������ ��

Okazuje si�, �e bardzo prosto. Wystarczy wprowadzi� do poprzedniej sieci drugi znacznik reprezentuj�cy drugiego czytelnika. Oczywi�cie mo�liwych konfiguracji sieci jest teraz wi�cej ni� poprzednio.

Page 60: Metody formalne

60

In�ynieria oprogramowania

Metody formalne (60)

Bardzo prosty przykład

� � � 6

���� � 6

�����������

����������

E � ������� ����# # � ����-

9 ������ ��

9 ������ ��

Na przykład jeden znacznik mo�e wci�� czeka�, a drugi mo�e przej�� do miejsca reading

Page 61: Metody formalne

61

In�ynieria oprogramowania

Metody formalne (61)

Bardzo prosty przykład

� � � 6

���� � 6

�����������

����������

E � ������� ����# # � ����-

9 ������ ��

9 ������ ��

i wróci� do waiting.

Mo�liwy jest te� inny wariant.

Page 62: Metody formalne

62

In�ynieria oprogramowania

Metody formalne (62)

Bardzo prosty przykład

� � � 6

���� � 6

�����������

����������

E � ������� ����# # � ����-

9 ������ ��

9 ������ ��

Jeden znacznik przejdzie z waiting do reading.

Page 63: Metody formalne

63

In�ynieria oprogramowania

Metody formalne (63)

Bardzo prosty przykład

� � � 6

���� � 6

�����������

����������

E � ������� ����# # � ����-

9 ������ ��

9 ������ ��

A drugi zaraz pod��y za nim.

Page 64: Metody formalne

64

In�ynieria oprogramowania

Metody formalne (64)

Bardzo prosty przykład

� � � 6

���� � 6

�����������

����������

E � ������� ����# # � ����-

9 ������ ��

9 ������ ��

Potem znów jeden przechodzi przez stop_reading do waiting.

Page 65: Metody formalne

65

In�ynieria oprogramowania

Metody formalne (65)

Bardzo prosty przykład

� � � 6

���� � 6

�����������

����������

E � ������� ����# # � ����-

9 ������ ��

9 ������ ��

I po pewnym czasie drugi pod��y za nim. Ta wielo�� mo�liwych zachowa�(czyli indeterminizm) jest cech� charakterystyczn� systemów współbie�nych i sieci Petri’ego, które takie systemy modeluj�.

Page 66: Metody formalne

66

In�ynieria oprogramowania

Metody formalne (66)

Przej�cia konfliktowe

W procesach współbie�nych czasami zale�y nam na wzajemnym wykluczaniu si� procesów: z dwóch (lub wi�cej) procesów tylko jeden mo�e wej�� do rejonu krytycznego. Tak� sytuacj� mo�na zamodelowa� w sieciach Petri’ego za pomoc� tzw. punktu decyzyjnego.

Page 67: Metody formalne

67

In�ynieria oprogramowania

Metody formalne (67)

Przej�cia konfliktowe

�.

).2

)..

Mamy lewy proces zwi�zany z przej�ciem (tranzycj�) t1 i obejmuj�cy miejsca p10, p11.

Page 68: Metody formalne

68

In�ynieria oprogramowania

Metody formalne (68)

Przej�cia konfliktowe

�P�.

).2 )P2

).. )P.

Jest te� prawy proces zwi�zany z tranzycj� t2 i obejmuj�cy miejsca p20, p21.

Page 69: Metody formalne

69

In�ynieria oprogramowania

Metody formalne (69)

Przej�cia konfliktowe

A ' � ��������� � �

�. �P

)2)2).2 )P2

).. )P.

Miejsce p0 jest tzw. punktem decyzyjnym.

Page 70: Metody formalne

70

In�ynieria oprogramowania

Metody formalne (70)

Przej�cia konfliktowe

A ' � ��������� � �

�. �P

)2).2 )P2

).. )P.

W konfiguracji pokazanej na slajdzie przej�cia t1 i t2 s� gotowe do odpalenia, bo w ka�dym miejscu, z którego wychodzi łuk wej�ciowy znajduj�si� znaczniki (chodzi o miejsca p10, p0 i p20).

Page 71: Metody formalne

71

In�ynieria oprogramowania

Metody formalne (71)

Przej�cia konfliktowe

A ' � ��������� � �

�. �P

)2).2 )P2

).. )P.

Je�li odpalone zostanie przej�cie t1, to zostan� „skonsumowane” znaczniki znajduj�ce si� w miejscach p10 i p0, natomiast pojawi si� znacznik w miejscu p11 „wyprodukowany” przez łuk wyj�ciowy tranzycji t1. W rezultacie �adne przej�cie nie b�dzie gotowe od odpalenia. Lewe (t1) nie, bo nie ma znaczników w miejscach p10 i p0. Prawe przej�cie (t2) te� nie jest gotowe do odpalenia, bo co prawda jest znacznik w p20 ale brakuje znacznika w p0 (je�li tranzycja ma dwa łuki wej�ciowe, to znaczniki musz� by� w obu miejscach zwi�zanych z tymi łukami, aby tranzycja była gotowa do odpalenia).

Page 72: Metody formalne

72

In�ynieria oprogramowania

Metody formalne (72)

Przej�cia konfliktowe

A ' � ��������� � �

�. �P

)2)2).2 )P2

).. )P.

Wró�my na chwil� do konfiguracji pocz�tkowej. Oczywi�cie, jest mo�liwe zachowanie alternatywne. Zamiast przej�cia t1 mo�e by� odpalone przej�cie t2.

Page 73: Metody formalne

73

In�ynieria oprogramowania

Metody formalne (73)

Przej�cia konfliktowe

A ' � ��������� � �

�. �P

)2)2).2 )P2

).. )P.

Otrzymamy wówczas konfiguracj� prezentowan� na slajdzie, która jest konfiguracj� symetryczn� do poprzedniej. Jak wi�c wida�, metod� punktu decyzyjnego mo�emy modelowa� wzajemne wykluczanie si� procesów.

Page 74: Metody formalne

74

In�ynieria oprogramowania

Metody formalne (74)

Inny przykład

while (true){t1;. . .t2;. . .t3;}

while (.. t4 ..){... t5; ...}

Klient

Serwer

Spróbujmy teraz naszkicowa�, tytułem przykładu, model systemu pracuj�cego w układzie klient-serwer.

Klient pracuje w p�tli niesko�czonej. Wykonuje operacj� t1, potem jakie� nieistotne operacje pomocnicze, operacj� t2, znów nieistotne operacje pomocnicze i na ko�cu operacj� t3.

Serwer jest wywoływany przez klienta mi�dzy operacjami t1 a t2. Po wywołaniu serwera klient niezale�nie dalej prowadzi swoje obliczenia ł�cznie z operacj� t2.

Obsługa wywołania jest realizowana przez serwer za pomoc� p�tli typu while. Aby sprawdzi�, czy kontynuowa� obliczenia serwer wywołuje funkcj� t4 (mo�e to by� np. sprawdzenie stanu bazy danych). Je�li obliczenia maj� by� kontynuowane, to najpierw s�wykonywane jakie� mało istotne operacje pomocnicze, potem operacja t5 i znów nieistotne operacje pomocnicze.

Po wyj�ciu z p�tli while serwer ko�czy swoje obliczenia i przekazuje sterowanie do klienta, który nie wykona operacji t3 dopóki nie otrzyma wyników pracy serwera.

Page 75: Metody formalne

75

In�ynieria oprogramowania

Metody formalne (75)

Inny przykład

t4t5

while (.. t4 ..){... t5; ...}

Serwer

Zamodelowanie pracy serwera jest proste. Mamy do wykonania w p�tli dwie operacje, zatem tworzymy sie� składaj�c� si� z dwóch przej�� t1 i t2, dodajemy dwa miejsca i ł�czymy wszystko łukami tak, aby znacznik mógłkr��y� po sieci w sposób zgodny z programem serwera.

Page 76: Metody formalne

76

In�ynieria oprogramowania

Metody formalne (76)

Inny przykład

t1

t2

t3

t4t5

while (true){t1;. . .t2;. . .t3;}

Klient

Zamodelowanie pracy klienta odbywa si� na podobnej zasadzie. Mamy trzy sekwencyjne operacje wykonywane w p�tli. Zatem tworzymy „�cie�k�”tranzycji t1, t2 i t3, po czym dodajemy łuk zwrotny do miejsca zwi�zanego z łukiem wej�ciowym tranzycji t1.

Page 77: Metody formalne

77

In�ynieria oprogramowania

Metody formalne (77)

Inny przykład

while (1)

{

t1;

. . .

t2;

. . .

t3;

}

while (..t4..)

{... t5; ...

}

t1

t2

t3

t4t5

Jak teraz poł�czy� te dwa modele cz��ciowe, aby dosta� model cało�ci? Jak si� okazuje, nie jest to trudne.

Wystarczy doda� dwa łuki: łuk wyj�ciowy z tranzycji t1 i łuk wej�ciowy do tranzycji t3.

Page 78: Metody formalne

78

In�ynieria oprogramowania

Metody formalne (78)

Inny przykład

while (1)

{

t1;

. . .

t2;

. . .

t3;

}

while (..t4..)

{... t5; ...

}

t1

t2

t3

t4t5

Na pocz�tku tranzycja t1 jest gotowa do odpalenia, czyli klient jest gotowy do wykonania operacji t1.

Page 79: Metody formalne

79

In�ynieria oprogramowania

Metody formalne (79)

Inny przykład

while (1)

{

t1;

. . .

t2;

. . .

t3;

}

while (..t4..)

{... t5; ...

}

t1

t2

t3

t4t5

Po jej wykonaniu dochodzi do zrównoleglenia pracy klienta i serwera: ka�dy z łuków wyj�ciowych tranzycji t1 „generuje” swój znacznik. Klient jest gotowy do wykonania operacji t2, natomiast serwer mo�e ju� wykona� t4. Załó�my, �e obie operacje zostaj� wykonane równolegle.

Page 80: Metody formalne

80

In�ynieria oprogramowania

Metody formalne (80)

Inny przykład

while (1)

{

t1;

. . .

t2;

. . .

t3;

}

while (..t4..)

{... t5; ...

}

t1

t2

t3

t4t5

Wówczas znaczniki przemieszczaj� si� i gotowe s� do odpalenia tranzycjet5 oraz t3. Zauwa�my, �e lewe dolne miejsce pełni rol� punktu decyzyjnego: albo zostanie odpalona tranzycja t5 albo t3. Załó�my, �e serwer musi wykona� operacj� t5.

Page 81: Metody formalne

81

In�ynieria oprogramowania

Metody formalne (81)

Inny przykład

while (1)

{

t1;

. . .

t2;

. . .

t3;

}

while (..t4..)

{... t5; ...

}

t1

t2

t3

t4t5

Zatem znacznik przechodzi przez tranzycj� t5 i tranzycja t3 przestaje by�gotowa do odpalenia. Ale jest teraz gotowe do odpalenia przej�cie t4. Jest to jedyne gotowe do odpalenia przej�cie, wi�c nie trudno zgadn��, co si� teraz stanie.

Page 82: Metody formalne

82

In�ynieria oprogramowania

Metody formalne (82)

Inny przykład

while (1)

{

t1;

. . .

t2;

. . .

t3;

}

while (..t4..)

{... t5; ...

}

t1

t2

t3

t4t5

Przej�cie t4 zostaje odpalone i znów s� gotowe do odpalenia przej�cia t5 i t3. Załó�my, �e tym razem serwer zako�czył swoje obliczenia.

Page 83: Metody formalne

83

In�ynieria oprogramowania

Metody formalne (83)

Inny przykład

while (1)

{

t1;

. . .

t2;

. . .

t3;

}

while (..t4..)

{... t5; ...

}

t1

t2

t3

t4t5

Zatem odpalona zostaje tranzycja t3, zostaj� „skonsumowane” oba znaczniki zwi�zane z łukami wej�ciowymi i pojawia si� znacznik w miejscu na samej górze, czyli wrócili�my do konfiguracji pocz�tkowej. Jak wi�c wida�, sieci Petri’ego mog� słu�y� do modelowania istniej�cego oprogramowania. Je�li dobrze zbudujemy model oprogramowania i poka�emy (np. udowodnimy), �e model ten ma pewn� interesuj�c� nas wła�ciwo��, to mo�emy ufa�, �e oprogramowanie równie� posiada t� wła�ciwo�� zwłaszcza, je�li potwierdzaj� to testy i wyniki inspekcji.

Page 84: Metody formalne

84

In�ynieria oprogramowania

Metody formalne (84)

Skróty notacyjne

t3

W sieci Petri’ego z ostatniego przykładu wyst�pował fragment z przej�ciem t3 przedstawiony na slajdzie.

Aby przej�cie t3 było gotowe do odpalenia znaczniki musz� by� we wszystkich miejscach zwi�zanych z łukami wej�ciowymi.

Page 85: Metody formalne

85

In�ynieria oprogramowania

Metody formalne (85)

Skróty notacyjne

t3 t30

Rozwa�my sie� Petri’ego z dwoma łukami wej�ciowymi wychodz�cymi z tego samego miejsca. Ile (przynajmniej) znaczników musi by� w górnym miejscu, aby tranzycja t30 była gotowa do odpalenia?

Tak jest – potrzeba przynajmniej dwóch znaczników, bo ka�dy łuk wej�ciowy „konsumuje” jeden znacznik.

Page 86: Metody formalne

86

In�ynieria oprogramowania

Metody formalne (86)

Skróty notacyjne

P

t3 t30 t300

Zamiast rysowa� dwa łuki wej�ciowe wychodz�ce z tego samego miejsca mo�na narysowa� jeden łuk wej�ciowy i dopisa� przy nim liczb� dwa – tak jak na slajdzie.

Wówczas, aby tranzycja t300 była gotowa do odpalenia, w górnym miejscu musz� by� przynajmniej dwa znaczniki.

Page 87: Metody formalne

87

In�ynieria oprogramowania

Metody formalne (87)

Skróty notacyjne

P

t3 t30 t300

Odpalenie tranzycji t300 spowoduje zabranie dwóch znaczników z miejsca górnego i wstawienie jednego znacznika do miejsca dolnego.

Page 88: Metody formalne

88

In�ynieria oprogramowania

Metody formalne (88)

Skróty notacyjne

P

t3000

Je�li chcieliby�my, by przej�cie t300 generowało np. trzy znaczniki, to powinni�my przy łuku wyj�ciowym dopisa� trójk� tak, jak to zrobiono na slajdzie.

Page 89: Metody formalne

89

In�ynieria oprogramowania

Metody formalne (89)

Skróty notacyjne

P

t3000

Wówczas odpalenie tranzycji t300 spowoduje pojawienie si� w dolnym miejscu trzech znaczników.

Page 90: Metody formalne

90

In�ynieria oprogramowania

Metody formalne (90)

Problem zastoju

AllocateLP;

AllocateHD;

UseHDandLP;

ReleaseHD;

ReleaseLP;

LP HDBA

AllocateHD;

AllocateLP;

UseHDandLP;

ReleaseLP;

ReleaseHD;

Spróbujemy teraz wykorzysta� sieci Petri’ego do analizy systemu informatycznego pod k�tem zastoju. Załó�my, �e w pewnym biurze s� dwa komputery, A i B, które współdziel�drukark� LP i dysk HD.

Najistotniejszy, z punktu widzenia naszej analizy, fragment oprogramowania komputera A mo�na sprowadzi� do sekwencji pi�ciu instrukcji.

Najpierw komputer A wykonuje operacj� AllocateLP, za pomoc� której przydzielona zostaje mu drukarka LP (je�li drukarka b�dzie zaj�ta, to wykonanie operacji AllocateLP b�dzie si�przedłu�ało).

Potem komputer A wykonuje operacj� AllocateHD, w efekcie której zostaje mu przydzielony dysk HD.

Maj�c przydzielon� drukark� LP i dysk HD, komputer A przysyła dane z dysku na drukark�– jest to reprezentowane za pomoc� operacji UseHDandLP.

Po wykorzystaniu tych urz�dze� komputer A najpierw zwalnia dysk HD, a nast�pnie drukark� LP.

Program komputera B jest podobny. Najpierw jest sekwencja operacji przydzielaj�cych dysk HD i drukark� LP.

Potem nast�puje wykorzystanie obu tych urz�dze�.

A na ko�cu urz�dzenia zostaj� zwolnione.

Jak nie trudno zauwa�y�, przedstawione rozwi�zanie ma pewn� wad�.

Page 91: Metody formalne

91

In�ynieria oprogramowania

Metody formalne (91)

Problem zastoju

AllocateLP;

AllocateHD;

UseHDandLP;

ReleaseHD;

ReleaseLP;

LP HDBA

AllocateHD;

AllocateLP;

UseHDandLP;

ReleaseLP;

ReleaseHD;

Załó�my, �e komputer A wykonał pierwsz� operacj�, dzi�ki czemu ma przydzielon� drukark� LP, a komputer B wykonał w tym czasie swoj�pierwsz� operacj� i ma przydzielony dysk HD.

Page 92: Metody formalne

92

In�ynieria oprogramowania

Metody formalne (92)

Problem zastoju

AllocateLP;

AllocateHD;

UseHDandLP;

ReleaseHD;

ReleaseLP;

LP HDBA

AllocateHD;

AllocateLP;

UseHDandLP;

ReleaseLP;

ReleaseHD;

Je�li teraz komputer A przejdzie do wykonywania operacji przydziału dysku, AllocateHD, to jego działanie zostanie wstrzymane, bowiem dysk HD jest ju�przydzielony do komputera B.

Page 93: Metody formalne

93

In�ynieria oprogramowania

Metody formalne (93)

Problem zastoju

AllocateLP;

AllocateHD;

UseHDandLP;

ReleaseHD;

ReleaseLP;

LP HDBA

AllocateHD;

AllocateLP;

UseHDandLP;

ReleaseLP;

ReleaseHD;

?

Komputer B, przechodz�c do wykonania operacji przydziału drukarki, AllocateLP, te� zostanie zawieszony, gdy� drukarka jest ju� przydzielona komputerowi A i nie została jeszcze przez ten komputer zwolniona operacj�ReleaseLP, gdy� komputer A jest zawieszony w oczekiwaniu na zwolnienie dysku przez komputer B. Mamy zatem zastój. �aden z procesów nie mo�e dalej kontynuowa� swoich oblicze�. Jest to ewidentna wada tak zaprogramowanego systemu. Jak t� wad� mo�na by wykry� na poziomie sieci Petri’ego?

Page 94: Metody formalne

94

In�ynieria oprogramowania

Metody formalne (94)

Problem zastoju

$ �����: ;

$ ������ &

* � �: ; ��� � &

< � ��� �: ;

< � ��� �� &

A

* ������� A Q

* ������, E Q

� � �, E �� �� A Q

+ ����� �, E Q

+ ����� �� A Q

Program komputera A mo�na łatwo zamodelowa� za pomoc� sekwencji tranzycji tak, jak to pokazano na slajdzie. W sieci Petri’ego dodano jeszcze łuk zwrotny, by pokaza�, �e ta sekwencja operacji mo�e by� powtarzana wielokrotnie.

Page 95: Metody formalne

95

In�ynieria oprogramowania

Metody formalne (95)

Problem zastoju

$ �����: ;

$ ������ &

* � �: ; ��� � &

< � ��� �: ;

< � ��� �� &

$ ������ &

$ �����: ;

* � �: ; ��� � &

< � ��� �� &

< � ��� �: ;

B

* ������, E Q

* ������� A Q

� � �, E �� �� A Q

+ ����� �� A Q

+ ����� �, E Q

Program komputera B mo�na zamodelowa� na tej samej zasadzie.

Page 96: Metody formalne

96

In�ynieria oprogramowania

Metody formalne (96)

Problem zastoju

$ �����: ;

$ ������ &

* � �: ; ��� � &

< � ��� �: ;

< � ��� �� &

$ ������ &

$ �����: ;

* � �: ; ��� � &

< � ��� �� &

< � ��� �: ;

, E

Dysk HD jest zasobem, który jest konieczny do wykonania operacji AllocateHD i jest zwalniany za pomoc� operacji ReleaseHD. Zamodelujemy go wprowadzaj�c zwi�zane z nim miejsce HD. Operacje AllocateHD b�d�miały dodatkowe łuki wej�ciowe prowadz�ce z miejsca HD, natomiast operacje ReleaseHD b�d� miały dodatkowe łuki wyj�ciowe id�ce do miejsca HD.

Page 97: Metody formalne

97

In�ynieria oprogramowania

Metody formalne (97)

Problem zastoju

$ �����: ;

$ ������ &

* � �: ; ��� � &

< � ��� �: ;

< � ��� �� &

$ ������ &

$ �����: ;

* � �: ; ��� � &

< � ��� �� &

< � ��� �: ;

, E � A

Drukark� LP zamodelujemy na tej samej zasadzie.

Page 98: Metody formalne

98

In�ynieria oprogramowania

Metody formalne (98)

Problem zastoju

$ �����: ;

$ ������ &

* � �: ; ��� � &

< � ��� �: ;

< � ��� �� &

$ ������ &

$ �����: ;

* � �: ; ��� � &

< � ��� �� &

< � ��� �: ;

, E � A

Pocz�tkow� konfiguracj� sieci Petri’ego przedstawiono na slajdzie. Znaczniki s� w czterech górnych miejscach, w zwi�zku z czym przej�cia AllocateHD i AllocateLP s� gotowe do odpalenia.

Page 99: Metody formalne

99

In�ynieria oprogramowania

Metody formalne (99)

Problem zastoju

$ �����: ;

$ ������ &

* � �: ; ��� � &

< � ��� �: ;

< � ��� �� &

$ ������ &

$ �����: ;

* � �: ; ��� � &

< � ��� �� &

< � ��� �: ;

, E � A

Załó�my, �e zostanie odpalona tranzycja AllocateHD. Wówczas b�dziemy mieli konfiguracj� przedstawion� na slajdzie: b�d� gotowe do odpalenia obie tranzycje AllocateLP.

Page 100: Metody formalne

100

In�ynieria oprogramowania

Metody formalne (100)

Problem zastoju

$ �����: ;

$ ������ &

* � �: ; ��� � &

< � ��� �: ;

< � ��� �� &

$ ������ &

$ �����: ;

* � �: ; ��� � &

< � ��� �� &

< � ��� �: ;

, E � A

Je�li zostanie odpalona prawa, to przejdziemy do konfiguracji pokazanej na kolejnym slajdzie. Cech� charakterystyczn� tej konfiguracji jest brak przej�cia gotowego do odpalenia. W ten wła�nie sposób ujawnia si� w sieci Petri’ego zastój.

Page 101: Metody formalne

101

In�ynieria oprogramowania

Metody formalne (101)

Plan wykładu

A �� ' � �� �

Czas na podsumowanie wykładu.

Page 102: Metody formalne

102

In�ynieria oprogramowania

Metody formalne (102)

Specyfikacje aksjomatyczne

�C � ����� * # ��� �� �.-���� ����-�A � � ����-�E �

��' )�9* # �����9� �� �.������;;�≡≡≡≡ � * # J �� �� �.��� �� �

��� � ��' )�9* # ���;

�� �

� �� �� � E �+ ? " $ � + K �J

���� � ��)� ��� ���A � � ���E �

: ��' � �� )��-�E ��

���-���� ��C�A � � ��C�E ��→→→→ E ��

��' )-���� ��C�E ��→→→→ A � � ��

������-���� ��C�E ��→→→→ E �

Mówili�my o specyfikacjach aksjomatycznych. Do ilustracji wybrali�my notacj� RAISE i zapisali�my w niej specyfikacj� aksjomatyczn�elektronicznej ksi��ki telefonicznej. Jedn� z operacji wykonywanych przez t�ksi��k� jest operacja lookup słu��ca do znajdowania numeru telefonu podanego abonenta w podanej ksi��ce telefonicznej. Jak wida� na slajdzie, specyfikacje aksjomatyczne maj� cz�sto charakter rekurencyjny – operacja lookup jest zdefiniowana za pomoc� operacji lookup.

Page 103: Metody formalne

103

In�ynieria oprogramowania

Metody formalne (103)

Implementacje niestandardowe

∀∀∀∀C )�' � 9C�����9;;J �C

∀∀∀∀C�� )�' � 9C�� ' ��9�;;J �� ' ��9)�' � 9C��;;

��� ������� �� �-

)�' � 9P��0;J �3

� � ����9;

G ����' �� �.Q�H

� � � ' �� 9 � � C;

G ����' �� �PRCQ�H

� � )�' � 9 � � C�� � � �;

G ����' �� �CR�Q�H

)�' � 9P��0;�J �4

Mówili�my te� o implementacjach niestandardowych. S� to takie implementacje, które spełniaj� warunki stawiane przez specyfikacj�aksjomatyczn� ale daj� wyniki sprzeczne z naszymi oczekiwaniami. Problem polega na złym u�yciu takiej implementacji. Zamiast pisa� 2 powinni�my napisa� succ(succ(zero())). Podobnie powinni�my przedstawi� trójk� i szóstk� – wówczas nie byłoby problemu. Oczywi�cie, byłoby to mało wygodne. Aby unikn�� tego typu sytuacji najlepiej wzbogaci� specyfikacj�formaln� o kilka nawet prostych testów akceptacyjnych takich, jak ten pokazany na dole slajdu jako „Nasze oczekiwania”.

Page 104: Metody formalne

104

In�ynieria oprogramowania

Metody formalne (104)

Sieci Petri’ego

while (1)

{

t1;

. . .

t2;

. . .

t3;

}

while (..t4..)

{... t5; ...

}

t1

t2

t3

t4t5

Wiele uwagi po�wi�cili�my sieciom Petri’ego. Mi�dzy innymi pokazali�my jak za ich pomoc� modelowa� oprogramowanie.

Page 105: Metody formalne

105

In�ynieria oprogramowania

Metody formalne (105)

Problem zastoju

$ �����: ;

$ ������ &

* � �: ; ��� � &

< � ��� �: ;

< � ��� �� &

$ ������ &

$ �����: ;

* � �: ; ��� � &

< � ��� �� &

< � ��� �: ;

, E � A

Przedstawiłem te�, na przykładzie, modelowanie i analiz� zwi�zane z wykrywaniem zastoju.