Chapter 5
This commit is contained in:
@@ -1,6 +1,20 @@
|
|||||||
#set heading(numbering: "1.1")
|
#set heading(numbering: "1.1")
|
||||||
|
|
||||||
= Podsumowanie i kierunki rozwoju <podsumowanie>
|
= Podsumowanie i kierunki rozwoju <podsumowanie>
|
||||||
|
W tym rozdziale opiszę i ocenię zakres wymagań jaki udało się spełnić w ramach opisanej implementacji, a na końcu wymienię propozycje usprawnień implementacji. Propozycje składają się ze zmian zbyt złożonych bym mógł je podjąć przed zakończeniem tej pracy inżynierskiej.
|
||||||
|
|
||||||
== Osiągnięte cele
|
== Osiągnięte cele
|
||||||
== Ocena spełnienia wymagań
|
|
||||||
|
Przygotowana implementacja spełnia wszystkie podstawowe wymagania jakie zostały nakreślone w tej pracy - została stworzona aplikacja mobilna na systemy operacyjne iOS i iPadOS, która, wykorzystując wbudowany framework Multipeer Connectivity, umożliwia współtworzenie notatek wśród użytkowników, którzy znajdują się w zasięgu określonych sieci bezprzewodowych. Istnieje możliwość zapraszania pobliskich użytkowników, dołączania do innych sesji, podstawowej edycja tekstu, trwałego przechowywania własnych notatek w pamięci urządzeniach. Do osiągnięcia tego nie potrzeba centralnego serwera obsługującego ruch klientów, ponieważ klienci między sobą negocjowali nanoszenie zmian. Dzięki braku potrzeby centralnego serwera, nie ma też konieczności, aby urządzenia klienckie miały dostęp do Internetu. Do współpracy wystarczy działający moduł Bluetooth lub Wi-Fi. Synchronizacja znajduje się w założonym limicie czasowym, bez zaobserwowanych większych niż założone opóźnień. Finalnie zostały przeprowadzone testy jednostkowe jak i manualne, które zweryfikowały poprawność implementacji.
|
||||||
|
|
||||||
== Możliwości dalszej rozbudowy
|
== Możliwości dalszej rozbudowy
|
||||||
|
|
||||||
|
O ile przedstawiony program spełnia określone wymagania, tak istnieje duże pole do znacznych optymalizacji skutkujących lepszymi doświadczeniami użytkownika, stabilnością systemu, większą niezależnością od konkretnego systemu operacyjnego.
|
||||||
|
|
||||||
|
Największą zmianą jest przejście z frameworka Multipeer Connectivity na Network. W tym wypadku będzie trzeba zaimplementować własny protokół oparty na TCP, ale taka implementacja będzie mogła być użyta również na innych platformach, nie tylko tych, które udostępnia firma Apple. Otrzymamy dzięki tej zmianie również większą stabilność, ponieważ Network nie wykonuje tak dużo zadań jak Multipeer Connectivity, które ukrywa duże ilości problemów za niewidoczną dla programisty abstrakcją. Do tego Network otrzymuje znacznie częściej aktualizacje oraz jest lepiej zintegrowany z językiem programowania Swift.
|
||||||
|
|
||||||
|
Kolejną dużą zmianą jest zastosowanie innego komponentu do edycji tekstu niż `TextEditor` dostępny w frameworku SwiftUI. Lepszym wyborem byłby `UITextView` dostępny w frameworku UIKit, który daje programiście znacznie większą kontrolę nad zachowaniami - zaznaczaniem, wstawianiem, usuwaniem tekstu. Dzięki temu można osiągnąć znacznie stabilniejsze zachowanie kursora w trakcie równoczesnej edycji tej samej notatki przez wielu użytkowników na raz, które byłoby zbliżone do aktualnie popularnych rozwiązań zcentralizowanych.
|
||||||
|
|
||||||
|
Ostatnią propozycją większej zmiany jest zastosowanie bezkonfliktowych struktur danych (CRDT), które pozwoliłyby na wysyłanie znacznie mniejszej ilości danych między użytkownikami w tej samej sesji. Pozwoliłoby to na znacznie wydajniejszą pod kątem zużycia zasobów komunikację oraz szybszą w przypadku bardzo dużych notatek.
|
||||||
|
|
||||||
|
Mniejszymi elementami możliwymi do rozbudowy jest lepsza obsługa błędów - często się zdarza że klient, który utracił połączenie jest traktowany tak samo jak klient który odrzucił zaproszenie do edycji notatki. Dodatkowo aktualnie użytkownik nie jest w stanie usunąć zaproszonego do edycji użytkownika. Kolejną wartościową funkcjonalnością byłaby możliwość wyświetlania jako klient innych użytkowników notatki. Ostatnią z funkcjonalności, choć niemałą, byłoby dodanie możliwości formatowania tekstu oraz umieszczenia zawartości innej niż tekst.
|
||||||
|
|||||||
LFS
BIN
Binary file not shown.
Reference in New Issue
Block a user