background image

E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, 
Wykład 11, Slajd 1

  

Projektowanie systemów 

informacyjnych

Ewa Stemposz, Kazimierz Subieta 

Instytut Podstaw Informatyki PAN, 
Warszawa

Polsko-Japońska Wyższa Szkoła
Technik Komputerowych, Warszawa

Wykład 11

Model dynamiczny (3)
Diagramy implementacyjne i pakietów

background image

E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, 
Wykład 11, Slajd 2

Zagadnienia

 Diagramy komponentów

 Diagramy wdrożeniowe

Diagramy pakietów

Diagramy implementacyjne:

background image

E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, 
Wykład 11, Slajd 3

Diagramy implementacyjne

    Diagramy  komponentów  pokazujące  zarówno  implementację 
elementów    projektu  (np.  grupy  klas)  przez  komponenty,  jak  i 
interfejsy  oraz  zależności  między  komponentami,  innymi  słowy 
pokazujące strukturę kodu konstruowanego SI.

    Diagramy  wdrożeniowe  pokazujące  konfigurację  systemu 
czasu  wykonania,  czyli  rozmieszczenie  komponentów  i  obiektów 
na  obliczeniowych  zasobach  czasu  wykonania,    zwanych    tu   
węzłami.  Taka    konfiguracja  może  być  zarówno  statyczna,  jak  i 
dynamiczna  −  i  komponenty  i  obiekty  mogą  migrować  między 
węzłami w czasie wykonania.

Diagramy  implementacyjne  pokazują  niektóre  aspekty  implementacji 
SI,  włączając  w  to    strukturę  kodu  źródłowego  oraz  strukturę  kodu 
czasu  wykonania  (run-time).  Konstruowanie  takich  diagramów  jest 
użyteczne zarówno ze względu na ponowne użycie, jak i ze względu na 
możliwość  osiągania  za  ich  pomocą  odpowiednich  parametrów   
wydajnościowych.

UML wprowadza dwa rodzaje takich diagramów: 

background image

E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, 
Wykład 11, Slajd 4

  

Diagramy komponentów (1)

interfejs bez nazwy

Program do

harmonogramów

Program 

planujący

Interfejs

graficzny

rezerwacje

aktualizacje

Komponent  jest  jednostką  implementacji  z  dobrze  zdefiniowanym 
interfejsem,  dobrze  wyizolowany  z  kontekstu,  nadający  się  do 
wielokrotnego  wykorzystania.  Dobrze  skonstruowany  komponent 
korzysta  z  innych  komponentów  wyłącznie  za  pośrednictwem  ich 
interfejsów, co z założenia ułatwia przyszłe modyfikacje.

Diagramy komponentów pokazują 
zależności pomiędzy 
komponentami oprogramowania, 
włączając komponenty kodu 
źródłowego, kodu binarnego oraz 
kodu wykonywalnego. 
Komponenty mogą istnieć w 
różnym czasie: niektóre z nich w 
czasie kompilacji, niektóre w 
czasie konsolidacji, zaś niektóre w 
czasie wykonania. Diagram 
komponentów jest przedstawiany 
jako graf, gdzie węzłami są 
komponenty, zaś strzałki (z 
przerywaną linią − zależność, ang. 
dependency)  prowadzą od klienta 
pewnej informacji do jej dostawcy.

komponent

interfejs nazwany

zależność

background image

E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, 
Wykład 11, Slajd 5

Diagramy komponentów (2)

 poprzez utworzenie listy komponentów wraz ze specyfikacją ich 
wzajemnych  zależności  (biblioteka  komponentów)  −  tu  bardzo 
pomocne jest nazywanie interfejsów,
  poprzez  diagram  komponentów  pokazujący  graficznie  sieć 
wzajemnych 

zależności 

między 

komponentami; 

diagram 

komponentów  pokazuje  również,  za  realizację  jakiego  interfejsu 
jest odpowiedzialny każdy z komponentów.

«

baza danych

»

Konta

Komponent może być opatrzony 
stereotypem.

Zbiór komponentów tworzących kod systemu może być opisywany na dwa sposoby:

background image

E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, 
Wykład 11, Slajd 6

Diagramy wdrożeniowe

Diagramy wdrożeniowe pokazują konfigurację elementów czasu 
wykonania:
 
   komponentów  sprzętowych, czyli  fizycznych  jednostek  posiadających 
co najmniej pamięć, a często i możliwości obliczeniowe,

  komponentów oprogramowania, 

  obiektów związanych z komponentami. 

Diagram wdrożeniowy jest grafem, gdzie wierzchołki (węzły) połączone 
są 

przez 

linie 

odwzorowywujące 

połączenia 

komunikacyjne 

komponentów  sprzętowych.  Węzły,  podobnie  jak  i  połączenia 
komunikacyjne,  mogą  być  opatrzone  stereotypami,  np.: 

«

CPU

»

«

pamięć

»

«

urządzenie  jakieś

»

.  Węzły  przechowują  obiekty  i 

wystąpienia  komponentów.  Węzły  mogą  brać  udział  w  związkach 
generalizacji.

AdminServer:KomputerHost

:Program do

harmonogramów

rezerwacje

KomputerJacka:PC

:Program 

planujący

połączenie komunikacyjne

komponent sprzętowy

background image

E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, 
Wykład 11, Slajd 7

Diagramy wdrożeniowe; przykład

Specjalne symbole są zwykle znacznie lepsze. W UML są one w pełni  legalne.

Serwer

diabetyków

Serwer

oddziału terapii

Szpitalna

sieć Ethernet

Internet

Klient Web

Sieć 

Ethernet

oddziału

PC z Windows

PC z Windows

background image

E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, 
Wykład 11, Slajd 8

Diagramy pakietów (1)

Pakiety są zestawami elementów danego modelu wraz z zachodzącymi 
pomiędzy  nimi  zależnościami.  Każdy  element  modelu  musi  być 
przypisany  do  jednego  pakietu  (home  package).  Dany  model  może  być 
opisany przez zbiór pakietów. Podział modelu na pakiety jest arbitralny, 
ale  u  jego  podstaw  powinny  leżeć  racjonalne  przesłanki,  np.  wspólna 
funkcjonalność,  silne  skojarzenia,  itp.  Pakiety  zawierają  elementy  tzw. 
wysokiego  poziomu,  takie  jak  np.:  klasy  i  ich  związki,  maszyny  stanów, 
grafy  przypadków  użycia,  itp.  To,  co  jest  zawarte  w  elementach 
wysokiego  poziomu,  np.  atrybuty,  operacje,  stany  zagnieżdżone,  itp.  z 
reguły nie pojawia się jako bezpośrednia zawartość pakietu.
Zależności  pomiędzy  pakietami,  wynikające  z  zależności  między 
elementami  w  nich  zawartymi,  są  przedstawiane  na  diagramach 
pakietów  w  postaci  strzałek  z  przerywaną  linią  (ang.  dependency). 
Strzałki wyznaczają kierunek przepływu informacji pomiędzy pakietami. 
Pakiety mogą być zagnieżdżane.
Pakiety mogą brać udział w związkach dziedziczenia. 
Pakiety  mogą  być  opatrywane  stereotypami  i  listami  własności 
etykietowanych.
Diagramy pakietów są istotne przede wszystkim dla dużych projektów, 
składających  się  z  wielu  jednostek  funkcjonalnych  (ze  złożonymi 
zależnościami pomiędzy tymi jednostkami) oraz tworzonych przez grupę 
współpracujących osób. 

background image

E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, 
Wykład 11, Slajd 9

Diagramy pakietów (2)

Pakiety  są  rysowane  jako  duże  prostokąty  z  małym  prostokątem  u  góry 
(“etykietą”). Jeżeli zawartość pakietu nie jest pokazana, wówczas nazwa 
pakietu  jest  wpisana  do  większego  prostokąta.  Jeżeli  jest  pokazana,  to 
nazwę pakietu wpisuje się do “etykiety”. Zależności  między elementami 
mogą być różnego rodzaju (mogą być opatrzone stereotypami), ale tego 
typu  informacja  nie  jest  przenoszona  przez  diagramy  pakietów  − 
uwidaczniany jest wyłącznie fakt istnienia zależności dowolnego rodzaju.

Istnieje co najmniej kilka powodów, dla których warto jest używać pakietów:

  W  celu  ukrycia  mniej  istotnych  elementów  modelu.  Dla 
przypomnienia:  uproszczenie          diagramu  współpracy  przez 
wykorzystanie pakietu zawierającego subkolaborację.

  Dla  ułatwienia  podziału  pracy  między  członkami  zespołu,  czy  też 
różnymi zespołami.

 Dla zaprojektowania komponentu.

Ostatni przypadek dotyczy specjalnego rodzaju pakietu, zwanego podsystemem.

Symbolu  pakietu  można  używać  we  wszystkich  rodzajach  diagramów. 
Można  pokazywać  zależności,  asocjacje  czy  inne  relacje  zachodzące 
między elementami pakietów, czy też pakietami, ale jak zawsze (jak dla 
każdego  rodzaju  diagramów)  szczegóły  nie  powinny  utrudniać 
rozumienia.

background image

E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, 
Wykład 11, Slajd 10

Diagramy pakietów; przykład

Edytor

Elementy 
diagramów
graficznych

Elementy 
dziedziny
zastosowań

Sterownik

Rdzeń grafiki

Rdzeń grafiki Motif

Rdzeń grafiki Windows

System
okienkowy

Motif

MS Windows

zależność

background image

E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, 
Wykład 11, Slajd 11

Odwołania

Pakiet (klient), który odwołuje się do elementu w innym pakiecie 
(dostawcy),  może    wykorzystać  pakiet  zawierający  pożądany 
element  używając  albo  zależności 

«

import

»

  albo 

«

access

»

  (dwa 

rodzaje  zależności  typu 

«

usage

»

).  Różnica  w  obu  rodzajach 

zależności  polega  na  różnych  sposobach  odwoływania  się  elementów  z 
jednego pakietu do elementów drugiego pakietu. 

P

A

x:E

Q

E

«import»

Nazwy  z  pakietów  zaimportowanych 
za  pomocą  zależności  typu 

«

import

»

 

są  dodawane  do  przestrzeni  nazw 
pakietu 

importującego. 

Na 

diagramie:  nazwy  z  pakietu  Q  są 
dodawane 

do 

przestrzeni 

nazw 

pakietu  P,  co  oznacza,  że  elementy  z 
P  traktują  nazwy  z  Q,  tak  samo  jak 
nazwy z P (tu może wystąpić konflikt 
nazw).

P

A

x:Q::E

Q

E

«access»

Dla zależności typu 

«

access

»

 nazwa, 

do której  następuje odwołanie, musi 
być  poprzedzona  nazwą    pakietu,  w 
którym jest zdefiniowana.

oznaczenie
klasy

background image

E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, 
Wykład 11, Slajd 12

Reguły widoczności

Pakiet  widzi  zawartość  tych  pakietów,  które  są  widoczne  dla  pakietu, 
wewnątrz którego jest zagnieżdżony, innymi słowy zagnieżdżony pakiet 
widzi  to  samo,  co  pakiet  zawierający  go.  Zależność  odwrotna  nie 
zachodzi.  Symbole  +  (publiczna),    -  (prywatna),    #  (chroniona)  są 
używane na oznaczenie widoczności elementu zawartego w pakiecie na 
zewnątrz pakietu – widoczności dla pakietów, klientów danego pakietu.

Zasady widoczności można sformułować następująco:

  Element  zdefiniowany  w  danym pakiecie jest widoczny dla innych 
elementów tego    pakietu.

    Jeśli  A  jest  powiązany  zależnością  z  pakietem  B,  wtedy  wszystkie 
elementy o widoczności publicznej w B są widoczne w A.

  Jeśli pakiet B dziedziczy po pakiecie A, wtedy wszystkie elementy w 
A, o widoczności publicznej lub chronionej, są widoczne w B.

    Jeśli  element  jest  widoczny  w  pakiecie  A,  to  jest  widoczny  we 
wszystkich pakietach,    które są w A zagnieżdżone.

Zależności nie są przechodnie, tzn. jeśli A jest połączone zależnością z B, a B z C, to nie 
oznacza, że A jest połączone zależnością z C. Zależności nie są też symetryczne.

background image

E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, 
Wykład 11, Slajd 13

Reguły widoczności (2)

Reguły widoczności dla elementów klas:

    Elementy  zawarte  wewnątrz  klasy,  np.  atrybuty  czy  operacje,  są 
widoczne  (dostępne  dla  innych  klas)  wewnątrz  pakietu,  jeśli 
widoczność tych elementów jest publiczna.

    W  przypadku  dziedziczenia,  podklasa  widzi  elementy  o 
widoczności publicznej i    chronionej z nadklasy.

  Cała zawartość klasy jest widoczna wewnątrz klasy.

Przykład:

A

+X

-Y

B

+U

-V

«

access

»

Pakiet A ma dostęp do pakietu B, ale B 
nie  ma  dostępu  do  A.  Klasy  X  i  Y  w 
pakiecie A widzą klasę U w pakiecie B 
(widoczność  publiczna),  nie  widzą  zaś 
klasy  V  (widoczność  prywatna).  Klasy 
U i V nie mają dostępu do żadnej klasy 
w  pakiecie  A,  mimo  publicznej 
widoczności 

klasy 

(brak 

odpowiedniej  zależności,  B  nie  ma 
dostępu  do  A).  Klasy  X  i  Y,  podobnie 
jak  U  i  V,  widzą  nawzajem  swoje 
publiczne  elementy    (jako  klasy 
zdefiniowane w tym samym pakiecie).

background image

E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, 
Wykład 11, Slajd 14

Reguły widoczności; przykład

A

+X

B

C

+K

-L

«

access

»

A

+X

B

C

+K

-L

«

access

»

«

access

»

background image

E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, 
Wykład 11, Slajd 15

Specjalne rodzaje pakietów

«

facade

»

  (

«

fasada

»

)  Zawiera  wyłącznie  odwołania  do  elementów 

zdefiniowanych w innych pakietach.

«

model

»

  Stanowi  mniej  lub  więcej  kompletną  abstrakcję  systemu  (na 

pewnym  poziomie  szczegółowości),  widzianą  z  pewnej  perspektywy. 
Zwykle  zawiera  wewnątrz  drzewo  pakietów.  Model  może  zawierać 
relewantne  elementy  z  otoczenia  systemu,  np.  aktorów.  Elementy  z 
różnych  modeli  nie  oddziaływują  bezpośrednio  na  siebie,  ale  często 
stanowią różne reprezentacje tego samego bytu, różniące się np. ilością 
detali, stąd może wynikać potrzeba łączenia ich zależnością typu 

«

trace

»

 

czy 

«

refinement

»

.

«

subsystem

»

 (

«

podsystem

»

) Jest rodzajem pakietu, który reprezentuje 

pewien spójny, logiczny, dobrze wyizolowany fragment systemu. Posiada 
dobrze  wyspecyfikowany  zbiór  interfejsów,  do  interakcji  z  otoczeniem. 
Podsystem podzielony jest na dwie części:  specyfikacyjną i realizacyjną. 
Część specyfikacyjna zawiera opis interakcji z otoczeniem, z  reguły za 
pomocą  przypadków  użycia.  Część  realizacyjna,  posługując  się 
kolaboracjami,  podaje  sposoby  realizacji  przypadków  przez  podsystem. 
Podsystemy  mogą  być  zbudowane  z  innych  podsystemów,  wtedy  te 
najniższego poziomu muszą już zawierać elementy modelu.

Podsystem  stanowi  zgrupowanie  elementów  modelu  logicznego. 
Komponent  jest  zgrupowaniem  elementów  modelu  implementacyjnego. 
W wielu przypadkach podsystemy są implementowane jako komponenty. 
To upraszcza mapowanie modelu logicznego w implementacyjny i dzięki 
temu jest powszechnie stosowanym podejściem. 

background image

E. Stemposz, Analiza i Projektowanie Systemów Informatycznych, 
Wykład 11, Slajd 16

Podsumowanie diagramu pakietów

  Pakiety  stanowią  zgrupowanie  elementów  modelu.  Są  środkiem 
ogólnego  zastosowania  przeznaczonym  do  budowania  struktur 
hierarchicznych.  

  Każdy  element  modelu,  który  nie  jest  zawarty  wewnątrz  innego 
elementu  modelu,  musi  być  zdefiniowany  wewnątrz  dokładnie 
jednego pakietu, czyli wewnątrz dokładnie jednej przestrzeni nazw 
(home package).

 Pakiet, oprócz elementów modelu, może też zawierać inne pakiety (zagnieżdżanie).

 Są pakiety specjalnego rodzaju: fasada, model, podsystem, system.

  Stosowanie  pakietów  ułatwia  zarządzanie  przechowywaniem, 
konfiguracjami czy modyfikowaniem elementów systemu.

 Dobrze przeprowadzony podział na pakiety może znacząco ułatwić 
zarządzanie procesem konstrukcji produktu programistycznego.


Document Outline