background image

 

Inżynieria Oprogramowania 

Projekt 

Ekspres do kawy 

 

 

 

 

Patrycja Grabowska 
IMIR, Mechatronika, gr.23 
Rok akademicki 2013/2014 

background image

Spis treści 

1 Wstęp .................................................................................................................... 3

 

2 Realizacja ............................................................................................................. 3

 

2.1 Use Case Diagram ......................................................................................... 3

 

2.2 Object Model Diagram .................................................................................. 4

 

2.3 Statecharts ...................................................................................................... 6

 

2.3.1 CoffeeMachine ........................................................................................ 6

 

2.3.2 Boiler ....................................................................................................... 8

 

2.3.3 Display .................................................................................................... 9

 

2.4 Activity Diagram ........................................................................................... 9

 

2.5 Panel Diagram ............................................................................................. 10

 

3 Efekt kompilacji programu ................................................................................. 11

 

4 Podsumowanie .................................................................................................... 12

 

 

 

 

background image

1 Wstęp 

Celem projektu było stworzenie systemu ekspresu do parzenia kawy. Ekspres jest 

jednym z najpopularniejszych sprzętów domowych. Zgodnie z statystykami, codziennie 

korzystają  z  niego  setki  ludzi,  zarówno  w  domach  prywatnych,  jak  i  kawiarniach, 

restauracjach, biurach, itp. 

 

2 Realizacja 

Przedstawiony w projekcie ekspres jest typowym automatem, jaki można spotkać 

w  miejscach  publicznych.  Posiada  otwór  na  monety,  wyświetlacz,  diody  kontrolne 

informujące  o  etapie  przygotowywania  kawy  oraz  wskaźnik  pokazujący  napełnienie 

kubka.  W  przypadku  pojawienia  się  błędu,  następuje  poinformowanie  o  nim 

użytkownika. 

Podczas  symulacji  istnieje  możliwość  ustawienia  różnych  warunków  pracy 

ekspresu. 

System  został  stworzony  w  języku  UML.  Do  jego  realizacji  wykorzystano 

oprogramowanie IBM Rational Rhapsody v. 7.6.1.0. for C++. 

Poniżej przedstawiono elementy stworzonego systemu. 

 

2.1 Use Case Diagram 

Jest  to  diagram  przedstawiający  główne  funkcje  systemu  oraz  osoby  do  nich 

upoważnione. Pozwala ustalić wymagania dla systemu oraz pokazuje wzajemny wpływ 

pomiędzy systemem a osobami, które z niego korzystają. 

W stworzonym systemie można wyróżnić 3 typy aktorów (osób mających dostęp 

do  ekspresu):  użytkownik  przygotowujący  kawę  (User),  właściciel  ekspresu  (Owner

sprawdzający poziom zbiorników z wodą, mlekiem, kawą i kubkami oraz uzupełniający 

ewentualne  braki,  a  także  serwisant  (ServicePerson)  odpowiedzialny  za  poprawne 

działanie automatu. 

Na rysunku 2.1 przedstawiono Use Case Diagram stworzonego systemu. 

background image

 

Rys. 2.1 Use Case Diagram ekspresu. 

2.2 Object Model Diagram 

Jest to diagram, który wyszczególnia typy obiektów w systemie, atrybuty i operacje 

należące do tych obiektów, stałe relacje istniejące pomiędzy klasami oraz ich możliwe 

połączenia. 

Na rysunku 2.2 przedstawiono Object Model Diagram ekspresu. Jak można na nim 

zauważyć,   system ekspresu składa się z 3 głównych klas:  

a)  CoffeeMachine – główna klasa reprezentująca system. Posiada takie 

atrybuty, jak: milk-, coffee- oraz cupContainer (informacje o poziomie 
mleka, kawy odpowiednich zbiornikach oraz poziomie zapełnienia 
kubka
), cup (informacja dotycząca pojawienia się kubka pod dyszą), 
power (zasilanie), cupCounter (wyświetla ilość zakupionej kawy) oraz 
waterPressure (informacja o ciśnieniu wody). 

b)  Display – klasa reprezentująca wyświetlacz ekspresu. Jej atrybuty to: 

power (informacja o zasilaniu), rotationTime (czas rotacji), stateMessage 
(informacja o etapie pracy).  

c)  Boiler  - klasa ogrzewacza wody. Zawiera informacje dotyczące obenej 

temperatury wody (waterTemp)  oraz jej dopuszczalnego zakresu 
(MAX_TEMP, MIN_TEMP),  a także informacje dotyczące zasilania 
(power). 

background image

 

Rys. 2.2     Object Model Diagram ekspresu

background image

Klasy  Dispaly    i    Boiler  są  połączone  jednokierunkowymi  relacjami  z  klasą 

CoffeeMachine – informacje przepływają tylko w jedna stronę. 

Dodatkową klasą, która nie znajduje się  na diagramie, jest  MachineTester. Została 

ona  stworzona  w  celu  przetestowania  działania  systemu.    Zostanie  ona  bliżej 

przedstawiona w dalszej części sprawozdania. 

Na  rys.  2.2  można  również  zauważyć  obiekty  klas:  MachineTester  oraz 

CoffeeMachine   połączonych jednokierunkową  reacją. Widoczne jest  także , że element 

klasy  CoffeeMachine  zawiera obiekty klas:  Boiler i Display. 

2.3 Statecharts 

Statecharts (czyli grafy stanów) definicją zachowania obiektów, biorąc pod uwagę 

różnorodne stany, w jakich obiekt może się znaleźć pod wpływem otrzymania na wejściach 

różnych  wiadomości,  zdarzeń,  lub  sygnałów  upływu  czasu.  Każdy  graf  stanu  definiuje  

zachowanie pojedynczej klasy. 

Poniżej przedstawiono grafy dla poszczególnych utworzonych klas. 

2.3.1 CoffeeMachine 

Na  rysunku  2.3  przedstawiono  graf  obrazujący  zachowanie  klasy  CoffeeMachine.    

Możemy  wyróżnić  2  charakterystyczne  stany  dla  tej  klasy:  on  (włączenia)  oraz  off 

(wyłączenia). Warunkiem przejścia w jeden z nich jest zmiana wartości zmiennej power. 

Stan włączenia składa się z 2 podstanów: idle (przygotowania do pracy) oraz working 

(pracy  ekspresu).  W  pierwszym  z  nich  nastepuje  uruchomienie  funkcji  zagrzania  wody 

wykonywanej aż do momentu uzykania jej odpowiedniej temperatury. Następnie należy 

wrzucić  monetę.  CoffeMachine    przejdzie  wówczas  w  stan  working  składający  się 

z kolejnych kroków: 

a)  Wsypanie odpowiedniej ilości kawy do kubka. 

b)  Podniesienie ciśnienia wody do 190 bar. 

c)  Nalanie do kubka wody pod ciśnieniem do określonego poziomu. 

d)  Nalanie do kubka odpowiedniej ilości mleka. 

e)  Sprawdzenie poziomu płynów w kubku. 

f)  Wyświetlenie informacji o gotowości kawy do odbioru. 

g)  Powrót do stanu idle.

background image

 

Rys. 2.3 Statechart klasy CoffeeMachine 

 

background image

Po otrzymaniu sygnału o braku mocy (power==0) następuje wyłączenie ekspresu, 

grzałki do wody oraz wyświetlacza. 

 

  2.3.2 Boiler 

Na rysunku 2.4 przedstawiono działanie klasy Boiler. Dla klasy tej można wyróżnić 

2  główne  stany:  włączenia  (on)  oraz  wyłączenia  (off).  Przejście  pomiędzy  nimi  jest 

warunkowane  wartością  zmiennej  power  oraz  sygnałem  otrzymanym  z  klasy 

CoffeeMachine. Po przejściu w tryb włączenia następuje uruchomienie funkcji gotowania 

wody,  która  generuje  stosowny  komunikat  dla  klasy  CoffeeMachine.  Po  osiągnieciu 

żądanej  temperatury  grzałka  przechodzi  w  stan  utrzymania  temperatury  wody  oraz 

zostaje wysłany komunikat o gotowości ekspresu do pracy. Temperatura wody jest stale 

monitorowana. W przypadku jej spadku następuje powrót do stanu podgrzewania. 

 

Rys. 2.4 Statechart klasy Boiler 

 

 

background image

2.3.3 Display 

Na  rysunku  2.5  przedstawiono  graf  stanów  klasy  Display.  W  klasie  tej  możemy 

wyróżnić  2  główne  stany:  on  (włączenia)  oraz  off  (wyłączenia).  Warunkami  przejścia 

między  nimi  jest  zmiana  wartości  argumentu  power  lub  sygnał  wyłączenia  przesłany 

przez  element  klasy  CoffeeMachine.  Po  przejściu  w  stan  włączenia  na  wyświetlaczu 

pojawia  się  stała  wiadomość.  Następnie  po  uruchomieniu  procesu  parzenia  kawy 

na  wyświetlaczu  pojawiają  się  kolejne  komunikaty  dotyczące  etapu  przygotowania 

napoju. Po zakończeniu pracy ekspresu wyświetlacz powraca do stanu początkowego. 

 

Rys. 2.5 Statechart klasy Display. 

 

2.4 Activity Diagram 

Activity  Diagram  (czyli  diagram  aktywności)  określa  zachowanie  danej  klasy, 

służy do przedstawienia kolejnych kroków wykonywanych przez nią. 

Na  rysunku  2.6  przedstawiono  diagram  aktywności  klasy  MachineTest  służącej 

do przetestowania działania stworzonego systemu. Diagram ten obrazuje kolejne etapy 

pracy ekspresu do kawy. Na początku system oczekuje na sygnał rozpoczynający jego 

pracę.  Po  jego  otrzymaniu  ustawia  wartość  atrybutu  power  na  1,  uruchamiając  dzięki 

temu  grzałkę  (Boiler)  oraz  wyświetlacz  (Display).  Ekspres  przechodzi  w  stan 

przygotowania  do  pracy:  następuje  proces  grzania  wody  aż  do  osiągnięcia  żądanej 

temperatury. System oczekuje na wrzucenie monety. Po tym zdarzeniu następuje proces 

przygotowania kawy. Na zakończenie zostaje wygenerowany komunikat  o  możliwości 

background image

odbioru  napoju  oraz  powrót  do  stanu  przygotowania  do  pracy  aż  do  momentu 

przygotowania piątej kawy, po czym następuje zakończenie pracy systemu. 

 

Rys. 2.6 Active Diagram klasy MachineTester 

2.5 Panel Diagram 

Na rysunku 2.7 przedstawiono Panel Diagram ekspresu do kawy. Jest to graficzne 

przedstawienie stworzonego systemu. Po prawej stronie widoczny jest prostopadłościan 

symbolizujący  ekspres,  na  którym  można  wyróżnić  takie  elementy,  jak:  wyświetlacz, 

diody  informujące  o  kolejnych  etapach  pracy  ekspresu  oraz  przyciski  służące 

background image

do inicjalizacji zdarzeń: wrzucenia monety (Insert coin) oraz zabrania kubka (Take the 

cup).  Po  prawej  stronie  widoczne  wnętrze  ekpresu:  wskaźniki  poziomu  kawy,  mleka, 

napełnienia  kubka  oraz  temperatury  i  ciśnienia  wody,  licznik  wydanych  kaw,  a  także 

uruchomienie  zasilania.  Poniżej  znajduje  się  konsola  służąca  do  ustalenia  warunków 

testowych dla systemu oraz przycisk rozpoczynający sprawdzanie działania ekspresu. 

Celem stworzenia diagramu było umożliwienie łatwego przetestowania działania 

systemu. 

 

Rys. 2.7 Panel Diagram 

 

3 Efekt kompilacji programu 

Pomimo  braku  błędów  podczas  generowania  kodu  oraz  budowania  aplikacji 

podczas  próby  uruchomienia  programu  występuje  komunikat  o  nieznanym  błędzie, 

co uniemożliwia przetestowanie działania systemu. Nie znaleziono źródła błędu. 

 

 

 

background image

4 Podsumowanie 

Teoretycznie  stworzony  system  w  pełni  obrazuje  działanie  ekspresu  do  kawy. 

Stworzony  system  zawiera  klasy  symbolizujące  zarówno  samo  urządzenie,  jak  i  jego 

podzespoły. Utworzono również funkcje realizujące charakterystyczne zadania ekspresu 

oraz diagramy przedstawiające je pracę.  

Trudno  jednak  stwierdzić  poprawność  działania  systemu  bez  przeprowadzenia 

testów, co jest niemożliwe z nieznanych powodów.