Metody modelowania procesow 2012 cz III

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 N wartości



Wartości zapisane są w wektorze A



Oznaczenia:



N – liczba wartości



i – 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 m 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 i 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


Wyszukiwarka

Podobne podstrony:
Metody modelowania procesow 2012 cz III
Metody modelowania procesow 2012 cz II
Metody modelowania procesow 2012 cz I (1)
Metody modelowania procesow 2012 cz II
Proces Templariuszy Cz III
Polskie wytyczne profilaktyki i leczenia żylnej choroby zakrzepowo zatorowej aktualizacja 2012 (cz
03 01 2012 Kinezyterapia cz III
Modelowanie, Semestr III PK, Semestr Zimowy 2012-2013 (III), Sprawozdania odlewnictwo moje
Procesy poznawcze cz I Psychologia N 2012 2013
Procesy poznawcze cz I Psychologia N 2012 2013
Prawo cywilne Wykład XII 11 12 2012 Delikty cz III
modelowanie procesˇw transportowych
Cz III Ubezpieczenia osobowe i majątkowe
Dziady cz III
Procesy Poznawcze cz
dziady cz III salon

więcej podobnych podstron