background image

METODY MODELOWANIA 

PROCESÓW 

cz. III

Dodatkowe narzędzia modelowania 

Narzędzia do tej pory opisane powinny 
wystarczyć do wykonania dowolnego 
projektu. Istnieje jednak szereg dodatkowych 
narzędzi: 

diagramy przepływu sterowania i ich odmiany

systemowe diagramy przepływu

diagramy HIPO (Hierarchy Input Process Output) i 
diagramy struktury

odmiany diagramów przepływu danych

odmiany diagramów związków encji

Klasyczny diagram przepływu 

sterowania 

Jednym z 
najstarszych i 
najlepiej znanych 
narzędzi 
modelowania jest 
klasyczny diagram 
przepływu 
sterowania 

Klasyczny diagram przepływu 

sterowania

Stosowany przy programowaniu lub przetwarzaniu danych. 
Notacja ma tylko trzy składniki: 

Prostokąty, które reprezentują wykonywane instrukcje 
komputera lub ciągłe sekwencje instrukcji

Romby, które reprezentują decyzje

Strzałki łączące czworokąty reprezentują przepływ 
sterowania. Z prostokąta może wychodzić tylko jedna strzałka, 
tzn. kiedy zakończy się wykonanie instrukcji komputera, 
można przejść tylko do pojedynczej następnej instrukcji lub 
decyzji. Z decyzji zaś mogą wychodzić tylko dwie strzałki 

background image

Klasyczny diagram przepływu 

sterowania

Diagramy przepływu sterowania pozwalają 
przedstawić proceduralną logikę programu 

Diagramy przepływu sterowania są narzędziami 
programowania lecz  niektórzy analitycy używają ich 
do dokumentowania specyfikacji procesów, jako 
alternatywy dla strukturalnego języka polskiego

Jakakolwiek technika dokumentacji, która poprawnie 
opisuje wymagania użytkownika i umożliwia 
efektywną komunikację jest zadawalająca 

Prosty przykład 

Obliczyć średnią arytmetyczną z wartości

Wartości zapisane są w wektorze A

Oznaczenia:

– liczba wartości

– indeks  

A[i] – i-ty element wektora

Suma – zmienna pomocnicza

Średnia – wynik 

SEKWENCJA

PĘTLA Z LICZNIKIEM

DECYZJA

Odmiany diagramu przepływu 

sterowania 

Istnieje kilka odmian diagramów, z których 
cztery są najczęściej wykorzystywane. Są to 
diagramy : 

Nassi-Shneidermana

Ferstla

Hamiltona-Zeldina

Analizy problemu

background image

Diagram Nassi-Shneidermana

Diagramy Nassi-Shneidermana wprowadzono w latach 70-tych jako sposób 
wymuszenia strukturalnego podejścia do programowania

Niektórzy twierdzą jednak, że diagramy Nassi-Shneidermana to po prostu 
strukturalny język naturalny z dorysowanymi wokoło prostokątami 

Diagramy Hamiltona-Zeldina 

Diagramy Hamiltona-Zeldina powstały 
podczas budowy oprogramowania dla 
projektu Space Shuttle w NASA

Typowy diagram, czasem nazywany 
diagramem projektowania strukturalnego, 
pokazano na kolejnym rysunku

Diagramy Hamiltona-Zeldina 

Diagramy Hamiltona-Zeldina 

Prostokąty mają takie samo znaczenie jak w 
diagramach przepływu sterowania, czyli reprezentują 
wykonywalną instrukcję lub ciąg wykonywalnych 
instrukcji

Wydłużony pięciokąt służy zarówno do pokazania 
instrukcji IF, jak i do iteracji DO-WHILE/REPEAT 
UNTIL

Sterowanie zwykle przepływa z góry na dół 
diagramu, z wyjątkiem testów IF i iteracji (DO i 
REPEAT), kiedy biegnie od lewej do prawej 

background image

Diagramy analizy problemów PAD 

Diagramy analizy problemów (PAD – problem analysis 
diagrams), opracowane w Hitachi Corporation, są to 
dwuwymiarowe reprezentacje logiki programów o 
strukturze drzewa

Składniki diagramu pokazano na rysunku a

Diagramy te czyta się z góry na dół, z konstrukcjami IF i 
iteracjami biegnącymi od lewej do prawej, przykład na 
rysunku b

Diagramy analizy problemów PAD 

Systemowe diagramy przepływu 

Omówione przykłady przydają się do 
pokazania szczegółów sterowania, czy to 
wewnątrz programu komputerowego czy też 
wewnątrz specyfikacji dla pojedynczego 
procesu na DFD

Natomiast ogólne spojrzenie na organizację 
systemu można przedstawić za pomocą 
innego rodzaju diagramu przepływu 
sterowania nazwanym systemowym 
diagramem przepływu co ilustruje kolejny 
rysunek

Systemowe diagramy przepływu 

background image

Systemowe diagramy przepływu

Prostokąty reprezentują agregaty operacyjne 
oprogramowania (np. programy 
komputerowe, kroki zadań lub inne jednostki 
oprogramowania)

Systemowy diagram przepływu pokazuje też 
różne rodzaje plików fizycznych (np. plików na 
różnych nośnikach)

Może też przedstawiać obecność terminali 
interakcyjnych i linii telekomunikacyjnych

Systemowe diagramy przepływu

Systemowy diagram przepływu przydaje się często projektantom 
systemu, którzy muszą opracować ogólną architekturę sprzętu i 
oprogramowania, implementującą wymagania użytkownika

Nie jest to jednak odpowiednie narzędzie modelowania dla 
analizy systemów, ponieważ kładzie nacisk na szczegóły 
implementacji fizycznej, których analityk i użytkownik nie powinni 
omawiać

Zamiast zajmować się plikiem dyskowym, użytkownik i analityk 
powinni przedyskutować zawartość tego pliku; zamiast mówić o 
poszczególnych programach komputerowych, powinni zajmować 
się funkcjami, które trzeba zrealizować

Diagramy HIPO 

Diagramy HIPO opracowano w IBM w latach 
70-tych

Są używane przez niektórych analityków do 
ogólnej prezentacji funkcji realizowanych 
przez system, jak też dekompozycji funkcji na 
podfunkcje itd.

Typowy diagram jest na rysunku

Diagramy HIPO

background image

Diagramy HIPO

W niektórych kręgach użytkowników diagramy HIPO 
mogą stanowić pożyteczne narzędzia modelowania, 
ponieważ przypominają znane diagramy 
organizacyjne, opisujące hierarchię kierownictwa

Nie pokazują one jednak danych używanych lub 
wytwarzanych przez system

Chociaż może być zrozumiałe dążenie do 
zmniejszenia nacisku na dane w pewnych sytuacjach, 
jednakże nie jest pożyteczna całkowita ich eliminacja 

Diagramy HIPO

W rzeczywistości istnieje drugi składnik diagramu 
HIPO ujawniający dane

Diagram z kolejnego rysunku nosi nazwę VTOC, czyli 
wizualny spis treści (ang. visual table of contents)

Każda funkcja reprezentowana prostokątem może 
być opisana w szczegółach na diagramie IPO (ang. 
input-process-output - wejście-proces-wyjście). 

Diagramy HIPO

Diagramy struktury

Szeroko używaną odmianą diagramów HIPO 
są diagramy struktury

Typowy diagram struktury jest pokazany na 
kolejnym rysunku

Oprócz hierarchii funkcyjnej przedstawia on 
również interfejs danych między składowymi

background image

Diagramy struktury

Diagramy struktury

W przeciwieństwie do poprzednich diagramów 
prostokąt na diagramie struktury nie reprezentuje 
pojedynczej instrukcji obliczalnej albo ciągu 
instrukcji, lecz moduł

Typowe przykłady modułów np. procedury w Pascalu 

Strzałki łączące moduły nie przedstawiają instrukcji 
GOTO, lecz wywołania procedur

W tej notacji zakłada się, że procedura po 
zakończeniu pracy zwróci sterowanie do modułu, 
który ją wywołał

Odmiany diagramów związków encji 

Omówione diagramy związków encji, 
większość analityków uznaje za najbardziej 
ogólny, abstrakcyjny sposób reprezentowania 
związków między danymi

Są jednak również inne popularne notacje do 
struktur danych. Są nimi diagramy:

Bachmana

struktury danych DeMarco

Diagram Bachmana

Jedną z najpopularniejszych form modeli danych jest 
diagram Bachmana

Typowy diagram pokazano na rysunku 

Jest on bardzo podobny do diagramu związków encji, 
omawianego poprzednio, lecz nie pokazuje jawnie 
związków między obiektami

Strzałki z podwójnym grotem oznaczają związki 
jeden-do-wielu

background image

Diagram Bachmana

Diagramy struktury danych DeMarco

Diagramy struktury danych DeMarco zdobyły 
popularność w latach 80-90

Typowy diagram znajduje się na kolejnym rysunku 

Oprócz pokazania każdego obiektu z modelu danych, 
diagram przedstawia też pola kluczowe

W prezentowanym sposobie podejścia  używamy 
konwencji pokazywania pól kluczowych w słowniku 
danych 

Diagramy struktury danych DeMarco

Analiza obiektowa 

i projektowanie

background image

Wprowadzenie

Rodowód w dziedzinie inżynierii 
oprogramowania

W latach pięćdziesiątych XX wieku, kiedy 
zaczęto stosować komputery, programy były 
tworzone ad hoc

Każdy system stanowił unikatowy, 
dostosowany do potrzeb danego użytkownika 
produkt intelektualny

Nie istniały metody formalnego projektowania 

Wprowadzenie

Utrzymanie poprawności działania czy 
wprowadzanie udoskonaleń w tego typu 
systemach było niezwykle trudne

Każda zmiana w systemie powodowała 
powstanie systemu jeszcze trudniejszego do 
pielęgnowania i poprawiania 

Wprowadzenie

Lata sześćdziesiąte to wprowadzenie bardziej 
metodycznego podejścia do projektowania 
systemów informacyjnych

Podejście to, zwane powszechnie 
kaskadowym, wymagało, aby w procesie 
tworzenia systemu zostało zrealizowanych 
kilka formalnych etapów  

Wprowadzenie

Każdy z etapów, takich jak analiza wymagań, 
modelowanie, projektowanie szczegółowe itd., 
musiał być zakończony, aby mógł się rozpocząć etap 
następny

Zakończenie każdego etapu oznaczało dostarczenie 
jednego lub kilku kluczowych dokumentów

Dlatego też podejście kaskadowe do opracowania 
systemu często charakteryzowało się produkcją 
olbrzymiej ilości dokumentacji 

background image

Wprowadzenie

Nadal jednak, pomimo tych innowacji, duże, 
złożone systemy informatyczne przekraczały 
budżet, harmonogram i nie spełniały 
wymagań użytkowników 

Wprowadzenie

Etapy procesu kaskadowego

analiza potrzeb

specyfikacja systemu

projektowanie

programowanie

testowanie

integracja

adaptacja i modyfikacja

eksploatacja

dezaktualizacja

Wprowadzenie

W latach siedemdziesiątych nastąpiła duża zmiana w 
filozofii tworzenia systemów

Tom DeMarco wprowadził pojęcie inżynieria 
systemowa, która oparta jest na modelu 

Twierdził, że złożone systemy informatyczne 
powinny być budowane podobnie jak duży, złożony 
system inżynierski

Jego zdaniem, najpierw powinny powstać modele 
systemu „działające” na papierze, a dopiero potem 
powinny być zatwierdzone środki na ich praktyczną 
realizację 

Wprowadzenie

U podstaw tej filozofii leżało stwierdzenie, że 
użytkownicy powinni mieć możliwość zobaczenia, jak 
będzie działał ich przyszły system, zanim rzeczywiście 
dojdzie 
do tworzenia go! 

W latach siedemdziesiątych było to radykalne 
odejście od prostego "przywiązania do kodu" i oceny 
produktu, jeśli powstały kod stwarzał pewne pozory 
poprawnego działania

background image

Wprowadzenie

Panował pogląd, że jeśli kod nie zadziała, to 
trudno

Nie należy się tym przejmować, dopóki system 
nie zostanie wdrożony, a to może nastąpić za 
kilka miesięcy, jeśli nie lat! 

Wprowadzenie

Podejście oparte na modelu jest takie samo jak 
podejście stosowane przez architektów przy określaniu i 
projektowaniu dużych złożonych budynków 

Architekci budują modele domów w odpowiedniej skali, 
tak żeby użytkownicy mogli wyobrazić sobie, jak ich 
domy będą wyglądać w przyszłości 

Modele te ułatwiają porozumienie i negocjacje między 
użytkownikami, projektantami, budowniczymi itp. 

Wprowadzenie

Budowa 
systemu na 
podstawie 
modelu 

Wprowadzenie

Filozofia oparta na modelu została w zasadzie 
przyjęta we wszystkich nowoczesnych 
metodykach inżynierii oprogramowania

Różnice między poszczególnymi podejściami 
dotyczą określenia, jakie modele powinny być 
budowane, 
w jaki sposób powinny być budowane i kto 
powinien je budować 

background image

Wprowadzenie

Na rysunku jest 
przedstawiony cykl 
życia 
oprogramowania 
bazujący na modelu

Są tu różne modele 
tworzone przez różne 
grupy użytkowników 
do różnych celów 

Wprowadzenie

Model definiowania wymagań może 
powstawać w celu uchwycenia 
i wynegocjowania całościowych wymagań 
dotyczących systemu

Może być tworzony zarówno przez 
przedstawicieli działu marketingu, jak 
i przez analityków systemów i analityków 
oprogramowania 

Wprowadzenie

Ważnym pojęciem stosowanym w większości metod 
inżynierii oprogramowania opartych na modelach 
jest zasada oddzielenia pojęć

Wyraża się ona zwykle w konstruowaniu modelu 
analizy rozłącznego z modelem projektu

W modelach analizy są uwzględnione zasadnicze lub 
"logiczne" wymagania dotyczące systemu w 
przeciwieństwie do wymagań realizacyjnych lub 
"fizycznych"  

Wprowadzenie

Modele analizy opisują, co system będzie robił -
niezależnie od poszczególnych implementacji lub 
zastosowanych technik

Modele projektu określają, jak poszczególne systemy 
będą zbudowane w kontekście danego środowiska 
implementacyjnego (platforma, sieć, system operacyjny, 
baza danych, interfejs użytkownika itd.)

Modele analizy są zwykle budowane przez osoby z 
szeroką wiedzą w zakresie danej aplikacji; mogą służyć 
jako "środek" komunikowania się między klientami, 
użytkownikami i projektantami 

background image

Wprowadzenie

Modele projektu natomiast są budowane 
przez osoby z dużą wiedzą na temat 
środowiska implementacyjnego

Służą jako "środek" komunikowania się 
między projektantami, wdrożeniowcami, 
osobami zajmującymi się testowaniem itp. 

Zasada oddzielenia pojęć stanowi zasadniczą 
siłę napędową metodyki obiektowej

Wprowadzenie

Prezentowane podejście, podobnie jak w 
przypadku innych dyscyplin inżynierskich, 
opiera się w dużym stopniu na zrozumieniu 
problemu i ustaleniu wymagań przez 
budowanie odpowiednich modeli 
proponowanych systemów 

Wprowadzenie

Podobnie jak to się robi w innych dziedzinach 
inżynierskich, tworzy się jeden zestaw modeli 
w celu ustalenia podstawowego zachowania 
się proponowanego systemu i drugi w celu 
określenia, jak zbudować proponowany 
system w danym środowisku 
implementacyjnym 

Wprowadzenie

Programy w dostarczanych systemach 
informatycznych niekoniecznie muszą być 
najdroższym elementem, ale są zwykle ściśle związane 
ze sprzętem

Oznacza to, że jeśli oprogramowanie nie działa, to 
sprzęt jest bezużyteczny

Od twórców oprogramowania oczekuje się 
jednocześnie dotrzymania budżetu 
i harmonogramu prac oraz spełnienia wymagań 
i oczekiwań użytkowników 

background image

Prawo Philippe'a

Chcąc pokazać, jak bardzo trudne jest to zadanie, 
Philippe Kahn, założyciel firmy Borland International, 
w 1992 roku zaprezentował coś, co nazwał „prawem 
Philippe'a”

Jak wynika z kolejnego rysunku, im większy jest 
zespół tworzący oprogramowanie, tym mniejsza jest 
wydajność każdego z członków tego zespołu 

Prawo Philippe'a

gdzie Ln oznacza 
wydajność 
programisty 
obliczoną dla 
każdego członka 
n-osobowego 
zespołu (liczba 
wierszy kodu 
napisanych 
w ciągu roku) 

Wprowadzenie

Jest to sprzeczne z jedną z podstawowych zasad 
industrializacji, która głosi, że wraz ze zwiększeniem 
skali produkcji wzrasta wydajność każdego członka 
zespołu produkcyjnego

Konwencjonalne metody tworzenia 
oprogramowania, które zależą od ludzi piszących 
kod, są z natury wadliwe

Po prostu nie ma wystarczającej liczby ludzi ani 
pieniędzy, aby za pomocą konwencjonalnych 
narzędzi budować olbrzymie, złożone aplikacje

Wprowadzenie

Obecnie większość programów mogłaby ewentualnie 
być opracowana w krajach trzeciego świata, gdzie 
robocizna jest bardzo tania

Jednakże, jeśli Stany Zjednoczone czy Europa chcą 
nadal przodować w tym przemyśle, muszą stosować 
inne techniki tworzenia oprogramowania 

Częściowym rozwiązaniem tego problemu są metody 
obiektowe 

background image

Pojęcie obiektowości

W latach pięćdziesiątych i sześćdziesiątych XX 
wieku wykonanie czegokolwiek za pomocą 
komputerów wymagało wyciśnięcia każdego 
"bitu" efektywności z dostępnego sprzętu

Kontrolowano i wydzielano oszczędnie każde 
niemal słowo

Programy komputerowe były duże, 
monolityczne i trudne do pielęgnowania 

Pojęcie obiektowości

W latach sześćdziesiątych, wyłoniła się nowa 
szkoła myślenia głosząca, iż wielkie, 
monolityczne programy komputerowe, 
będące bez wątpienia najbardziej efektywnym 
rozwiązaniem problemu, nie są rozwiązaniem 
najlepszym

Lepszym programem komputerowym jest 
program zrozumiały 

Pojęcie obiektowości

Dlaczego zrozumiały? 

Ponieważ taki program komputerowy może 
być rzeczywiście pielęgnowany i 
rozbudowywany! 

W pewnych firmach takie podejście było 
uznawane za zbyt radykalne

"Jeśli mamy najlepszy program na rozwiązanie 
określonego problemu, to po co go zmieniać?" 

Pojęcie obiektowości

W miarę jak technika komputerowa zaczęła 
docierać do różnych dziedzin, argumenty te 
straciły sens

Uwagi typu: "Jeśli mamy już najlepszy 
program do zarządzania płacami, to po co go 
zmieniać?" nie brzmią dzisiaj zbyt 
przekonywająco 

background image

Pojęcie obiektowości

Modułowe programy komputerowe są, być może, 

mniej efektywne, ale bardziej zrozumiałe, elastyczne 

i lepiej można je pielęgnować niż duże, monolityczne

Ponieważ wydajność sprzętu komputerowego z 

biegiem lat się zwiększała, podejście to było coraz 

szerzej akceptowane w społeczności zajmującej się 

inżynierią oprogramowania 

Pojęcie obiektowości

Gdy już wszyscy zgodzili się, że modułowe programy 
komputerowe są lepsze niż programy monolityczne, 
projektanci systemowi zaczęli się spierać o to, jak 
owe moduły powinny być tworzone

Przedstawiciele jednej szkoły twierdzili, że 
najlepszym sposobem jest "krojenie" na moduły 
według funkcji

„Każdy moduł wykonuje jedną i tylko jedną rzecz”

Inna szkoła głosiła: „Każdy moduł powinien zawierać 
jedną strukturę danych”

Pojęcie obiektowości

Ludzie zajmujący się systemami czasu 
rzeczywistego uważali z kolei, że moduły 
powinny być dzielone według zdarzeń

"Każdy moduł powinien rozpoznawać i 
odpowiadać na jedno i tylko jedno zdarzenie" 

Pojęcie obiektowości

Gdy te trzy obozy toczyły ze sobą wojnę, 
wyłonił się czwarty

To jasne, głosili jego przedstawiciele, że 
najlepszym sposobem modularyzacji 
programów komputerowych jest taki podział, 
że 

„Każdy moduł odpowiada jednej i tylko jednej 
rzeczy ze świata rzeczywistego”

background image

Pojęcie obiektowości

Zamiast dzielić programy komputerowe 
zgodnie z pewnym podejściem analitycznym, 
zwolennicy obiektowości twierdzili, że należy 
tworzyć strukturę programu zgodnie z 
problemem, który ma być rozwiązany

To była zasadnicza zmiana 

Pojęcie obiektowości

Chociaż termin "obiektowy" jest używany w różny 
sposób, powinien zawsze sugerować związek między 
rzeczami w świecie rzeczywistym a częściami 
programu komputerowego

Czym więc jest obiekt? Nieformalnie jest niezależną, 
asynchroniczną, współbieżną jednostką, która "wie, 
o co chodzi" (tzn. przechowuje dane), "działa" (tzn. 
wykonuje usługi) i "współpracuje z innymi 
obiektami" (przez wymianę komunikatów) w celu 
realizacji wszelkich funkcji (modelowanego) systemu 

Pojęcie obiektowości

Dlaczego właściwie zajmować się obiektami?

Odpowiedź jest prosta: wielokrotne użycie

Chociaż od zarania komputerów kod był wielokrotnie 
wykorzystywany, techniki obiektowe pozwalają na 
ponowne użycie czegoś więcej niż kodu

Można wielokrotnie wykorzystywać wymagania, 
analizy, plany testów, interfejsy użytkownika i 
architektury

W rzeczywistości właściwie każdy składnik cyklu życia 
oprogramowania może być potraktowany jako 
obiekt nadający się do powtórnego użycia

Analiza obiektowa

Celem jest skonstruowanie formalnych modeli 
proponowanego systemu informatycznego 
(jak skonstruowanie modelu budynku 
tworzonego przez architekta), dzięki czemu 
możliwe będzie wychwycenie zasadniczych 
wymagań systemu

background image

Analiza obiektowa

Model Analizy Obiektowej (AO) opisuje obiekty 
reprezentujące określoną dziedzinę zastosowania, 
łącznie z różnymi związkami strukturalnymi i 
komunikacyjnymi

Model AO służy do dwóch celów

Pierwszy to sformalizowanie spojrzenia na rzeczywistość, w 
ramach której będzie zbudowany system informatyczny. 
Model określa obiekty, które posłużą jako zasadnicze 
struktury organizacyjne danego systemu informatycznego, 
oraz reguły lub ograniczenia, jakie świat rzeczywisty 
nakłada na każdy system informatyczny

Analiza obiektowa

Drugi cel to ustalenie, jak zbiór obiektów 
współdziała, żeby wykonać pracę analizowanego 
systemu informatycznego

Owo współdziałanie jest reprezentowane w modelu 
przez zbiór komunikatów pokazujących, jak 
poszczególne obiekty komunikują się z innymi 
obiektami

Model AO jest zbudowany z pięciu warstw lub 
perspektyw

Warstwy modelu

Warstwy modelu

Dzięki warstwom możemy badać model AO z różnych 
punktów widzenia

Taka struktura umożliwia również radzenie sobie w 
efektywny sposób z dużymi modelami AO 

Model AO składa się z pięciu warstw: 

warstwa klas-obiektów

warstwa atrybutów

warstwa metod (usług)

warstwa struktur

warstwa tematów

background image

Warstwy modelu

Pierwsza warstwa klas-obiektów, przedstawia 
podstawowe bloki tworzące proponowany 
system

Obiekty są odbiciem rzeczywistych pojęć 
danej dziedziny zastosowania

Warstwa ta stanowi podstawę całego modelu 
AO 

Prawdziwym rdzeniem każdej analizy 
obiektowej jest proces, który nazywamy 
modelowaniem informacji 

Warstwy modelu

W AO trudną sprawą jest określenie, co to są te 
rzeczy ze świata rzeczywistego, o których 
wspominaliśmy wyżej

Będą one tworzyły podstawowe bloki, z których 
zostanie zbudowany system 

Modelowanie informacji jest procedurą 
umożliwiającą wyodrębnienie ze świata 
rzeczywistego podstawowej struktury danej 
dziedziny 

Jest to jedno z najbardziej elementarnych, a zarazem 
najbardziej krytycznych działań procesu analizy 
obiektowej 

Warstwy modelu

Do zbudowania systemu informatycznego 
było potrzebne pewne zrozumienie danej 
dziedziny zastosowania

Natomiast w wypadku metod obiektowych 
większy nacisk kładzie się na modelowanie 
informacji jako na formalną procedurę w 
ramach procesu inżynierii oprogramowania 

Warstwy modelu

Koncepcja ta jest 
pokazana na 
rysunku 

Alicja jest realną 
osobą w realnym 
świecie

Odbita w lustrze 
obiektowym 
może być jednak 
postrzegana w 
bardzo 
specyficzny, 
uproszczony 
sposób

background image

Warstwy modelu

W kontekście danej dziedziny, w naszym przypadku 
anatomii człowieka, może być wyodrębniona jako 
podstawowy zbiór pojęć

W tej dziedzinie Alicja jest "rozpatrywana" jako 
kolekcja poszczególnych części ciała

W innej dziedzinie może być postrzegana jako zestaw 
możliwości ekonomicznych; jej częściami składowymi 
mogłyby być: historia kredytu, profil konsumpcji, 
miejsce zamieszkania itp. 

Warstwy modelu

W jeszcze innej dziedzinie Alicja może być widziana 
na przykład jako prowadzący pojazd - z historią 
wypadków, wykroczeń i stawką ubezpieczeniową

Obiektami nazywamy rzeczy ze świata rzeczywistego 

Ponieważ obiekty to kawałki programów 
komputerowych, a programy przechowują dane i 
wykonują pracę, będzie wygodniej traktować obiekty 
po prostu jako agentów, którzy przechowują dane 
i/lub wykonują pewną pracę  

Warstwy modelu

Dalej, obiekty mogą być traktowane jako kilku 
podobnych agentów, różniących się 
charakterystyką

W razie konieczności będziemy odwoływać się 
do każdego z tych agentów jako do instancji -
angielska nazwa instance jest tłumaczona 
jako: instancja, konkret, egzemplarz, 
wystąpienie 

Warstwy modelu

Jeżeli konieczne jest odwołanie się do 
zbioru wielu podobnych obiektów, używa 
się dla nich terminu klasa

Sposób przedstawiania klasy/ obiektu

Wewnętrzną granicą ikony jest narysowana 
granica klasy

Taka notacja jest bardzo przydatna, gdyż 
można wyróżnić klasę jako całość jak i jej 
poszczególne elementy, czyli obiekty

background image

Warstwy modelu

Dane przechowywane (lub zamknięte) w obiekcie 
będziemy nazywać atrybutami danego obiektu, 
natomiast prace, które obiekt wykonuje - metodami
(usługami) 

W przyjętej notacji atrybuty obiektu i metody 
przedstawia się jak na rysunku

Warstwy modelu

Często zdarza się, że pary instancji klas są ograniczone, to 
znaczy zmuszone do spełnienia pewnych warunków lub 
podporządkowania się pewnym regułom obowiązującym w 
danej dziedzinie zastosowania

Może być np. wymagane, aby wraz z usuwaniem subskrypcji 
usuwać też związanego z nią subskrebenta

Atrybuty obiektu wraz z powiązaniem instancji tworzą 
warstwę atrybutów modelu AO

Warstwy modelu

W dziedzinie, w której system jest modelowany, 
SUBSKRYPCJA ma różne atrybuty lub charakterystyki, 
np. takie jak status

Również oczywiste są ograniczenia, czy też 
obowiązujące reguły działania

W konkretnej sytuacji SUBSKRYPCJA musi być 
powiązana dokładnie z jednym SUBSKRYBENTEM 
bez względu na sposób budowy systemu, na sposób 
jego realizacji lub też osobę subskrybujacą

Warstwy modelu

Metody (usługi) obiektu wraz z komunikatami przesyłanymi 
między instacjami tych obiektów tworzą warstwę metod AO

Na rysunku można zauważyć, że zarówno SUBSKRYPCJA, jak i 
SUBSKRYBENT wykonują pewne prace lub funkcje

Komunikują się również 
między sobą, 
czyli współpracują, 
na co wskazuje strzałka 

background image

Warstwy modelu

Powiązanie przez komunikaty pokazane na poprzednim 
rysunku dowodzi, że jedna z metod SUBSKRYPCJI 
komunikuje się z jedną z metod SUBSKRYBENTA

Kolejną warstwą modelu AO jest warstwa struktur

Warstwa ta wychwytuje pewne związki strukturalne w 
danej dziedzinie zastosowania

Przykładowy typ warstwy struktur pokazany jest na 
kolejnym rysunku

Warstwy modelu

Istnieje pewien rodzaj relacji 
między obiektami SILNIK WINDY, 
CZUJNIK PRZECIĄŻENIA, PANEL 
PRZYJAZDU i PANEL DYSPOZYCJI

Przedstawiona jest struktura 
całość-część
, wskazująca, że 
WINDA jako „całość” musi składać 
się z „części”

Widać też, że winda musi mieć 
jeden silnik, który musi być częścią 
windy – podobnie inne 

Liczebność, uczestnictwo

Związki całość część zachodzą wtedy, kiedy 
obiekt rodzic jest złożony z kilku obiektów 
dzieci. 

Zwykle określamy je na podstawie złożoności 
fizycznej. Możliwe są jednak inne typy 
złożoności. 

Chociaż związki całość-część nie wykazują 
dziedziczenia, jak związki generalizacja-
specjalizacja, mają cechy liczebności i 
uczestnictwa  

Liczebność, uczestnictwo

Liczebność odnosi się do liczby obiektów 
dzieci, z których może składać się rodzic (np. 
samochód ma cztery koła). 

Uczestnictwo mówi o tym, czy obiekt rodzic 
lub dziecko musi brać udział w związku całość-
część. 

Samochód musi mieć cztery koła, chociaż koło 
niekoniecznie musi być częścią samochodu. 

background image

Warstwy modelu

Inny typ warstw struktur to struktura uogólnienie-
uszczegółowienie 
(generalizacja-specjalizacja)

Struktura ta jest zupełnie inna niż struktura całość-część

Na rysunku określono OPUBLIKOWANY ARTYKUŁ I 
PRZYJĘTY ARTYKUŁ jako specjalizacje ARTYKUŁU 
(uogólnienie)

Struktura ta wskazuje na 
własność dziedziczenia, to znaczy
atrybuty lub metody klasy
uogólnienia są wspólne (dziedziczone)
dla klas będących specjalizacjami

Warstwy modelu

Ponieważ modele AO są duże, o płaskiej strukturze, liczba 
obiektów może okazać się pokaźna

Obiekty mogą być łączone w tematy

Odbywa się to przez zamknięcie powiązanych ze sobą 
obiektów w granicę tematu

Tematy można sobie wyobrazić jako modele podrzędne lub 
nawet subsystemy

Tematy są zawarte w warstwie tematów

Kolejny rysunek przedstawia przykład jednego tematu w 
ramach warstwy

Temat „zarządzanie wydaniem” obejmuje te obiekty, które 
realizują funkcje systemowe związane z „zarządzaniem 
wydaniem”.

Warstwy modelu

Projektowanie obiektowe

W kontekście inżynierii oprogramowania proces analizy 
traktowany jest jako ustalenie podstawowego zachowania 
się systemu

Natomiast projektowanie uważane jest za proces 
określania elementów służących do konstrukcji – czyli 
instrukcji, wskazówek, wytycznych, zaleceń, reguł itp., za 
pomocą których dany system informatyczny powinien być 
realizowany w konkretnym środowisku

Model projektowania obiektowego jest konstruowany jako 
rozszerzenie modelu analizy obiektowej

Model projektowania zawiera pięć tych samych warstw co 
model analizy i stosuje się w nim tę samą notację

background image

Projektowanie obiektowe

Model projektowania zawiera poza tym dodatkowe cztery 
składowe

Projektowanie obiektowe

Składowa dziedziny problemu (SDP)

Składowa kontaktu z człowiekiem (SKC)

Składowa zarządzania zadaniami (SZZ)

Składowa zarządzania danymi (SZD)

Projektowanie obiektowe

Składowa dziedziny problemu, wskazuje te obiekty, które 
realizują podstawowe funkcje danej dziedziny 
zastosowania

Model analizy obiektowej może stać się wstępną wersją 
składowej dziedziny problemu

Modele składowej kontaktu z człowiekiem wskazują na 
sposób tworzenia interfejsów, które zostaną użyte do 
konkretnej realizacji systemu – jest to przykład zasady 
oddzielania pojęć. Szczegóły dotyczące sposobu realizacji są 
odizolowane od pracy wykonywanej przez dany system

Projektowanie obiektowe

Składowa zarządzania zadaniami modelu projektowania 
obiektowego określa składniki systemu, które umożliwią 
realizację danego systemu

Składowa zarządzania danymi definiuje te obiekty, które 
są niezbędne w celu współdziałania ze stosowaną bazą 
danych 

Podobnie jak składowa kontaktu z człowiekiem, składowe 
te są przykładem zasady oddzielania pojęć

Szczegóły techniczne bazy danych są odseparowane od 
podstawowych funkcji systemu

background image

Projektowanie obiektowe

Podejście bazujące na zastosowaniu zasady oddzielania 
pojęć pozwala na zbudowanie modelu niezależnego od 
techniki, co z kolei daje możliwość wielokrotnego 
wykorzystania systemu

Np. gdy zmienia się rodzaj interfejsu z graficznego na 
głosowy, jedynym elementem do zmiany jest składowa 
kontaktu z człowiekiem – reszta systemu pozostaje bez 
zmian

Oznacza to, że reszta systemu powinna być odporna na 
zmiany dotyczące interfejsu użytkownika

Projektowanie obiektowe -

Kluczowe zagadnienia

Zasada oddzielenia pojęć polega na odizolowaniu 
zasadniczych wymagań dotyczących pracy systemu od 
wymagań dotyczących jego realizacji

Pojęcie obiektowości różni się od tradycyjnego podejścia 
opartego na dekompozycji funkcji „od góry do dołu”

Techniki obiektowe umożliwiają powtórne użycie pełnego 
cyklu życia oprogramowania

Obiekt to niezależna, asynchroniczna, współbieżna 
jednostka, która wie o co chodzi, działa i współpracuje z 
innymi obiektami w celu realizacji funkcji systemu

Notacja UML

Wprowadzenie

UML (ang. Unified Modeling Language)

UML to język służący do komunikowania się w 
dziedzinie systemów: ewolucyjny, 
wszechstronny, obsługiwany przez różne 
narzędzia i znormalizowany branżowo język 
specyfikowania, wizualizacji, konstruowania i 
dokumentowania procesu

background image

Wprowadzenie

Język UML można stosować do różnych typów 
systemów (oprogramowania i innych), domen 
(biznes lub oprogramowanie), metod i procesów

UML umożliwia i promuje (lecz nie wymaga ani nie 
nakazuje) procesy sterowane przypadkami użycia, 
iteracyjne i przyrostowe, zorientowane na technikę 
obiektową

Wprowadzenie

UML został pierwotnie utworzony przez Rational 
Software Corporation i trzech z najbardziej liczących 
się metodologów tej firmy: Grady'ego Boocha, 
Jamesa Rumbaugha i Ivara Jacobsona

UML stał się standardem dzięki wysiłkom Object 
Management Group (OMG) i Rational Software 
Corporation, mającym na celu połączenie najlepszych 
rozwiązań inżynierskich z systemów informatycznych 
i technicznych branż przemysłu w zbiór technik 
modelowania

Wprowadzenie

Język UML jest czymś znacznie więcej niż 
standardem, czy też kolejnym językiem modelowania

UML to "paradygmat", "filozofia", "rewolucja" i 
"ewolucja" metod podejścia do rozwiązywania 
problemów i do systemów

Często mówi się, że język angielski jest światowym 
"językiem uniwersalnym"; dzisiaj jest niemal pewne, 
że UML stanie się "językiem uniwersalnym" świata 
systemów informatycznych i technologii

Wprowadzenie

Bardziej formalnie, UML jest językiem 
ogólnego zastosowania, a zarazem 
standardem branżowym o szerokich 
zastosowaniach, powszechnie obsługiwanym 
przez narzędzia obecne na rynku

background image

Wprowadzenie

Konstruowanie systemów polega na tworzeniu ich 
zgodnie z wymaganiami, z zastosowaniem przy ich 
rozwoju procesu cyklu życia

Wymagania są zasadniczo problemami do 
rozwiązania, system jest rozwiązaniem tych 
problemów, zaś konstruowanie systemu jest 
procesem rozwiązywania problemów, w skład 
którego wchodzą: 

rozpoznanie problemu

rozwiązanie problemu 

implementacja rozwiązania 

Wprowadzenie

Do opisywania wymogów służą języki naturalne

Języki programowania służą do przekazywania 
(opisywania) szczegółów systemu

Ponieważ języki naturalne są mniej precyzyjne od 
języków programowania, w procesie rozwiązywania 
problemów do przekraczania przepaści pomiędzy 
wymogami i systemem służą języki modelowania, 
takie jak UML 

Wprowadzenie

UML, może być stosowany w całym procesie tworzenia 
systemu, od gromadzenia wymogów, aż po 
implementację systemu

Ponieważ UML jest językiem o szerokim zakresie 
zastosowań, można go używać w różnych typach 
systemów, dziedzin i procesów

Możemy dzięki temu użyć UML-a do opisu systemów 
programowych i nieprogramowych (tzw. systemów 
biznesowych) w różnych dziedzinach i branżach, np. w 
produkcji, bankowości, handlu elektronicznym itd. 

Co to jest UML? 

UML jest po prostu językiem wizualnym, 
służącym do modelowania i opisywania 
systemów za pomocą diagramów i 
dodatkowego tekstu

Przykład przedstawiony jest na rysunku

background image

Co to jest UML?

Co to jest UML?

Rysunek przekazuje następujące informacje:

Menedżer przewodzi zespołowi, który wykonuje 
projekt

Każdy menedżer ma imię i numer telefonu, i może 
zainicjować lub zakończyć (przerwać) projekt

Każdy projekt ma nazwę, datę rozpoczęcia i datę 
ukończenia

Każdy zespół ma opis, i tylko to nas w nim 
interesuje

Trzy aspekty UML-a

Każde z tych trzech słów „Unified Modeling 
Language” mówi o innym ważnym aspekcie UML-a

Language (język) 

Język pozwala nam porozumiewać się na temat 
danego podmiotu

W konstruowaniu systemu podmiotem może być 
wymóg lub system

Bez języka trudno o komunikację pomiędzy 
członkami zespołu i o współpracę, pozwalającą z 
powodzeniem opracować system

Trzy aspekty UML-a

Języki w ogólnym znaczeniu nie zawsze składają się z 
zapisanych wyrazów

Na przykład, powszechnie używamy "języka 
rachunkowego", aby uczyć dzieci liczenia i arytmetyki 

5

Język rachunkowy

Język arytmetyczny

background image

Trzy aspekty UML-a

Działania dodawania i odejmowania w języku 
rachunkowym są reprezentowane przez fizyczną 
czynność dodawania lub zabierania obiektów ze 
zbioru

W języku arytmetyki, w którym określoną liczbę 
reprezentuje łańcuch cyfr arabskich, dodawanie i 
odejmowanie reprezentowane są przez operatory + i 
-

Trzy aspekty UML-a

Rozważmy możliwość przedstawienia w tych dwóch 
językach określonej liczby dni w projekcie

Do zamodelowania i wyrażenia wartości "pięć" język 
rachunkowy używa pięciu obiektów, zaś język 
arytmetyczny łańcucha „5”

Do modelowania i wyrażania większych wartości, np. 
365, język rachunkowy wymaga 365 obiektów (co 
może być niepraktyczne), zaś język arytmetyczny 
stosuje ciąg ,,365" 

Trzy aspekty UML-a

Aby zamodelować i wyrazić wartość cztery i pół język 
rachunkowy wymaga czterech i pół obiektu (pół 
obiektu niekoniecznie jest praktycznym 
rozwiązaniem), zaś arytmetyczny używa łańcucha 
„4,5”

Ponieważ arytmetyka pozwala łatwiej i bardziej 
praktycznie niż język rachunkowy przedstawiać 
wartości z szerszego zakresu, mówimy, że język 
arytmetyczny jest bardziej ekspresywny od 
rachunkowego

Trzy aspekty UML-a

Oprócz tego liczbę możemy wyrazić za 
pomocą arytmetyki bardziej ściśle niż w języku 
rachunkowym

Stosując bardziej ekspresywne języki, 
możemy przekazywać w sposób bardziej 
zwięzły złożone informacje o złożonych 
podmiotach 

background image

Trzy aspekty UML-a

UML jest językiem służącym do specyfikacji, 
wizualizacji, konstrukcji i dokumentacji artefaktów 
(wytworów) procesu zorientowanego na system

Proces zorientowany na system oznacza podejście 
koncentrujące się na systemie, łącznie z etapami 
tworzenia i utrzymania systemu, zgodnie z 
wymogami, jakie ten system musi spełnić

Specyfikacja obejmuje tworzenie modelu 
opisującego system 

Trzy aspekty UML-a

W procesie wizualizacji model jest tworzony i 
opisywany za pomocą diagramów (model jest ideą, a 
diagramy wyrażeniem tej idei)

Konstrukcja oznacza wykorzystanie tego wizualnego 
obrazu do zbudowania systemu, podobnie jak plany 
techniczne są używane przy wznoszeniu budynku

Dokumentacja wykorzystuje modele i diagramy do 
zarejestrowania naszej wiedzy o wymogach i 
systemie w obrębie całego procesu  

Trzy aspekty UML-a

UML sam w sobie nie jest procesem

Proces polega na zastosowaniu zbioru kroków, 
opisanych przez metodologię, do rozwiązania 
problemu i stworzenia systemu spełniającego 
wymogi użytkownika

Metoda zajmuje się jedynie częścią procesu 
tworzenia systemu, na przykład gromadzeniem 
wymogów, analizą, projektowaniem itp., natomiast 
metodologia dotyczy całego procesu, od 
gromadzenia wymogów aż do udostępnienia 
systemu użytkownikom 

Trzy aspekty UML-a

Różnorodne metody gromadzenia i wykorzystywania 
wymogów, analizowania wymogów, projektowania 
systemu itp. noszą nazwę technik

Artefakty (wytwory) są produktami pracy, 
tworzonymi i wykorzystywanymi w procesie; należy 
do nich również dokumentacja służąca do 
komunikacji pomiędzy stronami pracującymi nad 
systemem i samym fizycznym systemem

Wszystkie typy diagramów UML nazywane są 
również technikami modelowania 

background image

Trzy aspekty UML-a

Model

Model jest reprezentacją podmiotu

Na przykład do modelowania i wyrażenia wartości 
"pięć" język rachunkowy używa pięciu obiektów, zaś 
język arytmetyczny ciągu „5”

Model rejestruje zbiór związanych z podmiotem idei, 
zwanych abstrakcjami

Bez modelu bardzo trudno jest osiągnąć 
porozumienie pomiędzy członkami zespołu na temat 
wymogów i systemu oraz analizować wpływ zmian 
wprowadzanych podczas tworzenia systemu

Trzy aspekty UML-a

Model

Model jest reprezentacją podmiotu

Model rejestruje zbiór związanych z podmiotem idei, 
zwanych abstrakcjami

Bez modelu bardzo trudno jest osiągnąć 
porozumienie pomiędzy członkami zespołu na temat 
wymogów i systemu oraz analizować wpływ zmian 
wprowadzanych podczas tworzenia systemu

Trzy aspekty UML-a

Jeśli przy tworzeniu modelu będziemy próbowali 
przedstawić jednocześnie wszystkie informacje o danym 
podmiocie, z łatwością przytłoczy nas objętość informacji

Ważne jest więc skoncentrowanie się na rejestrowaniu 
liczących się informacji, niezbędnych do zrozumienia 
danego problemu, znalezienia rozwiązania tego 
problemu i zaimplementowania rozwiązania, a zarazem 
wykluczaniu wszelkich nieistotnych informacji, które 
mogą spowolnić dochodzenie do rozwiązania

Trzy aspekty UML-a

Decydując, które abstrakcje składają się na 
model, ustalając poziom ich szczegółowości i 
etapy, na których będą rejestrowane w 
procesie konstruowania systemu, możemy 
lepiej zapanować nad ogólną złożonością 
tworzenia systemu 

background image

Trzy aspekty UML-a

Unified (ujednolicony)

Pojęcie "ujednolicony" bierze się z faktu, iż 
Object Management Group (OMG) -
organizacja tworząca standardy powszechnie 
przyjmowane w przemyśle - razem z Rational 
Software Corporation stworzyły UML w celu 
połączenia ze sobą najlepszych metod 
stosowanych w systemach informacyjnych i w 
branży technologicznej 

Trzy aspekty UML-a

Do praktyk tych zalicza się stosowanie technik, 
które pozwalają z większym powodzeniem 
konstruować systemy

Bez wspólnego języka, nowym członkom 
zespołów trudno jest szybko osiągać 
produktywność i wnosić swój wkład do 
tworzenia systemu 

Zadania i zakres

Według założeń OMG, UML ma być:

gotowy do użytku

ekspresywny

prosty

precyzyjny

rozszerzalny

niezależny od implementacji

niezależny od procesu

Zadania i zakres

Ponieważ UML jest gotowy do użytku, ekspresywny, 
prosty i precyzyjny, język ten można od razu 
zastosować w projekcie rozwojowym 

Język rozszerzalny pozwala definiować nowe pojęcia, 
co przypomina wprowadzanie nowych słów i 
rozszerzanie słownictwa języka naturalnego 

Język niezależny od implementacji może być 
używany niezależnie od konkretnej technologii 
implementacji

Język niezależny od procesu może być stosowany do 
różnych typów procesów 

background image

Historia 

W historii UML-a możemy wyróżnić pięć 
okresów

Poznanie tych okresów pozwala zrozumieć, z 
jakich powodów powstał UML i jak wciąż 
ewoluuje

Historia 

Okres fragmentacji

Od połowy lat 70. do połowy lat 90. organizacje 
zaczęły zdawać sobie sprawę z tego, jak cenne jest 
oprogramowanie dla biznesu, lecz dysponowały tylko 
niepełnymi zbiorami technik tworzenia i utrzymania 
oprogramowania

Było wówczas kilka różnych technik i metod, 
koncentrujących się na bardziej wydajnym tworzeniu 
i utrzymaniu oprogramowania (każda miała własne 
języki modelowania)

Historia 

W miarę ewoluowania metod strukturalnych w 
kierunku metod obiektowych branża podzieliła się, 
na zwolenników różnych metod

Wyznawcy jednej metody mieli kłopoty ze 
zrozumieniem produktów entuzjastów innych metod

Oprócz tego mieli problemy z przenoszeniem się z 
jednej organizacji do drugiej, ponieważ taki ruch 
często oznaczał konieczność nauczenia się nowej 
metody

Historia 

Okres jednoczenia

Od połowy lat 90. do roku 1997 wyłonił się język 
UML 1.0. w firmie Rational Software Corporation, 
aby połączyć swoje metody podejścia 

Okres standaryzacji

W drugiej połowie 1997 roku pojawił się UML 1.1. 

W listopadzie 1997 organizacja OMG (Object 
Management Group) zaadoptowała UML i wzięła na 
siebie odpowiedzialność za dalszy rozwój standardu

background image

Historia

Okres korekt

Pojawiły się różne wersję języka UML

OMG wyznaczyła grupę zajmującą się korektami (RTF 
- ang. revision task force), której zadaniem było 
przyjmowanie publicznych komentarzy dotyczących 
UML-a i dokonywanie pomniejszych zmian 
redakcyjnych i technicznych w standardzie

Wielu różnych dostawców produktów i usług zaczęło 
wspierać i promować UML poprzez narzędzia, usługi 
doradcze, książki itp.

Historia

Okres wdrożenia

Równolegle z korektami OMG zgłasza 
standard UML do przyjęcia jako standard 
międzynarodowy poprzez organizację ISO 
(ang. Organization for Standardization) w 
formie dostępnej publicznie specyfikacji - PAS 
(ang. Publicly Available Specification). 
Najbardziej aktualna wersja specyfikacji UML
jest dostępna w serwisie OMG
http://www.omg.org.

UML i proces

Mimo że UML jest niezależny od procesu, jego 
autorzy promują proces, który jest sterowany 
przypadkami użycia, skoncentrowany na 
architekturze, iteracyjny i przyrostowy

Mimo to z języka UML może korzystać proces 
dowolnego typu, nawet nie posiadający tych 
cech

UML i proces

Proces cyklu życia rozwoju każdego systemu 
obejmuje następujące czynności:

Gromadzenie wymogów definiujących, co system 
powinien robić

Analizę pozwalającą zrozumieć wymogi

Projektowanie - ustalenie, w jaki sposób system będzie 
spełniał narzucone wymogi

Implementację - budowanie systemu

Testowanie - weryfikacja, czy system spełnia wymogi

Wdrożenie, udostępniające system użytkownikom

background image

UML i proces

Do wykonania tych czynności w celu 
stworzenia systemu można podchodzić na 
wiele sposobów

Tradycyjnie stosowana była metoda 
kaskadowa 

W chwili obecnej częściej spotyka się 
podejście iteracyjne

UML i proces

Przy stosowaniu metody kaskadowej czynności 
związane z cyklem życia systemu wykonywane są w 
pojedynczej, liniowej sekwencji dla wszystkich 
wymogów

Prowadzi to często do odkrywania podczas testów, 
gdy integrowane są poszczególne fragmenty 
systemu, problemów związanych z jakością, które 
pozostawały w ukryciu podczas czynności 
projektowania i implementacji 

UML i proces

Ponieważ problemy takie są odkrywane na 
późnych etapach procesu rozwoju, może być za 
późno na ich rozwiązanie lub koszty rozwiązania 
mogą być zbyt wysokie

Na przykład odkrycie, iż dany system zarządzania 
bazą danych ma za małą wydajność dla 
korzystających z niego aplikacji, gdy aplikacje 
zostały już opracowane, stanowi kolosalny 
problem 

UML i proces

Przy podejściu kaskadowym wszystkie wymogi są 
rejestrowane i analizowane, a cały system jest 
projektowany, implementowany, testowany i 
wdrażany w jednej liniowej sekwencji 

background image

UML i proces

W takim przypadku UML może z łatwością posłużyć do 
przekazywania wymogów i opisu systemu

Ponieważ jednak czynności wykonywane są dla wszystkich 
wymogów w jednej liniowej sekwencji, modele UML na każdym 
kolejnym kroku muszą być dość kompletne

Taki poziom kompletności często trudno jest zmierzyć lub 
osiągnąć, ponieważ wprawdzie UML jest bardziej precyzyjny od 
języków naturalnych, lecz zarazem mniej precyzyjny od języków 
programowania 

Zamiast więc koncentrować się na systemie, zespoły 
korzystające z UML-a przy podejściu kaskadowym poświęcają 
swój czas na ustalenie, czy ich modele UML są wystarczająco 
kompletne 

UML i proces

Gdy stosujemy metodę iteracyjną, wszystkie podzbiory 
czynności w cyklu życia są wykonywane kilkakrotnie, aby 
lepiej zrozumieć wymogi i stopniowo opracować bardziej 
niezawodny system

Każde przejście cyklu tych działań lub ich podzbioru nosi 
nazwę iteracji, a seria iteracji w końcu krok po kroku 
doprowadza do ostatecznego systemu 

Pozwala to lepiej zrozumieć wymogi i stopniowo 
stworzyć bardziej odpowiedni system przez kolejne 
ulepszenia i przyrostowe zwiększanie szczegółowości w 
miarę kolejnych iteracji 

UML i proces

Na przykład, możemy zbadać wydajność określonego 
systemu zarządzania bazami danych i odkryć, iż 
będzie niewystarczająca dla korzystających z niego 
aplikacji, jeszcze zanim aplikacje te zostaną w pełni 
skonstruowane

Pozwoli to wprowadzić odpowiednie zmiany w 
aplikacjach lub zbadać inny system zarządzania bazą 
danych, zanim będzie na to za późno lub stanie się to 
zbyt kosztowne 

UML i proces

Rozważmy projekt, który obejmuje 
generowanie 10 różnych typów raportów

W podejściu iteracyjnym możliwy jest 
następujący ciąg iteracji:

1.

Identyfikujemy pięć wymogów (nazwanych od 
W1 do W5) i analizujemy trzy z nich (np. W1, W3 
i W5) 

background image

UML i proces

2. Rejestrujemy pięć kolejnych wymogów 

(nazwanych od W6 do W1O), analizujemy 
dwa nie przeanalizowane w poprzedniej 
iteracji (W2 i W 4) oraz projektujemy, 
implementujemy i testujemy system, który 
spełnia trzy wymagania przeanalizowane w 
poprzedniej iteracji (Wl, W3 i W5) oraz dwa 
przeanalizowane w tej iteracji (W2 i W4), 
lecz nie wdrażamy systemu

UML i proces

3. Wdrażamy system spełniający pięć wymogów 

przetestowanych w poprzedniej iteracji (od W1 do 
W5) i kontynuujemy pracę nad pozostałymi (od W6 
do W1O)

4. Dalej pracujemy nad systemem, lecz musimy zająć 

się zmianami w jednym z wdrożonych już 
wymogów (np. W3), zmianami w innych 
wymogach, które nie zostały jeszcze wdrożone (np. 
W6 i W1O) oraz innymi technicznymi zmianami w 
systemie

UML i proces

Podejście iteracyjne do konstruowania systemu 
przynosi następujące korzyści: 

Możemy lepiej radzić sobie ze złożonością, 
budując system małymi przyrostowymi porcjami, 
a nie cały od razu

Możemy lepiej radzić sobie ze zmianami w 
wymogach, rozkładając zmiany na cały proces, a 
nie usiłując zarejestrować i wprowadzić wszystkie 
zmiany na raz

UML i proces

Możemy udostępniać użytkownikom 
fragmentaryczne rozwiązania w trakcie procesu, a 
nie kazać im czekać na ukończenie procesu, kiedy 
otrzymaliby kompletny system i być może 
stwierdzili, że nie tego oczekiwali

Możemy zwrócić się do użytkowników z prośbą o 
uwagi dotyczące opracowanych już części 
systemu, co pozwoli wprowadzać zmiany i tak 
kierować postępami w pracach, by stworzyć 
bardziej solidny system spełniający potrzeby 
użytkowników

background image

UML i proces

Proces iteracyjny jest przyrostowy, ponieważ nie 
przerabiamy jedynie raz za razem tych samych 
wymogów w kolejnych iteracjach, lecz zajmujemy się 
w nich coraz większą liczbą wymogów

Oprócz tego w jednej iteracji mogą odbywać się 
równolegle czynności, jeśli koncentrują się na 
różnych częściach systemu i nie kolidują ze sobą

Wobec tego, chociaż podejście to określane jest 
często iteracyjnym i przyrostowym, w rzeczywistości 
jest iteracyjne, przyrostowe i równoległe 

UML i proces

Jak można organizować i motywować działania w 
celu spełnienia wymogów przy takim dynamicznym 
podejściu, w którym iteracje odbywają się 
równolegle a system jest tworzony przyrostowo? 

Jak skupić się na systemie i uniknąć tworzenia 
systemu, który będzie trudny do utrzymania i 
rozbudowy, ponieważ będzie jedynie zbiorem 
elementów posklejanych ze sobą bez obejmującego 
je schematu? 

Którymi wymogami mamy zająć się na początku, i 
które części systemu implementować w pierwszej 
kolejności? 

UML i proces

Odpowiedzi na te pytania są elementami 
podejścia iteracyjnego, w których przypadki 
użycia, architektura i zarządzanie ryzykiem są 
krytyczne 

Przypadki użycia

Przypadek użycia (use case) jest wymogiem 
opisanym z perspektywy użytkowników 
systemu

Np. do wymogów funkcjonalnych w 
większości systemów zalicza się 
funkcjonalność zabezpieczeń, pozwalającą 
użytkownikom logować się do systemu i 
wylogować, wprowadzać i przetwarzać dane, 
generować raporty itp. 

background image

Przypadki użycia

Proces kierowany przypadkami użycia to taki proces, w 
którym możemy wykorzystać przypadki użycia do planowania 
i przeprowadzania iteracji

Pozwala nam to zorganizować działania i skoncentrować się 
na implementowaniu wymogów wobec systemu

Inaczej mówiąc, rejestrujemy i analizujemy przypadki użycia, 
projektujemy system spełniający ich potrzeby, testujemy i 
wdrażamy system oraz planujemy następne iteracje

Przypadki użycia wiążą ze sobą wszystkie czynności w danej 
iteracji

Przypadki użycia

Przykład diagramu

Przypadek użycia definiuje wymóg funkcjonalny, opisany w 

postaci szeregu kroków, do których należą działania 
wykonywane przez system i interakcje pomiędzy systemem a 
aktorami (reprezentują użytkowników)

Przypadki użycia odpowiadają na pytania jak aktorzy wchodzą 
w interakcje z systemem i opisują działania wykonywane 
przez system  

Składowe diagramu 

Przykład - diagram 
dla strony 
internetowej

background image

Architektura

Architektura obejmuje elementy składające się na system i 
sposób, w jaki współpracują one ze sobą w celu zapewnienia 
wymaganej funkcjonalności systemu

Np. większość systemów zawiera elementy obsługujące 
funkcjonalność zabezpieczeń, wprowadzania i przetwarzania 
danych itp. 

Elementy i relacje pomiędzy nimi stanowią struktury systemu 
– a ich modelowanie nosi nazwę modelowania strukturalnego

Elementy, ich interakcje i współpraca noszą nazwę 
zachowania systemu – a ich modelowanie nosi nazwę 
modelowania behawioralnego

Architektura

Każdy przypadek użycia można rozwinąć 
opisując kolejne kroki jego wykonania

Zapis taki nosi nazwę sekwencji behawioralnej 
i może zostać zapisany w postaci tekstu lub 
diagramów 

Zapis tekstowy sekwencji behawioralnej ma 
postać kolejnych punktów opisujących 
następujące po sobie działania, natomiast 
przykładem modelowania behawioralnego 
może być „Diagram aktywności”

Architektura

Techniki języka UML pozwalają na 
uszczegółowienie przypadków użycia

Prezentacja sekwencji behawioralnej opisuje 
zapis dotyczący przykładowej funkcjonalności 
strony internetowej - głosowania w mini-
ankiecie

Kolejno pokazane są: tabela przedstawiająca 
zapis tekstowy oraz diagram aktywności

Architektura

background image

Architektura

Architektura

Ryzyko 

Ryzykiem przy konstruowaniu systemu mogą być 
niewystarczające fundusze, nieprzeszkoleni członkowie 
zespołu lub niestabilne technologie

Aby ustalić, jakie przypadki użycia powinny motywować daną 
iterację, najpierw identyfikujemy zagrożenia dotyczące 
projektu

Następnie zajmujemy się tymi przypadkami użycia, które 
związane są z największym ryzykiem i tymi elementami 
architektury, które po skonstruowaniu rozwiążą 
najpoważniejsze zagrożenia

Ryzyko 

W przykładzie, w którym generowanych jest 10 
raportów, trzy z nich (W1, W3 i W5) wymagają 
znacznego dostępu do bazy danych, a cztery (W3, 
W6, W8 i W10) wymagają znaczącego wkładu 
użytkownika

Ryzyka mogą być dwa: brak wystarczająco 
intuicyjnego interfejsu użytkownika (o nazwie R1) i 
niewystarczająco wydajny system zarządzania bazą 
danych (nazwane R2)

Z powyższego opisu wiemy, że W1, W3 i W5 są 
związane z ryzykiem R2, a W3, W6, W8 i W10 z 
ryzykiem R2

background image

Ryzyko 

W zależności od tego, które ryzyko jest bardziej 
krytyczne i ma większe prawdopodobieństwo 
wystąpienia lub poważniejszy wpływ na projekt 
wybiera się pierwszą lub drugą grupę wymogów

Bezwzględnie w obu przypadkach powinno się zacząć 
od W3, ponieważ wiąże się z obydwoma ryzykami

WYBRANE ZAGADNIENIA 

SYSTEMÓW KOLEJKOWYCH

Systemy kolejkowe

Teoria kolejek, nazywana również teorią masowej obsługi, 
jest gałęzią badań operacyjnych

Metody analizy systemów kolejkowych:

Analityczne, których istota sprowadza się do ułożenia i rozwiązania 
układów równań różniczkowych wiążących ze sobą 
prawdopodobieństwa zdarzeń występujących w procesie obsługi

Symulacyjne, polegające na syntezie algorytmu symulującego 
funkcjonowanie danego systemu przy obsłudze strumienia 
zgłoszeń. Wielokrotna komputerowa realizacja procesu obsługi przy 
użyciu tego algorytmu, a następnie opracowanie statystyczne 
otrzymanych rezultatów, umożliwiają znalezienie interesujących 
nas współzależności oraz wartości wskaźników jakości badanego 
systemu kolejkowego

Systemy kolejkowe

Przykładami prostych systemów obsługi mogą być: 

zagadnienie oczekiwania na połączenie telefoniczne

obsługa klientów w urzędach, bankach, sklepach itp. 

W odróżnieniu od tych prostych systemów, systemy 
wielokanałowe i wielofazowe wymagają realizacji wielu 
czynności obsługi (np. złożonych operacji technologicznych) 
jednocześnie lub w określonej kolejności. Przykładem może 
być:

ciąg operacji technologicznych wykonywanych w procesie produkcji 

traktowany jako wielofazowy system kolejkowy

background image

Systemy kolejkowe

Metoda symulacji stanowi jedyną efektywną metodę 
analizy złożonych wielokanałowych i wielofazowych 
systemów obsługi przy dowolnych strumieniach 
wejściowych zgłoszeń i funkcjach rozkładów czasów 
obsługi

Zasadniczym celem teorii kolejek jest opracowanie 
ogólnych metod umożliwiających wyznaczenie 
wartości podstawowych wskaźników 
charakteryzujących proces obsługi i ocenę jakości 
pracy systemu kolejkowego oraz wybór optymalnej 
struktury i organizacji obsługi 

Systemy kolejkowe

Z punktu widzenia użytkownika należy wypracować 
wskazania do podjęcia decyzji o sposobie 
użytkowania systemu, natomiast z punktu widzenia 
zarządzającego systemem należy określić warunki 
najbardziej efektywnego jego wykorzystania

Podstawowe pojęcia

Zgłoszenie. Przez zgłoszenie rozumie się żądanie spełnienia 
przez system określonej czynności, przy czym zgłoszenie jest 
utożsamiane z jego nośnikiem. Zamiast mówić: klient, 
pasażer, abonent stoi w kolejce lub oczekuje na obsługę, 
mówimy: zgłoszenie stoi w kolejce lub oczekuje na obsługę

Obsługa. Spełnienie określonej potrzeby, w szerokim sensie 
tego słowa. Środki, które umożliwiają obsługę zgłoszeń 
(człowiek, urządzenie, automat), nazywamy urządzeniami 
obsługującymi, stanowiskami obsługi lub kanałami obsługi, a 
zbiór takich identycznych urządzeń obsługujących systemem 
obsługi

Podstawowe pojęcia

background image

Podstawowe pojęcia

Strumień zdarzeń. Ciąg zdarzeń losowych jest nazywamy 
strumieniem zdarzeń. Dotyczy to zdarzeń losowych 
związanych z procesem przybywania zgłoszeń do systemu lub 
też z procesem obsługi

Strumień wejściowy. Ciąg zgłoszeń wymagających obsługi. 
Zgłoszenia pojawiające się w systemie są kierowane 
bezpośrednio do obsługi w przypadku wolnych kanałów lub 
też gromadzone w poczekalni, gdzie oczekują na zwolnienie 
kanału obsługi

Strumień wyjściowy. Może zawierać zgłoszenia zarówno 
obsłużone, jak też i nie obsłużone, tzn. takie, które 
zrezygnowały z obsługi w systemie

Podstawowe pojęcia

Opis strumieni wejściowych i wyjściowych. Momenty 
określające wejścia zgłoszeń do systemu oraz momenty ich 
wyjścia są wielkościami losowymi opisywanymi przez dwa 
rozkłady statystyczne: 

rozkład opisujący rodzaj strumienia wejściowego zgłoszeń, 
tzn. rozkład przedziałów czasowych pomiędzy chwilami 
t

1

,...,t

n

, w których przybywają do systemu kolejne 

zgłoszenia x

1

,...x

n

,

rozkład czasów obsługi opisujący typ obsługi, tzn. rozkład 
czasów wymaganych dla zapewnienia obsługi kolejnym 
zgłoszeniom na stanowiskach obsługi.

Podstawowe pojęcia

Wieloetapowy (wielofazowy) proces obsługi. W praktyce 
często obsługa jednego zgłoszenia jest realizowana przez kilka 
aparatów obsługi, z reguły kolejny aparat obsługi rozpoczyna 
swą pracę po jej zakończeniu przez aparat poprzedzający go

Prosty (jednofazowy) proces obsługi. Polega na realizacji 
pojedynczej operacji. 

Typowe postacie systemów kolejkowych:

wszystkie aparaty obsługi są równouprawnione i mają identyczne 
charakterystyki

aparaty obsługi tworzące dany system nie są równouprawnione, tzn. 
mają indywidualne charakterystyki

Podstawowe pojęcia

W zależności od liczby kanałów systemy kolejkowe dzieli się 
na: jednokanałowe i wielokanałowe

Podział ze względu na sposób zachowania się zgłoszenia, 
nadchodzącego w chwili, gdy wszystkie kanały obsługi są 
zajęte:

System ze stratami. Zgłoszenie nie może czekać na początek obsługi w 
systemie lub system obsługi odmawia przyjęcia zgłoszenia w chwili. W 
systemie nie istnieją warunki do utworzenia kolejki

System z oczekiwaniem (bez strat). Zgłoszenia nadchodzące do systemu mogą 
go opuścić tylko wtedy, kiedy zostaną całkowicie obsłużone. W razie braku 
wolnych kanałów obsługi zbiór zgłoszeń tworzy kolejkę w poczekalni o 
nieograniczonej pojemności

Mieszane systemy obsługi. Istnieje obecność pewnych warunków pośrednich, 
np. ograniczony czas przebywania zgłoszenia w systemie, czy też czas 
oczekiwania w kolejce na rozpoczęcie obsługi

background image

Podstawowe pojęcia

Rozmiar systemu. Rozważane są dwa typy 
systemów: z ograniczonym lub nieograniczonym 
rozmiarem, przy czym przez rozmiar systemu 
rozumie się sumaryczną liczbę kanałów obsługi i 
miejsc w poczekalni. 

Innym kryterium klasyfikacji systemów kolejkowych 
może być liczba źródeł zgłoszeń. Systemy kolejkowe 
dzielą się na:

systemy otwarte, które mogą mieć nieskończenie wielką 
liczbę zgłoszeń przychodzących do systemu

systemy zamknięte, w których maksymalna liczba zgłoszeń 
do obsługi jest ustalona i stała w czasie.

Podstawowe pojęcia

System kolejkowy, powinien obsługiwać zgłaszające się 
obiekty z prędkością większą niż ich przybywanie

Jednakże, natężenie strumienia zgłoszeń, jak i prędkość 
obsługi podlegają przypadkowym wahaniom. Stąd część 
zgłoszeń czeka w kolejce

Nasycenie systemu kolejkowego można opisać za pomocą 
trzech charakterystyk:

strumienia zgłoszeń - będącego statystycznym opisem procesu 
przybywających do systemu zgłoszeń

procesu obsługi – opisującego proces realizacji obsługi

regulaminu (dyscypliny) kolejki - określającego metodę wybierania 
następnego zgłoszenia do obsługi w przypadku istnienia kolejki

Podstawowe pojęcia

Proces obsługi jest określany przez dwa parametry:

Czas obsługi jest to czas wymagany do obsługi jednego zgłoszenia

Krotność systemu obsługi jest liczbą zgłoszeń, które mogą być 
jednocześnie obsługiwane. System obsługi o krotności nazywa się 
m-kanałowym systemem obsługi

W prostych przypadkach statystyczne własności strumienia 
zgłoszeń i procesu obsługi są stacjonarne (niezależne od 
czasu). Często jednak mamy do czynienia z procesami 
niestacjonarnymi
. Na przykład natężenie strumienia zgłoszeń 
może zależeć od pory dnia lub też prędkość obsługi może być 
funkcją długości kolejki itp.

Podstawowe pojęcia

Strumień zgłoszeń jest statystycznym opisem procesu 
przybywania zgłoszeń do systemu obsługi. Jest on zazwyczaj 
opisywany za pomocą funkcji rozkładu odstępów czasu 
(interwałów) między kolejnymi zgłoszeniami

Strumień zgłoszeń może być:

deterministyczny, interwał ten jest stały

losowy, gdy zgłoszenia są losowe, interwał jest wtedy zmienną losową 
i należy określić jego funkcję rozkładu

Czas obsługi zgłoszenia może nie być stały. Jeżeli podlega on 
stochastycznym wahaniom, to musi być opisany za pomocą 
odpowiedniej funkcji rozkładu

background image

Podstawowe pojęcia

Regulamin (dyscyplina) obsługi kolejki określa kolejność 
wybierania zgłoszeń z kolejki

Podstawowe sposoby to:

Dyscyplina FIFO (ang. First-In, First-Out). Jako pierwsze do 
obsługi kieruje się zgłoszenie najdłużej oczekujące w kolejce 

Dyscyplina LIFO (ang. Last-In, First-Out). Jako pierwsze do 
obsługi kieruje się zgłoszenie, które przybyło jako ostatnie. -

Dyscyplina RSS (ang. Random Selection for Service). Jako 
następne do obsługi wybiera się zgłoszenie w drodze 
losowania (uporządkowanie przypadkowe)

Podstawowe pojęcia

System z niecierpliwymi klientami, może się zdarzyć 
opuszczenie kolejki przez zgłoszenie. Reguła odstępowania 
(rezygnacji) może zależeć od długości kolejki lub czasu 
oczekiwania w kolejce

Priorytet - niektóre zgłoszenia z kolejki mogą mieć prawo 
pierwszeństwa obsługi przed zgłoszeniem o niższym 
priorytecie

Priorytet rugujący. Zgłoszenie jednostki o wyższym 
priorytecie powoduje przerwanie obsługi.

Priorytet nierugujący. Obsługa jednostki o niższej klasie 
priorytetu jest kontynuowana

Podstawowe pojęcia

W zależności od tego, co dzieje się z wyrugowaną jednostką 
są trzy rodzaje priorytetu absolutnego:

priorytet absolutny z doobsługiwaniem

priorytet absolutny z identyczną obsługą od nowa

priorytet absolutny z inną obsługą od nowa

Klasyfikacja systemów kolejkowych według różnych wielkości 
określających system obsługi: 

dyscyplina kolejki

typ rozkładu wejściowego strumienia zgłoszeń 

typ rozkładu czasów obsługi 

liczba kanałów obsługi 

liczba faz obsługi itp. 

Analiza systemów kolejkowych

Jeżeli w systemie obsługi:

strumień zgłoszeń wchodzących do systemu nie jest stacjonarny

nie ma własności jednorodności

organizacja obsługi jest wielofazowa rozwiązanie analityczne 
zagadnienia praktycznie nie jest możliwe

Rozwiązanie w takim przypadku można otrzymać jedynie na 
drodze symulacji

Wielokrotna realizacja procesu obsługi, a następnie 
statystyczne opracowanie otrzymanych rezultatów pozwalają 
znaleźć interesujące badającego wskaźniki jakości procesu 
obsługi w systemie.

background image

Analiza systemów kolejkowych

System dyskretny - złożone kompleksy operacji związanych ze 
sterowaniem pojedynczych obiektów lub całych procesów np. 
technologicznych, w których zachodzące zmiany mają 
charakter nieciągły

Mogą to być procesy:

produkcyjne

kierowania złożonym systemem transportowym

zarządzania przedsiębiorstwem

Ze względu na przyjmowaną z założenia nieciągłość zmian, 
operuje się często pojęciami zdarzeń, pod którymi jest 
rozumiana zmiana stanu zachodząca w systemie

Analiza systemów kolejkowych

Wynikiem symulacji jest ciąg zdarzeń, które wystąpiły w 
systemie. Dla uzyskania pełnego obrazu zachowania się 
systemu w określonym przedziale czasu należy prowadzić 
rejestrację czasu zdarzeń oraz obiektów, których te zdarzenia 
dotyczą

Przy realizacji dyskretnych modeli symulacyjnych ważne jest 
przedstawienie czasu. Czas jest tu pojęciem umownym, gdyż 
nie ma on bezpośredniego związku z rzeczywistym czasem, w 
którym odbywają się zdarzenia (stanowi jedynie jego 
odwzorowanie), ani też z czasem wykonywania obliczeń przez 
komputer (który zależy wyłącznie od złożoności obliczeń i 
własności komputera)

Analiza systemów kolejkowych

W modelu symulacyjnym czas jest realizowany jako zmienna 
nazywana czasem zegarowym. Na początku procesu symulacji 
czas zegarowy jest nastawiany na wartość zero, potem 
wskazuje liczbę umownych jednostek czasu, które upłynęły od 
chwili początkowej. Wszystkie zdarzenia zachodzące w 
systemie zostają usytuowane w czasie z dokładnością do 
przyjętej jednostki czasu zegarowego.

Mając sformalizowany opis modelowanego systemu, 
przygotowanie komputerowego programu symulacyjnego 
można ogólnie podzielić na trzy zasadnicze etapy

Analiza systemów kolejkowych

Pierwszy etap: generowanie oraz inicjowanie modeli. Na 
podstawie posiadanego opisu systemu należy określić zbiór 
wielkości, które w modelu będą reprezentować jego stan. 
Zbiór ten stanowi w modelu odwzorowanie systemu, 
określając jego stany w kolejnych chwilach czasu

Etap drugi: zaprogramowanie procedury obejmującej cykl 
operacji związanych z samym przebiegiem symulacji. 
Procedura ta jest nazywana algorytmem symulacji, lub 
procedurą upływu czasu, która zwykle jest realizowana w 
sposób iteracyjny i składa się z następujących kroków:

background image

Analiza systemów kolejkowych

Kolejne kroki algorytmu symulacji:

wyszukiwanie potencjalnego następnego zdarzenia

wybór działania

sprawdzenie czy dane zdarzenie może być realizowane

zmiana stanu systemu wynikająca z zaistniałych zdarzeń

gromadzenie danych otrzymanych w wyniku symulacji (często są to 
dane o charakterze statystycznym)

Etap trzeci: opracowanie formy wyprowadzania wyników 
symulacji. Wyniki mogą być przedstawione w formie 
tekstowej lub graficznej. Wyniki końcowe mogą być wstępnie 
opracowane statystycznie

Zasady konstrukcji dyskretnych modeli symulacyjnych

Model symulacyjny jednofazowego systemu kolejkowego

Poczekalnia

.

.

.

1

2

N

Kanały obsługi

.

.

.

1

2

m

Strumień
wejściowy

Klienci
obsłużeni

Dyscyplina kolejki

Zbiór reguł 

przydziału kanałów

Klienci opuszczający 
poczekalnię

Klienci rezygnujący 
z oczekiwania

Strumień
wyjściowy

Czas obsługi

Max czas

oczekiwania

Model przedstawia jednofazowy system kolejkowy

Dla otrzymania odpowiednich charakterystyk systemu po 
każdej realizacji eksperymentu symulacyjnego są 
wyprowadzane następujące dane dotyczące tej realizacji:

ogólna liczba zgłoszeń, które przybyły do systemu

liczba zgłoszeń obsłużonych

ogólna liczba odmów obsługi (zawierająca odmowy z 
powodu przepełnienia miejsc w poczekalni, z powodu 
zakończenia pracy systemu oraz z powodu ewentualnego 
opuszczenia kolejki przez niecierpliwe zgłoszenie)

średnia długość kolejki, liczona jako średnia po czasie z 
długości kolejki zgłoszeń

Model symulacyjny jednofazowego systemu kolejkowego

background image

zajętość systemu, określająca przeciętną liczbę 
jednocześnie używanych kanałów obsługi,

obciążenie dla każdego z kanałów obsługi, które podaje w 
procentach zajętość kanału w rozważanym przedziale 
czasu,

średni czas oczekiwania na obsługę liczony tylko dla 
zgłoszeń obsłużonych

Wynikami końcowymi są analogiczne wielkości 
liczone jako średnie po założonej ilości realizacji 
eksperymentu symulacyjnego. Przedstawiony model 
może być wykorzystany w fazie projektowania do 
wyboru optymalnej struktury i organizacji systemu 
kolejkowego lub do doskonalenia już istniejących 
systemów

Model symulacyjny jednofazowego systemu kolejkowego

Podstawowe wiadomości 

o algorytmach

Algorytm

Algorytmem nazywa się przepis 
postępowania, którego wykonanie prowadzi 
do rozwiązania określonego zadania w 
skończonym czasie

Algorytm jest zbiorem pewnych reguł (zasad) 
określających rodzaj czynności, które należy 
wykonać

Algorytm

W algorytmie muszą być wyszczególnione 
wszystkie niezbędne czynności, potrzebne do 
rozwiązania postawionego zadania, oraz ściśle 
sprecyzowana kolejność ich wykonania

Przepis postępowania powinien być na tyle 
przejrzysty, aby posługiwanie się nim polegało 
tylko na automatycznym wykonaniu czynności

background image

Algorytm

Obiekty podlegające przekształcaniu 
(przetworzeniu) podczas wykonywania 
algorytmu nazywa się danymi

Ostateczne rezultaty wykonania algorytmu 
nazywa się wynikami

ALGORYTM

DANE

WYNIKI

Algorytm

Realizacja algorytmu nie wymaga znajomości 
problemu, który ten algorytm rozwiązuje

Sprowadza się do czysto mechanicznego 
wykonania reguł

Zatem wykonawcą algorytmu nie musi być 
człowiek 

Algorytm musi być opisany w języku 
zrozumiałym dla maszyny cyfrowej

Podstawowe własności algorytmu

Masowość: zastosowanie oznaczeń symbolicznych 
umożliwia otrzymanie takiego opisu algorytmu, 
dzięki któremu możemy go zrealizować dla 
dowolnego zestawu danych

Ogólność: Opis algorytmu powinien zawierać obok 
listy czynności również dziedzinę danych i postać 
wyników (np. pierwiastki równania kwadratowego –
zespolone, rzeczywiste)

Podstawowe własności algorytmu

Skończoność wykonania: Wyniki powinno się 
uzyskać po wykonaniu skończonej liczby 
operacji

Jednoznaczność zapisu: poprawny zapis 
algorytmu powinien gwarantować, że 
każdorazowe jego wykonanie – dla tego 
samego zestawu danych – daje te same wyniki 
pośrednie i końcowe

background image

Podstawowe własności algorytmu

Niezawodność: jest prawdopodobieństwem 
tego, że algorytm będzie prawidłowo 
realizował dane zadanie dla dowolnego 
zestawu danych

Niezawodność jest związana z jego 
poprawnością

Konwencje notacyjne algorytmów 

Istnieją dwa zasadnicze kierunki formalizacji 
algorytmów: algebraiczny graficzny

Sieci działań algorytmów (flow charts)

Ich autorem jest słynny amerykański 
matematyk John von Neumann, który 
zaproponował formalizację algorytmów za 
pomocą sieci działań

Konwencje notacyjne algorytmów

Sieci działań należą do klasy graficznego 
sposobu zapisów algorytmów

Podstawą tej koncepcji jest podzielenie 
procesu rozwiązywania zadania na odrębne 
etapy, które w sieci działań przedstawia się w 
postaci bloków 

Konwencje notacyjne algorytmów

Bloki są figurami graficznymi, posiadającymi 
pewną cechę znaczeniową

Wewnątrz nich wpisuje się rodzaj czynności, 
która ma być wykonana

Bloki łączy się liniami, które ukazują ich 
powiązania logiczne, a strzałki wskazują na 
kolejność wykonywania poszczególnych 
czynności algorytmu 

background image

Konwencje notacyjne algorytmów

Algorytm przedstawiony jako sieć działań jest 
niezależny od języka, w jakim będzie napisany 
program 

Zaletą sieci działań jest to, że tak 
przedstawiony algorytm jest bardziej 
przejrzysty i czytelny niż program 

Cecha ta staje się tym bardziej wyraźna, im 
bardziej skomplikowany jest algorytm 

Konwencje notacyjne algorytmów

Mając sieć działań, można sprawdzić poprawność 
algorytmu oraz przeprowadzić korektę wynikającą z 
jego logicznej niepoprawności 

Każdy algorytm winien być przedstawiony w postaci 
działań na takim poziomie szczegółowości, aby po 
dokonaniu wyboru języka programowania 
przekształcenia sieci działań w program było 
odwzorowaniem w stosunku 1:1 

Stosowane symbole graficzne

Początek, 
koniec 

Oznaczenie miejsca rozpoczęcia 
lub zakończenia algorytmu 

Operator 

Działanie (operacja) do 
wykonania 

Operator 
wejścia/wyjścia

Wprowadzanie danych do pamięci 
lub wyprowadzanie wyników

Element 
decyzyjny 

Operacja określająca wybór 
jednej z dróg działania 

Łącznik

Symbol łączenia dwóch 
fragmentów sieci działań 

Linia

Połączenie poszczególnych 
symboli sieci działań 

Typowe struktury sieci działań 

W sieciach działań można wyróżnić pewne typowe 
struktury graficzne, do których należą:

sekwencja

rozwidlenie

decyzja

pętla z licznikiem (gdy wiadomo, ile będzie dokładnie 
powtórzeń w pętli)

pętla z warunkiem (gdy ilość powtórzeń zależy od 
spełnienia pewnych warunków)

background image

Modelowanie procesów 

obliczeniowych

Przykład algorytmu

Przykład algorytmu badającego czy liczba N 
jest liczbą pierwszą

Liczba jest pierwsza, gdy dzieli się tylko przez 1 
i przez siebie

Np. 3, 5, 7, 11, 13, 17 są liczbami pierwszymi 

Na rysunku 
przedstawiony jest 
algorytm 
sprawdzania, czy 
liczba N (N>=3) jest 
pierwsza.
Algorytm ten polega 
na dzieleniu N przez 
2, 3, 4, ..., N-1 aż do 
osiągnięcia N lub 
znalezienia 
podzielnika 

DECYZJA

ROZWIDLENIE

P

Ę

T

L

A

 Z

 W

A

R

U

N

K

IE

M

Analiza pozwala stwierdzić, 
że nie trzeba sprawdzać 
podzielności N przez 
wszystkie liczby parzyste 
mniejsze od N. Wystarczy 
zbadać podzielność przez 2, 
ponieważ liczba podzielna 
przez dowolną liczbę 
parzystą dzieli się przez dwa. 
Teraz trzeba tylko zbadać 
podzielność przez liczby 
nieparzyste 3, 5, 7 itd. 

background image

Następny krok to stwierdzenie, iż 
musimy badać jedynie podzielniki 
nie większe niż pierwiastek z N. 
Jeżeli liczba ma podzielnik większy 
od pierwiastka z N, to ma też 
podzielnik mniejszy od pierwiastka 
z N. 
Np. liczba 792 – pierwiastek 27; 
dzieli się przez 81 ale również 
przez 3 i 9
Algorytm polega na dzieleniu N 
przez 2, a następnie przez liczby 
nieparzyste nie większe niż 
pierwiastek z N, aż do znalezienia 
podzielnika lub do osiągnięcia 
pierwiastka z N  

Podsumowanie przykładu

Wszystkie trzy sposoby prowadzą do celu

Zbadajmy liczbę podzielników, które musimy 
sprawdzić w każdym z trzech przypadków, dla trzech 
różnych N

N

Algorytm 

1

Algorytm 

2

Algorytm 

3

10

8

5

2

100

98

50

5

1000

998

500

50