metody formalne
TRANSCRIPT
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.
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.
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.
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.
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.
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�.
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.
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.
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.
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”.
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.
12
In�ynieria oprogramowania
Metody formalne (12)
Plan wykładu
9 < )���� ��� ����� � ������ �
9 �� )��� �� ��� ��� �� ��� �����
9 < �� �A ��� �6
Zaczynamy od specyfikacji aksjomatycznych.
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.
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.
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.
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.
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.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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
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.
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.
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?
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.
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.
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.
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.
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.
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).
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.
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?
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.
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.
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.
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�.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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?
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.
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
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.
62
In�ynieria oprogramowania
Metody formalne (62)
Bardzo prosty przykład
� � � 6
���� � 6
�����������
����������
E � ������� ����# # � ����-
9 ������ ��
9 ������ ��
Jeden znacznik przejdzie z waiting do reading.
63
In�ynieria oprogramowania
Metody formalne (63)
Bardzo prosty przykład
� � � 6
���� � 6
�����������
����������
E � ������� ����# # � ����-
9 ������ ��
9 ������ ��
A drugi zaraz pod��y za nim.
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.
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�.
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.
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.
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.
69
In�ynieria oprogramowania
Metody formalne (69)
Przej�cia konfliktowe
A ' � ��������� � �
�. �P
)2)2).2 )P2
).. )P.
Miejsce p0 jest tzw. punktem decyzyjnym.
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).
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).
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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�.
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.
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.
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?
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.
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.
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.
97
In�ynieria oprogramowania
Metody formalne (97)
Problem zastoju
$ �����: ;
$ ������ &
* � �: ; ��� � &
< � ��� �: ;
< � ��� �� &
$ ������ &
$ �����: ;
* � �: ; ��� � &
< � ��� �� &
< � ��� �: ;
, E � A
Drukark� LP zamodelujemy na tej samej zasadzie.
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.
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.
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.
101
In�ynieria oprogramowania
Metody formalne (101)
Plan wykładu
A �� ' � �� �
Czas na podsumowanie wykładu.
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.
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”.
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.
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.