background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Inżynieria oprogramowania

Wykład 8

UML:

diagram sekwencji

dr inż. Piotr Wrzeciono

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Diagramy sekwencji

Diagram  sekwencji  jest  najprawdopodobniej  jednym
z  najwcześniej  opracowanych  schematów  ogólnych.  Jego 
geneza  wiąże  się  z  wynalezieniem  telefonu  i  potrzeby 
opracowania  jasnego  opisu  zestawiania  i  rozłączania 
połączenia telefonicznego.

Ponieważ opis ten jest pewną sekwencją zdarzeń, wcześniej 
wspomniany opis nazywa się również diagramem sekwencji.

Jednakże w odróżnieniu od diagramu UML, opis zestawiania 
połączeń  zawiera  mniej  możliwości  opisu  różnorodnych 
sytuacji.

Zatem,  w  celu  dobrego  zrozumienia  tego  diagramu  UML, 
wrócimy teraz do analogowej telekomunikacji.

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Sekwencja połączenia telekomunikacyjnego

W  zestawianiu  połączenia  telefonicznego  pojawiają  się  zwykle  trzy 
urządzenia:  dwa  telefony  oraz  centrala.  Jednakże  najbardziej 
typowy układ, to dwa telefony i trzy centrale

Stary telefon

Stara centrala

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Konfiguracja zwykłej sieci telefonicznej

Do innej centrali                                                                            Do innej centrali

Centrale lokalne

Centrala 

międzystrefowa

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Sterowanie zestawianiem i rozłączaniem połączenia

System  na  schemacie  jest  w  miarę  prosty,  gdyż  taka  sieć 
umożliwia realizację połączeń pomiędzy różnymi centralami.

Jednakże wspomniana sieć nie będzie mogła pracować, gdy 
nie  opracuje  się  systemu  sygnalizacji,  zarówno  pomiędzy 
abonentami jak i centralami.

Dodatkowo  trzeba  opracować  znacznie  prostszy  schemat 
działania całości – diagram sekwencji połączenia.

W  tym  diagramie,  zamiast  rysunków  przedstawiających 
poszczególne elementy sieci, rysuje się pionowe proste linie, 
a strzałki pomiędzy nimi reprezentują sekwencję.

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Sygnalizacja jako określona sekwencja

Podstawową  sprawą  jest  wybór  telefonu  innego  rozmówcy 
przez abonenta inicjującego połączenie.

Zatem, zaczynając od początku:

1.Abonent  inicjujący  musi  podnieść  słuchawkę  i  upewnić 

się, że centrala działa.

2.Abonent wybiera numer
3.Abonent  czeka  na  odpowiedź,  czy  można  zestawić 

połączenie czy jest to niemożliwe.

Oczywiście  centrale  muszą  posiadać  własne  systemy 
sygnalizacji.

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Różne sekwencje dla różnych możliwych zdarzeń

Przyjmując  na  początek  za  wzór  standard  obowiązujący
w Polsce, mamy następującą sygnalizację na linii od centrali 
do abonenta:

1.Podniesienie  słuchawki  przez  abonenta  –  zmiana 

rezystancji elektrycznej linii,

2.Wybranie  numeru  przez  abonenta  (dekadowe  lub 

tonowe)

3.Sygnał zwrotny informujący o zestawianiu połączenia

*)

,

4.Sygnał  informujący  o  zestawieniu  połączenia  nazywany 

zwrotnym sygnałem dzwonienia lub

5.Sygnał 

informujący 

niemożności 

zestawienia 

połączenia.

*)

  W  telefonii  komórkowej  zwrotny  sygnał  dzwonienia  jest  generowany 

przez  sam  telefon,  ale  czasami  można  też  usłyszeć  sygnał  pochodzący
z centrali (jest on cichszy)

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Różne sekwencje dla różnych możliwych zdarzeń

Jest  oczywiście  możliwa  również  sytuacja,  gdy  abonent 
wywoływany  nie  może  odebrać  rozmowy  –  wówczas  są 
przyjęte dwa działania:

1.Po 

określonym 

czasie 

oczekiwania, 

centrala 

automatycznie  rozłącza  połączenie,  informując  o  tym 
abonenta  inicjującego  połączenie  za  pomocą  sygnału 
zajętości.

2.Centrala  czeka  tak  długo,  aż  abonent  dzwoniący  odłoży 

słuchawkę.

Uwaga!!!  Według  prawa  telekomunikacyjnego,  w  telefonii 
stacjonarnej  rozmowę  zakończyć  może  tylko  osoba 
inicjująca połączenie!

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Różne sekwencje dla różnych możliwych zdarzeń

Sytuacja w przypadku niemożności zestawienia połączenia:

Są możliwe następujące zdarzenia:

1.Nie  istnieje  abonent  o  wybranym  numerze  (komunikat

z centrali do abonenta)

2.Abonent,  którego  numer  został  wybrany,  jest  czasowo 

odłączony od sieci (na przykład nie odłożył słuchawki na 
widełki  lub  nie  zapłacił  rachunków)  –  tutaj  też  stosowny 
komunikat z centrali

3.Któraś z trzech central telefonicznych, wspomnianych na 

początku  przykładu,  jest  zablokowana  i  nie  może 
zestawić połączenia (sygnał zajętości).

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Pierwsze diagramy sekwencji - telekomunikacja

Jak  przedstawiono  wcześniej,  istnieje  wiele  możliwych 
sekwencji  dla  każdej  z  możliwej  sytuacji.  Jest  to  typowe
w  telekomunikacji,  gdzie  każdemu  zdarzeniu  odpowiada 
zazwyczaj jakaś sekwencja.

Celem 

zobrazowania 

danej 

sekwencji 

wymyślono 

specyficzny  diagram,  w  którym  pojawiają  się  urządzenia, 
sygnalizacja i wykonywane działania.

Diagram  sekwencji  w  UML  jest  rozszerzeniem  tego,  co 
zostało  wymyślone  przez  inżynierów  zajmujących  się 
telekomunikacją.

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Diagram zestawiania połączenia (nr 1)

abonent

centrala

U

pły

w

 c

za

su

Wybranie numeru

Sygnał ze

stawiania

 połączen

ia

Zwrotn

y sygn

ał dzw

onieni

a

UWAGA!!

To nie jest 

UML!!!

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Diagram zestawiania połączenia (nr 2)

Abonent A

Centrala 1

Centrala 2

Centrala 3

Abonent B

Wybranie

numeru

Syg

nał

 ze

sta

wia

nia

poł

ącz

eni

a

Sprawdzanie

łącza

Sprawdzanie

łącza

Sprawdzanie

łącza

Wolne

łącze

Wolne

łącze

Wolne

łącze

Zwrotny

 sygnał

dzwonie

nia

Sygnał

dzwonienia

Podnies

ienie

słuchaw

ki

Kanał

zestaw

iony

Kanał

zestawi

ony

Rozpoc

zęcie

rozmow

y

UWAGA!!

To nie jest 

UML!!!

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Diagram telekomunikacyjny - podsumowanie

Ważną 

zaletą 

diagramu 

telekomunikacyjnego 

jest 

wprowadzenie  jednej  osi  czasu  dla  wszystkich  sekwencji. 
Oznacza to, że na wykresie można zaznaczyć poszczególne 
kroki  sekwencji  wykonywanych  przez  wiele  urządzeń  w  tym 
samym momencie czasowym.

Natomiast  zasadniczą  wadą  jest  konieczność  rysowania 
diagramu dla każdego przypadku oddzielnie.
Na  przykład  diagram  pozytywnego  zestawienia  połączenia 
jest  jeden,  ale  gdy  nie  można  zestawić  kanału,  trzeba 
rozrysować  każdy  przypadek  oddzielnie.  Zatem  dla  tego 
przypadku  uzyskujemy  co  najmniej  5  diagramów.

Diagram  telekomunikacyjny  stosuje  się  tylko  w  jednej 
dziedzinie – sam z siebie nie jest ogólny.

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

A gdyby tak spróbować diagram uogólnić?

Podczas 

omawiania 

diagramu 

maszyny 

stanowej 

przywołany  został  jego  protoplasta  –  graf  automatu
z układów cyfrowych (elektronika, ale nie tylko).

Podobny 

potencjał 

posiada 

diagram 

sekwencji

w telekomunikacji.

W  pierwszym  kroku  można  zamienić  urządzenia  oraz 
abonentów na obiekty (nie mogą to być klasy, bo sekwencja 
istnieje w czasie, a klasa, jako idea (filozofia platońska), jest 
niezmienna!!

Zatem  istnieje  możliwość  utworzenia  diagramu  sekwencji  w 
UML na podstawie schematu telekomunikacyjnego.

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Diagram sekwencji w UML

Dokonując  uogólnienia  diagramu  telekomunikacyjnego, 
zamieniamy  uczestników  ruchu  telekomunikacyjnego  na 
obiekty, stosując symbol obiektu, ogólnie przyjęty w UML.

Dodatkowo,  każdy  obiekt  uzyskuje  tak  zwaną  linię  życia 
(lifeline),  odpowiednik  pionowej  prostej  w  diagramie 
telekomunikacyjnym. 

Lifeline 

zaznacza 

się 

kreską 

przerywaną.

Dodatkowo,  jeżeli  obiekt  wywołuje  jakąś  metodę  pod 
wpływem  sekwencji,  pojawia  się  dodatkowy  prostokąt, 
nazywany aktywacją.

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Diagram sekwencji UML - obiekt

Obiekt

Linia życia 
(lifeline)

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Obiekty i czas już jest – a co z komunikacją?

W  diagramie  telekomunikacyjnym  przekazywana  jest 
informacja z wykorzystaniem sygnalizacji.

W  diagramie  UML  uzyskuje  się  to  za  pomocą  wiadomości 
(analogia  do  sygnaliznacji  jest  oczywista).  Dodatkowo,
w  terminologii  anglojęzycznej,  określenia  typów  wiadomości 
są identyczne jak w przypadku telekomunikacji!

Wiadomość  to  message,  a  główny  rodzaj  wiadomości 
nazywa się call.

Wiadomości dzieli się na dwa rodzaje:
Synchroniczną – czyli wykonywaną natychmiast, na żądanie, 
oraz  asynchroniczną  –  niezwiązaną  specjalnie  z  jakąś 
czynnością.

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Diagram sekwencji w UML - komunikacja

Najpierw abonent wybiera numer, a następnie Centrala wysyła sygnał 

zestawiania połączenia. Jest to wywołanie asynchroniczne – gdyż nawet

w myśl prawa telekomunikacyjnego nie jest potrzebne, ale jest powszechne

w użyciu.

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Diagram sekwencji w UML - komunikacja

Diagram sekwencji dla zestawienia połączeń z wykorzystaniem dwóch central

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Kilka uwag na temat oznaczeń

w diagramie sekwencji UML

Diagram  sekwencji  UML  posiada  specyficzne  komunikaty. 
Oznacza się je dwoma rodzajami kresek ze strzałkami.

Pierwsza  z  nich,  bardzo  często  stosowana,  oznacza 
komunikat  synchroniczny,  wpływający  bezpośrednio  na 
działanie danej akcji.

Drugi  komunikat  pojawia  się  jako  informacja  zwrotna  po 
zakończeniu 

aktywności. 

Komunikat 

oznacza 

się 

następująco:

Asynchroniczny 
kończy się 
strzałką bez 
wypełnienia!

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Kilka uwag na temat oznaczeń

w diagramie sekwencji UML

Ponieważ  w  UML  operujemy  na  obiektach,  to  diagram 
sekwencji  posiada  specjalne  rozszerzenia  służące  do 
powoływania  obiektów  do  istnienia  (create),  jak  i  ich 
niszczenia (destroy).

Powołanie 

nowego obiektu 

do istnienia

Zniszczenie Obiektu 2

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Specyficzne rodzaje linii życia (UML 2.1)

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Boundary Life line

Boundary  Life  line  nazywa  się  często  po  polsku  obiektem 
granicznym.

Pojęciem  tym  określa  się  obiekt,  który  zawiera  w  sobie 
elementy dwóch różnych rzeczywistości.

Na przykład interfejs użytkownika jest tego rodzaju obiektem, 
bo  zawiera  w  sobie  zarówno  część  czysto  informatyczną 
(wywołanie 

określonych 

funkcjonalności 

programu),

a  jednocześnie  swoim  wyglądem  przypomina  świat 
rzeczywisty  (przyciski,  wyświetlacze,  wirtualne  pokrętła, 
suwaki itd., itp..).

Obiektem  granicznym  może  być  też  zespół  tworzący 
oprogramowanie, a złożony z ludzi o różnych profesjach.

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Control Lifeline

Control  w  języku  angielskim  oznacza  przede  wszystkim 
sterowanie.  W  takim  znaczeniu  stosuje  się  to  słowo
w automatyce i w elektronice.

Polskie  słowo  „kontrola”  nie  do  końca  odpowiada 
znaczeniowo  angielskiemu  „control”,  zatem  powinno  się 
tłumaczyć nazwę tego typu obiektu jako obiekt sterowania.

Obiekt oznaczany jako „control” służy głównie do sterowania 
innymi obiektami lub pełni specjalną funkcję nadzorującą.

Na  przykład  komputer  sterujący  sygnalizacją  świetlną  jest 
tego rodzaju obiektem.

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Entity Lifeline

Entity  tłumaczy  się  na  język  polski  jako  encja,  przy  czym 
samo słowo „encja” jest bardzo wieloznaczne.

Na  przykład  encją  nazywa  się  znak  w  HTML  zdefiniowany 
poprzez  &nazwa;  ,  W  ten  sposób  definiuje  się  niełamliwe 
spacje, a dawniej używano tego sposobu do tworzenia stron 
internetowych  przeznaczonych  dla  internautów  z  różnych 
krajów.

Encja jest również używana w XHTML, do definiowania wielu 
parametrów.

W filozofii encją nazywa się niezależny byt.

Zatem co z tą encją?

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Entity Lifeline

Przyjmując  tożsamość  pomiędzy  encją  a  bytem,  możemy 
powiedzieć,  że  każdy  obiekt  powołany  do  istnienia  na 
podstawie klasy jest encją.

Na przykład samochód „garbus” jest encją, komputer też jest 
encją, itd..

Posługując  się  metodą  eliminacji,  można  przyjąć,  że  encją 
będzie  taki  obiekt,  którego  głównym  celem  jest  istnienie
i  działanie  samo  dla  siebie,  czym  znacząco  różni  się  od 
pozostałych wspomnianych typów.

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Zgrupowania w diagramach sekwencji UML

W diagramach sekwencji istnieją bardzo ważne rozszerzenia 
konceptualne względem diagramu telekomunikacyjnego.

Są  to  zgrupowania  aktywności,  w  celu  podkreślenia  ich 
współdziałania.

Zgrupowanie  oznacza  się prostokątem, przy  czym w  lewym 
górnym roku jest nazwa określająca typ zgrupowania.

Obecnie stosowane grupy to:

ref, loop, opt, par, alt

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Grupa ref

Grupa „ref” pochodzi od angielskiego określenia „interaction 
occurrence”.

Tłumacząc  to  na  język  polski,  jest  to  grupa  umożliwiająca 
ukrycie  interakcji  w  osobnym  makrze.  Ty,  samym  zwiększa 
się  przejrzystość  bardzo  rozbudowanych  diagramów 
sekwencji UML.

W ogólności, to co się dzieje w grupie ref posiada charakter 
prywatny.

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Grupa loop

Grupa „loop” oznacza pętlę.

Grupowanie  tego  typu  tworzy  się,  gdy  dany  fragment 
algorytmu będzie musiał być wykonywany iteracyjnie.

Na  przykład,  gdy  chcemy  zaznaczyć,  że  trzeba  sprawdzić 
poprawność wprowadzanych danych w sposób hurtowy.

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Grupa opt

Nazwa  grupy  „opt”  pochodzi  od  „optional”.  Jest  to  swoiste 
polecenie  warunkowe  (konceptualne),  które  wykonuje  się 
tylko gdy warunek zostanie spełniony.

Należy  jednak  pamiętać,  że  w  grupie  należącej  do  „opt”,
nie ma możliwości zdefiniowania czegoś w rodzaju:

if(a>5) b = 7; else b = -7;

Tutaj  jest  tylko  jedna  możliwość.  Aby  wykorzystać  else, 
trzeba użyć bloku „alt”.

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Grupa par

Grupa „par” to skrót od „parallel”. Czyli w grupie jest obecne 
przetwarzanie równoległe.

Poszczególne wątki oddziela się od siebie przerywaną linią, 
przy  czym  każdy  z  nich  powinien  rzeczywiście  pracować 
niezależnie od siebie.

Założeniem  głównym  tej  grupy  jest  niedopuszczenie  do 
zatrzymania 

się 

działania 

programu 

powodu 

„zakleszczenia się” wątków wchodzących w jej skład.

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Grupa alt

Zgrupowanie  określane  jako  „alt”  to  nic  innego  jak  duże 
blokowe polecenie warunkowe.

Skrót  „alt”  bierze  się  ze  słowa  „alternative”.  Podobnie  jak
w  przypadku  grupy  „par”,  następuje  tutaj  podział  na 
wykonanie określonych działań, pod określonymi warunkami.

Mimo  iż  diagramy  sekwencji  są  w  zasadzie  konceptualne,
to  szczególnie  ten  rodzaj  grupy  pozwala  na  zauważenie 
wspólnej części wielu modułów, a tym samym, jako końcowy 
efekt, uzyskuje się krótszy i bardziej przejrzysty kod.

background image

 

 

SGGW Wydział Zastosowań Informatyki i Matematyki, Katedra Informatyki

© dr inż. Piotr Wrzeciono, 2012/13

Inżynieria oprogramowania – wykład 8

Podsumowanie

Omówione  na  tym  wykładzie  diagramy  sekwencji  są  już 
ostatnimi z najważniejszych rodzajów diagramów UML.

Jednakże  nie  należy  zapominać,  że  jeszcze  kilka  rodzajów 
diagramów nie zostało omówionych, a sam wykład nie może 
do  końca  wyczerpać  tak  rozbudowanej  problematyki,  jaką 
jest język UML.

Na  kolejnych  wykładach  omawiane  będą  zagadnienia 
związane  z  jakością  tworzenia  kodu  –  począwszy  od 
debugowania, a skończywszy na różnorodnych testach.

Znajomość  i  stosowanie  UML  pozwala  na  uniknięcie  wielu 
różnych  błędów  już  na  etapie  konceptualnym  –  dlatego 
zachęcam  również  do  samodzielnego  zainteresowania  się 
tym najważniejszym językiem inżynierii oprogramowania.


Document Outline