Część 4 – Analiza istniejącej aplikacji za pomocą narzędzia Altova UModel
W części pierwszej tej serii zaimportowaliśmy kod źródłowy do programu Altova UModel w celu utworzenia projektu UML i przeanalizowaliśmy diagram klas naszego istniejącego systemu bankomatów.
W Część 2 stworzyliśmy serię Diagramy przypadków użycia UML aby opisać interakcje użytkowników z systemem, a także zaplanowaliśmy ulepszenie aplikacji, które umożliwi wprowadzenie opłaty za wypłatę.
W Części 3 zaprojektowaliśmy diagram automatów stanów UML, aby dokładniej przeanalizować i udokumentować działanie naszego systemu. W tej części wrócimy do planowanego ulepszenia. Zostaliśmy zobowiązani do wprowadzenia opłaty za wypłatę z bankomatu: 2 dolary za wypłaty poniżej 100 dolarów i 4 dolary za wypłaty w wysokości 100 dolarów lub więcej. W Części 2 przygotowaliśmy diagram przypadków użycia, aby pokazać, jak użytkownicy będą korzystać z nowej funkcji:
![]()
Z naszej początkowej analizy klas obiektowych, przedstawionej w części 1, wiemy, że nasz system zawiera klasę "Wypłata", która jest logicznym miejscem do zaimplementowania nowej funkcjonalności. Możemy wyświetlić nowy diagram klas dla klasy "Wypłata", wybierając ją w drzewie modelu i korzystając z menu kontekstowego, które pojawia się po kliknięciu prawym przyciskiem myszy, aby utworzyć nowy diagram.
![]()
![]()
Wybór diagramu hierarchicznego pozwolił nam uwidocznić wszystkie właściwości klasy "Wypłata", w tym właściwości odziedziczone z klasy "Transakcja". Przed wdrożeniem funkcji opłat, musimy zbadać jedno dodatkowe zagadnienie. Chcemy upewnić się, że aktualny kod zawiera test, który sprawdza, czy kwota wypłaty żądana przez użytkownika nie przekracza aktualnego salda konta Diagram sekwencji UML umożliwi nam śledzenie przebiegu operacji wypłaty. UModel może automatycznie generować diagramy sekwencji na podstawie operacji klas, których kod został odtworzony. Możemy wybrać operację "wykonaj" w naszym diagramie klas i wybrać opcję "Generuj diagram sekwencji" z menu kontekstowego UModel, aby utworzyć potrzebny diagram.
![]()
Okno dialogowe generowania diagramów sekwencji UModel oferuje kilka opcji, które pomogą nam w implementacji nowej funkcji. Wybraliśmy opcję "Automatyczna aktualizacja", ponieważ będziemy chcieli zaktualizować diagram później, po zmodyfikowaniu kodu. Wyświetlanie kodu w oddzielnej warstwie może nam pomóc skupić się na logice działania.
![]()
Rozmiar pasków przewijania wskazuje, że w obecnym oknie widzimy jedynie niewielką część diagramu sekwencji. Możemy zmniejszyć widok, aby dopasować go do okna, ale tekst prawdopodobnie będzie nieczytelny. Zamiast tego, wykorzystajmy elastyczny interfejs użytkownika UModel, aby automatycznie ukryć drzewo diagramów oraz okno właściwości, co pozwoli nam powiększyć okno pomocnicze "Przegląd":
![]()
Możemy przeglądać diagram sekwencji, przesuając czerwony kwadrat w oknie przeglądu. Dzięki temu możemy szybko znaleźć porównanie kwoty wypłaty i salda konta.
![]()
Możemy również zobaczyć komunikaty o błędach, które wyświetlane są, gdy bankomat nie zawiera wystarczającej ilości gotówki lub gdy saldo konta jest zbyt niskie.
![]()
Wracając do diagramu klas "Wycofanie", możemy dodać właściwość "opłata" i ustawić jej wartość domyślną:
![]()
Najpierw zaimplementujemy logikę opłat, pomijając opcję anulowania przez użytkownika. Aktualizacja kodu źródłowego, oparta na naszym modelu, dodaje właściwość opłaty do klasy "Withdrawal". Następnie przejdziemy do naszego ulubionego edytora kodu źródłowego, aby zaimplementować logikę opłat bezpośrednio w pliku "Withdrawal.java". Testowanie naszej ponownie skompilowanej aplikacji pokazuje następujące wyniki:
![]()
Początkowe saldo wynosiło 147 dolarów. Po wypłacie 100 dolarów, nowe saldo wynosi 43 dolary. Opłata jest wyświetlana w nowym komunikacie, a końcowe saldo jest poprawne. Jednak diagram sekwencji w naszym modelu UML jest nieprecyzyjny, ponieważ nie uwzględnia funkcji opłaty. Możemy poprawić diagram sekwencji, aktualizując projekt UML na podstawie zmienionego kodu źródłowego. Okno "Komunikaty UModel" wskazuje, że zmiany w pliku Withdrawal.java spowodowały regenerację diagramu sekwencji. Możemy łatwo nawigować po diagramie, aby znaleźć nasz nowy test dotyczący kwoty wypłaty i sprawdzić, czy opłata musi zostać zwiększona do 4 dolarów.
![]()
Teraz, gdy nasz zmodyfikowany diagram sekwencji graficznie przedstawia zaktualizowane działanie bankomatu, możemy być pewni, że zmęczony kierowca, którego spotkaliśmy w części 3 tej serii, ma wystarczająco dużo gotówki, aby kupić lody! W kolejnej części wykorzystamy kolejną funkcję UModel, aby wygenerować szczegółową dokumentację projektu dla naszej dotychczasowej pracy – to kolejna zaleta utrzymywania synchronizacji naszego modelu UML i kodu źródłowego aplikacji.
Jeśli jesteście gotowi przetestować Altova UModel w swoich istniejących aplikacjach napisanych w Javie, C# lub Visual Basic, kliknij tutaj, aby pobrać bezpłatną, w pełni funkcjonalną wersję próbną na 30 dni.